備忘録　ラズパイ5 ROS2　③　Ubuntu Desktop 24.04LTSでROS2環境　Python その１ responder（セットアップ）

　前回、メッセージを可視化するためのツール　rqt_graphとturtlesimをインストールして動かしました。
 

 ### 環境

- Raspberry Pi 5 8GB
- 追加ボード；NVMe Base for Raspberry Pi 5 (NVMe Base by Pimoroni)
- Crucial クルーシャル P2シリーズ 500GB 3D NAND NVMe PCIe M.2 SSD CT500P2SSD8
- 初期；RaspberryPi OS Desktop 64bit (Debian version: 12 (bookworm) Release date: March 15th 2024)
- 現在；Ubuntu Desktop ***24.04LTS***(64-bit)
- ROS2 Humbleではなく***Jazzy***

　Windows10で、検索窓に``cmd``と入れ、コマンドプロンプトを起動します。
　sshでログインします（第１回参照）。必要ならupdateします。

 ```
C:\Users\yoshi>ssh yoshi.local
```

:::note info
**Python仮想環境メモ**
作る。一度だけ
yoshi@yoshi:~$ python3 -m venv ros2
仮想環境に入る。
yoshi@yoshi:~$ source ros2/bin/activate
(ros2) yoshi@yoshi:~$ pip list
Package Version
\------- -------
pip     24.0
(ros2) yoshi@yoshi:~$

　抜ける。
 deactivate 
:::

### Pythonのプログラム responder（セットアップ）
　先頭に、``import rclpy``とか書いて、プログラムを作るのではないらしい。


##### ワークスペース
　最初にワークスペースを作ります。

```
(ros2) yoshi@yoshi:~$ mkdir -p ~/ros2_ws/src
```
##### パッケージ
　ワークスペースに入って、パッケージを作ります。responderという名称にしました。

```
$ source /opt/ros/jazzy/setup.bash
$ cd ros2_ws/src
$ ros2 pkg create responder
```
　ここで、```sudo apt install tree``で、ディレクトリの様子を表示するtreeコマンドをインストールしておきます。


:::note warn
　3種類の引数があって、用途に応じて使い分けをするようです。
$ ros2 pkg create responder
　最小限のファイルが作られる。いろいろと自分で記入をする
 $ ros2 pkg create responder **--build-type ament_python**
 　Pythonで記述するための必要なファイルが作られる。いろいろと自分で記入をする
$ ros2 pkg create responder **--node-name responder --build-type ament_python**
　package.xml、setup.cfg、setup.pyの中身の記述が追加される

:::

　初めてなので、３番目の、いろいろファイルを作ってくれる方法を選びます。
 ```
 ros2 pkg create responder --node-name responder --build-type ament_python
 ```
 　できたディレクトリやファイルをtreeコマンドで表示します。
```
(ros2) yoshi@yoshi:~/ros2_ws/src$ tree
.
└── responder
    ├── package.xml
    ├── resource
    │   └── responder
    ├── responder
    │   ├── __init__.py
    │   └── responde.py
    ├── setup.cfg
    ├── setup.py
    └── test
        ├── test_copyright.py
        ├── test_flake8.py
        └── test_pep257.py

