OSOYOO PI CARキットを組み立てて、一通り遊んでみました。
結構楽しむことができましたし、pythonのお勉強もできました。
ですが、やはり人が用意したストーリーやコードをベースにいじるだけでは、少々物足りないので、以前から興味のあった、ROS2(Robot OS 2)でシステムを組んでみようと思い始めました。
今現在自分がOSOYOO PI CARに搭載しているコントローラは、Raspberry PI MODEL 3B+です。
スペックが古くて、Raspberry PI MODEL 3B+搭載は、色々とハマりそうな予感がしますが、ROS2の味見やノウハウを得るにはよさそうな気がします。
ROS2は、Roboto OSと名がついていますが、実際にはUbuntu上に搭載されたミドルウェアで、ノードコミュニケーションシステムが中核となっているシステムです。
カメラ、ナビゲーション(障害検知や自己位置推定など)、ハードウェアドライバといった機能はノードとして設計し、外部IFはメッセージでやり取りを行うことが前提です。
ノードはすでに先人により設計済みのリソースもあり利用可能なものもあります。
うまく使えば、自律制御も可能です。
■ 動作環境
〇 ハードウェア環境
OSOYOO PI CARにRaspberry PI 以外は、キット品ですので、今のところ触ろうとは思っていません。
ROS2で基本動作に必要な機能を準備できたところで、順次、機能を拡張していこうと思います。
コントローラには、Raspberry PI 3 MODEL 3B+を使用します。
〇 ソフトウェア環境
ソフトウェアは下記のように用意します。
部位 | バージョン名 | 目的 |
linux ディストリビューション | Ubuntu 22.04.4 LTS Server | ROS2の基底OSとして使用する。 RasbianでもROS2の導入実行も可能らしいですが、相性としてはUbuntuの方がよさそうに見えましたので、今回は左記バージョンを選定しました。 |
ROS2 | humble | ROS2プラットフォーム。 それ以外の実行、ビルドに必要なツール類はROS2サイトを頼りにインストール。 |
■ ROS2システム(1ST STEP)
目指すROS2システムですが、まずは、ethernet経由でカメラ画像を見ながら車を手動操作可能なシステムを目指そうと思います。右も左もわからないので、まずは基本的なことが達成できるところを目指そうと思います。ROS2で利用可能なノードはできるだけ使おうと思います。
ROS2で利用可能なノードを調べていないのですが、まずは、下記のような感じでノードを作成してみようと思います。
■ ROS2 humbleの導入
Raspberry PI Mode 3B+であるためにROS2のインストールにハマり、理由がわからず何度か入れなおしました。ROS2自体のインストールにハマったというよりは、ROS2実行に必要なRaspberry PI Model 3B+の設定が足りていないためでした。
想像ですが、Raspberry PI Mode 4B+等でも、発生頻度が少ない(搭載システムに依存)だけでちゃんと設定しないとある日突然とハマるような障害が発生するように思います。
なお、ROS2のインストール自体は、サイトの手順通りで問題ありませんでした。
OS導入時のチェックポイント
OS導入時に確認しておかないといけないポイントは、スワップ設定です。「Ubuntu 22.04.4 LTS Server」はデフォルト状態ではスワップは設定されていません。
ROS2導入前に設定しておくと、動きが安定すると思います。
ROS2のビルド環境は並列にビルドを行うので、結構なメモリを消費します。
ROS2のビルドでメモリ不足が発生するとストールしてしまい、電源を切るしかなくなります。
なので、OSインストール後、ネットワーク、XServerの設定とともに、以下の手順でスワップ設定しておく方が無難だと思います。
1. スワップ設定確認
スワップ設定を確認し、何も表示されないことを確認します。
% sudo swapon –show
もし、下記のような表示がされた場合は、2以降の設定は不要かと思います。
NAME TYPE SIZE USED PRIO
/swapfile file 4G 44.8M -2
2. スワップ領域制作
以下のようにスワップ領域に割り当てりファイルを作成します。
% sudo fallocate -l 4G /swapfile
% sudo chmod 600 /swapfile
% sudo mkswap /swapfile
% swapon /swapfile
% sudo swapon –show
NAME TYPE SIZE USED PRIO
/swapfile file 4G 0B -2
3. スワップ領域の恒久化
下記の行を/etc/fstabに追記後、リブートします。
/swapfile none swap sw 0 0
ROS2 humbleインストール抜粋
こちらは、ROS2 humbleのインストール手順に従って導入を行うだけです。
ブラウザより、「install ROS2 humble」検索し、下記ページへジャンプします。
Installation – ROS2 Documentation:Humble documentation
ジャンプ先に下記のように表示されますので、矢印で示したリンクをクリックします。
リンク先には、ROS2 humbleのインストール手順が記載されていますので、その通りにインストールすれば導入はできるはずです。
最初自分は、色々な方が紹介されている方法でインストールしましたが、結構はまりました。
インストール手順は、本家をお勧めします。
■ 次回
次回は、ROS2を勉強しながら、駆動系のノードを作成していこうと思います。
また、よろしければ見ていただけると嬉しいです。