ROS2にHumbleが追加されて2ヶ月…
Raspbian + ROS2 に新たなラインナップ「Humble」を追加しました。こちらは、32bit・64bit両対応となっています。
Ubuntuがまだ重く、Raspbianでしか動かない専用バイナリが多く配布されていたbuster世代と比べると、Ubuntuも軽快に動くようになり、専用バイナリすら配布されていないBullseyeでROS2をあえて動かすメリットはあまりないです。
しかしながら、GUIが軽快に動くことを考えるとRaspbianも使えなくはない?と考えています。
例えば最近日本に上陸したRaspberry Pi Zero 2 W。このボードでしっかりとROS2が動きます。
前回の記事↓
レスポンスの早いRaspbian OSと高機能なC++ APIが揃ったROSライブラリを組み合わせれば、構成機能の選択肢が増えていいのかなーと思ったりしています。
ちなみに、micro-rosではRaspbianがサポートされているのにRaspbianではROS2をサポートしていません…
インストール方法
以下のコマンドは、次の環境を想定しています。
- OS : Raspberry Pi Bullseye 64bit
- 状態 : ほぼ初期状態 (wgetすら通らなかった気がします)
curl -O https://raw.githubusercontent.com/Ar-Ray-code/rpi-bullseye-ros2/main/install.bash bash install humble aarch64 0.1.0 /opt/ros # > パスワードを入力
※デフォルトのオプションでは、32bit版humbleをインストールするようになっているので注意です。
インストール後は、自分のワークスペースを作成してパッケージをビルドします。
joyパッケージやcv_bridgeなどはros2.repos
に入っていない関係上、ビルドしていないため、その都度GitHubからダウンロードしてビルドする必要があります。
ビルド方法
残念ながら、私の力では最新のバージョンをインストールすることはできません。そもそも安定したバージョンを求めるならば、Ubuntuの方をインストールしてaptで入手したほうが効率も良いでしょう。
それでも、最新のROS2を入手したければ自力ビルドをします。
リポジトリにはbuild.bash
なるものがありますが、何故かHumbleは自動で依存関係順にビルドしてくれなかったので使えません…
colconコマンドオプションの --continue-on-error
(エラーになっても可能なパッケージのビルドは続行)や --packages-skip-build-finished
(ビルド済みとみなせるパッケージのビルド確認をスキップ) --packages-skip-up-to
(ビルド対象から除外)を活用して効率よくビルドしていきます。
ビルド順番や除外パッケージなどの詳細はBuild-memo.mdを参照してください。
除外対象パッケージ
以下は、ビルドが重すぎたり依存関係を解決できなかったがゆえに除外せざるを得なかったパッケージです。
いずれもRaspberry Piで動かすにはリソース不足になるパッケージであるため、ほとんど無視して大丈夫だと思います。
また、rqt系はインストールは通るものの、Qt関連のリンクエラーで動きません。
- rviz_ogre_vendor
- rviz_rendering
- rviz_common
- rviz_rendering_tests
- rviz_visual_testing_framework
- rviz2
- rosbag2_transpor
- rosbag2_transport
- rosbag2_py
- ros2bag
- rqt_bag
32bit版の注意
特に理由がなければ32bit版をビルドする意味もないのですが、32bit版では atomic
のリンクエラーが起こります。
該当パッケージの修正済みCMakeListsのURLを載せます。
サポート外のプラットフォームにインストールさせる作業は、そのパッケージの依存関係などを詳しく知るきっかけになったり、デバッグ力を向上すると思います。
ただし下手すると1週間・1ヶ月と余暇を潰す可能性があるので、趣味の場合は特に要注意ですね…