5 directories, 9 files
```
　インストールされたPythonのライブラリを見ます。
```
(ros2) yoshi@yoshi:~/ros2_ws/src$ pip list
Package                              Version
------------------------------------ -------
action-msgs                          2.0.2
action-tutorials-interfaces          0.33.4
action-tutorials-py                  0.33.4
actionlib-msgs                       5.3.5
ament-cmake-test                     2.5.2
ament-copyright                      0.17.1
ament-cppcheck                       0.17.1
ament-cpplint                        0.17.1
ament-flake8                         0.17.1
ament-index-python                   1.8.1
ament-lint                           0.17.1
ament-lint-cmake                     0.17.1
ament-package                        0.16.3
ament-pep257                         0.17.1
ament-uncrustify                     0.17.1
ament-xmllint                        0.17.1
angles                               1.16.0
builtin-interfaces                   2.0.2
composition-interfaces               2.0.2
cv-bridge                            4.1.0
demo-nodes-py                        0.33.4
diagnostic-msgs                      5.3.5
domain-coordinator                   0.12.0
example-interfaces                   0.12.0
examples-rclpy-executors             0.19.4
examples-rclpy-minimal-action-client 0.19.4
examples-rclpy-minimal-action-server 0.19.4
examples-rclpy-minimal-client        0.19.4
examples-rclpy-minimal-publisher     0.19.4
examples-rclpy-minimal-service       0.19.4
examples-rclpy-minimal-subscriber    0.19.4
geometry-msgs                        5.3.5
image-geometry                       4.1.0
interactive-markers                  2.5.4
laser-geometry                       2.7.0
launch                               3.4.2
launch-ros                           0.26.5
launch-testing                       3.4.2
launch-testing-ros                   0.26.5
launch-xml                           3.4.2
launch-yaml                          3.4.2
lifecycle-msgs                       2.0.2
logging-demo                         0.33.4
map-msgs                             2.4.1
message-filters                      4.11.1
nav-msgs                             5.3.5
osrf-pycommon                        2.1.4
pcl-msgs                             1.0.0
pendulum-msgs                        0.33.4
pip                                  24.0
python-qt-binding                    2.2.1
qt-dotgraph                          2.7.4
qt-gui                               2.7.4
qt-gui-cpp                           2.7.4
qt-gui-py-common                     2.7.4
quality-of-service-demo-py           0.33.4
rcl-interfaces                       2.0.2
rclpy                                7.1.1
rcutils                              6.7.1
resource-retriever                   3.4.3
rmw-dds-common                       3.1.0
ros2action                           0.32.1
ros2bag                              0.26.4
ros2bag-mcap-cli                     0.26.4
ros2bag-sqlite3-cli                  0.26.4
ros2cli                              0.32.1
ros2component                        0.32.1
ros2doctor                           0.32.1
ros2interface                        0.32.1
ros2launch                           0.26.5
ros2lifecycle                        0.32.1
ros2multicast                        0.32.1
ros2node                             0.32.1
ros2param                            0.32.1
ros2pkg                              0.32.1
ros2run                              0.32.1
ros2service                          0.32.1
ros2topic                            0.32.1
rosbag2-interfaces                   0.26.4
rosbag2-py                           0.26.4
rosgraph-msgs                        2.0.2
rosidl-adapter                       4.6.3
rosidl-cli                           4.6.3
rosidl-cmake                         4.6.3
rosidl-generator-c                   4.6.3
rosidl-generator-cpp                 4.6.3
rosidl-generator-py                  0.22.0
rosidl-generator-type-description    4.6.3
rosidl-parser                        4.6.3
rosidl-pycommon                      4.6.3
rosidl-runtime-py                    0.13.1
rosidl-typesupport-c                 3.2.2
rosidl-typesupport-cpp               3.2.2
rosidl-typesupport-fastrtps-c        3.6.0
rosidl-typesupport-fastrtps-cpp      3.6.0
rosidl-typesupport-introspection-c   4.6.3
rosidl-typesupport-introspection-cpp 4.6.3
rpyutils                             0.4.1
rqt-action                           2.2.0
rqt-bag                              1.5.3
rqt-bag-plugins                      1.5.3
rqt-console                          2.2.1
rqt-graph                            1.5.4
rqt-gui                              1.6.0
rqt-gui-py                           1.6.0
rqt-msg                              1.5.1
rqt-plot                             1.4.0
rqt-publisher                        1.7.2
rqt-py-common                        1.6.0
rqt-py-console                       1.2.2
rqt-reconfigure                      1.6.2
rqt-service-caller                   1.2.1
rqt-shell                            1.2.2
rqt-srv                              1.2.2
rqt-topic                            1.7.2
sensor-msgs                          5.3.5
sensor-msgs-py                       5.3.5
service-msgs                         2.0.2
shape-msgs                           5.3.5
sros2                                0.13.2
statistics-msgs                      2.0.2
std-msgs                             5.3.5
std-srvs                             5.3.5
stereo-msgs                          5.3.5
teleop-twist-keyboard                2.4.0
tf2-geometry-msgs                    0.36.4
tf2-kdl                              0.36.4
tf2-msgs                             0.36.4
tf2-py                               0.36.4
tf2-ros-py                           0.36.4
tf2-sensor-msgs                      0.36.4
tf2-tools                            0.36.4
topic-monitor                        0.33.4
trajectory-msgs                      5.3.5
turtlesim                            1.8.3
type-description-interfaces          2.0.2
unique-identifier-msgs               2.5.0
visualization-msgs                   5.3.5
```


　Pythonのバージョンです。
 ```
 (ros2) yoshi@yoshi:~/ros2_ws/src$ python -V
Python 3.12.3
 ```
 
:::note info
Filesで/optを見たい
$ sudo nautilus /opt
:::

-----------------
<h2>備忘録　ラズパイ5 ROS2</h2>

[①　ハードの用意とUbuntu Desktop 24.04LTS](https://qiita.com/jamjam/items/9ad621bda6ab2e1d325b)

[②　Ubuntu Desktop 24.04LTSでROS2環境　rqt_graphとturtlesim](https://qiita.com/jamjam/items/b7bed8ec9ff68426ac8d)

[③　Ubuntu Desktop 24.04LTSでROS2環境　Python その１ responder（セットアップ）](https://qiita.com/jamjam/items/d124c662813085bc69e3)

[④　Ubuntu Desktop 24.04LTSでROS2環境　Pythonその２responder（コーディングと実行；失敗）](https://qiita.com/jamjam/items/d488e2e4fa88d9882626)

[⑤　Ubuntu Desktop 24.04LTSでROS2環境　C++ その1 セットアップ main.c](https://qiita.com/jamjam/items/4bba331c08805ccda0a8)

[⑥　Ubuntu Desktop 24.04LTSでROS2環境　C++ その2 セットアップ pub.cpp rqt_graph](https://qiita.com/jamjam/items/51eeb26400517883aa59)

--------------

https://qiita.com/jamjam/items/692568361dde688fad16