Raspberry Pi ZeroでROS2をうごかす
次のステップに
マジョカアイリスのLCDをRaspberry Pi Zeroから使うことができたので、次のステップはRaspberry Pi ZeroでROS2を動かすことにチャレンジ。
Raspberry Pi 3や4は、64bitのCPUを積んでいるので、aptでバイナリインストールができるのだけど、Raspberry Pi Zeroは旧式の32bit CPUのためその手が使えない。 普通は面倒なのとCPUのパフォーマンスの関係で、Raspberry Pi 4を使うのだけど、今回はなるべく手ごろな大きさ、お値段で実現したいこともあり、Raspberry Pi Zero上にROS2をソースからコンパイルして導入しようと思う。
ROS2からはMacやWindows、マイコンとそのターゲットを広げていることもあり、Raspberry Pi Zeroでもいけるんじゃないかという期待もあり。
Raspberry Pi ZeroでのROS2構築
とはいえ、1から環境を構築するのは大変だと思って少し検索してみたところ、既にRaspberry Pi Zero向けのクロスコンパイル環境をdockerで構築してる人を発見。
これは、GCtronicというアメリカのメカトロ系の会社が開発してる、e-puck/e-puck2というローバーロボットの拡張キットでROS2対応する際の副産物の模様。
今回はこれを使わせてもらうことにした。
クロスコンパイルの大まかな手順
クロスコンパイルの大まかな手順は以下。
Raspberry Pi Zeroに必要なパッケージを導入
docker環境の構築 gitにdockerを構築するためのDockerfileとスクリプトがあるので、cloneして実行する。Macにインストール済のDockerがあったのでそれを使って構築。
コンパイルに必要なRaspberry Pi ZeroのファイルをDocker上にもってくる rsycとsshfsの2つの方法が書いてあるが、最初sshfsを試したところpermissionエラーでうまくいかなかったので、rsycを使用。
クロスコンパイルの実行 cycloneDDSのコンパイル(というかリンク)でエラーになったので、いったんcycloneDDSを除外。fastddsは問題なくコンパイルできたので、まあいいか。 あと、Foxy向けにコンパイルすると実行時にエラーになったので、Dashingにすることで無事動作。Rasbperry Pi OS Liteはubuntuでいえば18.04なのでその関係か???
コンパイルしたものをscpでRaspberry Pi Zeroにコピー
ちなみに、コンパイル時間は2013MIDのMacbook Airで2時間くらい。
この後、Jetson Nano上にインストールしているDashing環境でdemo_node_cppのtalkerを動作させて、Raspberry Pi Zero上でros2 topic list
とros2 topic echo
で動作を確認。
いろいろはまることもあったので、詳細は後日Qiitaでまとめよう。