備忘録　ラズパイ5 ROS2　①　ハードの用意とUbuntu Desktop 24.04LTS

　「AGVへの道は遠からじ」で利用するROS2の勉強をしていきます。3年ほど前、ROSの時代、解説記事を読んでも動作がよくわからなかった記憶があります。ラズパイでNodeRED、MTTQとかを動かしていたので、ROS2の解説はすんなり頭に入ってきました。

### 開発環境

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

![IMGP2145.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/8fa73eaa-e320-e9d0-da24-6ea3ca2cd358.png)

![IMGP2147.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/87619fa6-1496-3164-4e6e-c0265b5396c6.png)
　※ M.2 SSD NVMeメモリの接続、動作確認は省略。購入元のPimoroniの解説に従う。PCIeバスに接続。PCI Express 3.0のドライバで動作。

### 混乱している
　ROS2を動かす環境で、検索すると、
 - ラズパイのRaspberryPi OS Desktop 64bit(bookworm)
 - ラズパイにUbuntu Server（Desktop） 24.04LTS(64-bit)
の2通りあるのがわかります。
 2番目のUbuntu Desktopを利用します。

### 最初にSDメモリにRaspberryPi OS Desktop 64bitを入れる

　SDメモリへのインストールは省略します。
　起動します。
 
SDメモリの速度を測る（https://tkyonezu.com/iot/raspberry-pi-5%E3%81%AEusb%E3%83%96%E3%83%BC%E3%83%88/）
```
$ sudo apt install hdparm
$ sudo hdparm -t /dev/mmcblk0p2
```
　87.63MN/sec。
　次に、PCIバス接続のNVMeメモリの速度を測ります。
```
$ sudo hdparm -t /dev/nvme0n1p2
```
　417.64MB/sec。そこそこ速くなりました。
 足回りが速くなり、容量も大きいので、開発環境と実行環境は、このラズパイ1台で済ませようと思っています。

### NVMe 500GBにUbuntu Desktop 24.04LTS(64-bit)をインストールする
```
$ sudo raspi-config
```

　SD bootにして再起動します。
　Accesoriesー＞imagerを起動します。
　CHOOSE STRAGEで、CT500P2SSD8()-5000.1GBを選択、OSは、Ubuntu Desktop 24.04LTS(64-bit)をインストールします。
　nvme bootにして再起動 （SDメモリは抜いておく）します。

　Ubuntu Desktop 24.04LTSが起動します。
 　hostnameはyoshi。
　CTRL-ALT-Tでターミナルを起動します。
```
$ sudo apt install raspi-config
```
　いつものラズパイ設定ユーティリティが使えます。

 　画面のどこかで、マウスの右ボタンをクリックするとメニューが出るので、Powerを選択します。デフォルトの5分からに15分に変更すると、画面がすぐに消えなくなります。


### WIndows10からアクセスできるようにする

```
$ sudo systemctl status ssh
```
　ssh.serviceは動いていないと出たので、起動します。
 
```
$ sudo systemctl start ssh
```
　どうもない？ようなので、インストールします。
  
```
$ sudo apt install openssh-server
```
　インストールが終わったら起動します。
```
$ sudo systemctl start ssh
```

```
$ ip a　（ip addr）
```
で表示アドレスはinet6だけが表示されるときと、inet4も同時に表示されるときがあります。
ラズパイ側の設定は完了しました。
　Windows10側の設定です。コマンドプロンプトを起動し、sshで接続します。

```
C:\Users\yoshi>ssh 240f:6d:2c00:1:2ecf:67ff:fe30:d78f
```
　Windows10からsshで接続しました。


　ラズパイにインストールされているmDNSのavahiは、デフォルトだとinet4だけが有効のようです。inet6でつながるように変更します。

　mDNS 行のエントリを/etc/nsswitch.confの中の1行を次のように変更します。
```
hosts:          files mdns4_minimal [NOTFOUND=return] dns
```
から、
```
hosts:          files mdns_minimal [NOTFOUND=return] dns
```
変更して、実行します。

```
$ sudo service avahi-daemon restart
```

　Windows10から、ssh yoshi　および　ssh yoshi.localでつながりました。

  
### ubuntu24.04にROS2 HumbleではなくJazzy をインストールする

　Jazzyは2024年5月にリリースした？らしいです。

- 1世代前はHumble（Ubuntu 22.04）
- 2世代前はFoxy（Ubuntu 20.04）

　OSのアップデートします。
```
$ sudo apt update
```

### 開発はPythonを使うつもり

```
yoshi@yoshi:~$ python -V
Command 'python' not found, did you mean:
  command 'python3' from deb python3
  command 'python' from deb python-is-python3
```



```
$ sudo apt install python3-pip
```

　仮想Pythonモードros2を用意します。用意しただけで使っていけるかどうかは心配。ラズパイのDebian系は2023年夏から、Pythonは仮想環境を使うことが望ましいということらしいです。でも、ROS2の日本語の記事で仮想環境のPythonを使う記事は1本しか見つかりませんでしたから、誰も使っていないようなので心配です。
 
``` 
yoshi@yoshi:~$ sudo apt install python3.12-venv

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:~$
```

### ROS2 Jazzyのインストール
　installの前にいろいろ実行したかもしれないが何が有効で意味がなかったかがわからないので、ほかの方の記事を参照してください。installは数分かかったが、エラーなく終わりました。
※ ロケールのセットアップをしたが　調べるとLANG=en_US.UTF-8でした。
※ 仮想環境で作業をしていますが、ROS2自体はシステムのPythonを利用するようなので、まったく意味のない。。。

```
(ros2) yoshi@yoshi:~$ sudo apt install -y ros-jazzy-desktop
(ros2) yoshi@yoshi:~$ source /opt/ros/jazzy/setup.bash
```

プログラミング環境には、CもしくはPythonの二通りがあるようです。

:::note info
**＜メモ＞**
**ネットワーク・ドライブのマウント**

画面左のメニューからFilesを選択。
左のメニューの一番下にあるOther Locationsを選択。利用するNASを選びデフォルトで選択されているAnonymousでConnectすると、自動でマウントされる。NASはWindowsのFAT?、MacのAFPが見えていた。


**画面キャプチャ**

キーPSc（PrintScreen）を押す。範囲選択画面が出る。
Pictures/ScreenShotsに保存されている。
:::

　OS、ROS2とも、検索すると古いバージョンの記事が多いです。これから始めるので、今現在、一番新しい環境を利用します。前途多難です。

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