備忘録　ラズパイ5 ROS2　④　Ubuntu Desktop 24.04LTSでROS2環境　Pythonその２responder（コーディングと実行；失敗）

　前回、Pythonの仮想環境の下で、ros2のパッケージresponderのセットアップをしました。
 　プログラムを書いていきます。
 

 ### 環境

- 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（コーディング）
　https://zenn.dev/mol0921/articles/f8b789d90abb35を参照し、プログラムを転載しています。
 
```
(ros2) yoshi@yoshi:~/ros2_ws/src/responder/responder$ ls
__init__.py  responder.py
```
　の内容は、
 ```
 def main():
   print('Hi from responder.')

if __name__ == '__main__':
   main()
```
これをエディタnanoを使って変更します。
```
(ros2) yoshi@yoshi:~/ros2_ws/src/responder/responder$ nano responder.py
```
```
import rclpy  # ROS2のPythonモジュール
from rclpy.node import Node
from std_msgs.msg import String # トピック通信に使うStringメッセージ型をインポート

class Responder(Node):
    def __init__(self):
        super().__init__('responder') # ROS1でいうrospy.init_node('node_name')
        self.sub = self.create_subscription(String, '/base_msg', self.msg_callback)# subscriberの宣言
        self.pub = self.create_publisher(String,'/ex_msg', 10)# publisherの宣言

    def msg_callback(self, msg):
        print(msg) # Subscribeしたメッセージをprint
	msg.data = msg.data + "!" # メッセージに「！」を付け加える処理
        self.pub.publish(msg) # 処理したメッセージをPublish

def main():
    rclpy.init()
    node = Responder()
    rclpy.spin(node)
    node.destroy_node()
    rclpy.shutdown()

if __name__ == '__main__':
    main()
```

　ビルド・ツールcolconをインストールします。
 ```
 (ros2) yoshi@yoshi:~/ros2_ws$ sudo apt install colcon
 ```
　ビルドします。
 ```
(ros2) yoshi@yoshi:~/ros2_ws$ colcon build --symlink-install --packages-select responder
Starting >>> responder
--- stderr: responder
/usr/lib/python3/dist-packages/setuptools/command/develop.py:40: EasyInstallDeprecationWarning: easy_install command is deprecated.
!!

        ********************************************************************************
        Please avoid running ``setup.py`` and ``easy_install``.
        Instead, use pypa/build, pypa/installer or other
        standards-based tools.

        See https://github.com/pypa/setuptools/issues/917 for details.
        ********************************************************************************

!!
  easy_install.initialize_options(self)
---
Finished <<< responder [1.45s]

Summary: 1 package finished [1.59s]
  1 package had stderr output: responder
(ros2) yoshi@yoshi:~/ros2_ws$
```
　エラーになりました。
 　もしかしたら、仮想環境の影響かと思い、いったん抜けます。
  ```
  (ros2) yoshi@yoshi:~/ros2_ws$ deactivate
yoshi@yoshi:~/ros2_ws$
```
　ビルドします。
　同じエラーが出ます。
 　どうも解決していないようです。

　　[easy_install を pip install に置き換える](https://github.com/pypa/setuptools/issues/917)

また、仮想環境Pythonに関しても、
  ros2はシステムのpythonを使う。
  colcon もシステムのpythonを使う？
  　ビルドしても仮想環境のpythonでは実行ユニットが見えないのではないかと。

 　見つかった記事；[Python 仮想環境で ROS2 ノードを実行する](https://medium.com/ros2-tips-and-tricks/running-ros2-nodes-in-a-python-virtual-environment-b31c1b863cdb)

　Ptyonの独自進展とROS2がかみ合っていない？
　C++言語を使うことにします。

-----------------
<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