Raspberry Pi ZeroでROS2をうごかす

次のステップに

マジョカアイリスのLCDRaspberry 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からはMacWindowsマイコンとそのターゲットを広げていることもあり、Raspberry Pi Zeroでもいけるんじゃないかという期待もあり。

Raspberry Pi ZeroでのROS2構築

とはいえ、1から環境を構築するのは大変だと思って少し検索してみたところ、既にRaspberry Pi Zero向けのクロスコンパイル環境をdockerで構築してる人を発見。

github.com

これは、GCtronicというアメリカのメカトロ系の会社が開発してる、e-puck/e-puck2というローバーロボットの拡張キットでROS2対応する際の副産物の模様。

今回はこれを使わせてもらうことにした。

ロスコンパイルの大まかな手順

ロスコンパイルの大まかな手順は以下。

  1. Raspberry Pi Zeroに必要なパッケージを導入

  2. docker環境の構築  gitにdockerを構築するためのDockerfileとスクリプトがあるので、cloneして実行する。Macにインストール済のDockerがあったのでそれを使って構築。

  3. コンパイルに必要なRaspberry Pi ZeroのファイルをDocker上にもってくる  rsycとsshfsの2つの方法が書いてあるが、最初sshfsを試したところpermissionエラーでうまくいかなかったので、rsycを使用。

  4. ロスコンパイルの実行  cycloneDDSのコンパイル(というかリンク)でエラーになったので、いったんcycloneDDSを除外。fastddsは問題なくコンパイルできたので、まあいいか。  あと、Foxy向けにコンパイルすると実行時にエラーになったので、Dashingにすることで無事動作。Rasbperry Pi OS Liteはubuntuでいえば18.04なのでその関係か???

  5. コンパイルしたものをscpでRaspberry Pi Zeroにコピー

ちなみに、コンパイル時間は2013MIDのMacbook Airで2時間くらい。

この後、Jetson Nano上にインストールしているDashing環境でdemo_node_cppのtalkerを動作させて、Raspberry Pi Zero上でros2 topic listros2 topic echoで動作を確認。

いろいろはまることもあったので、詳細は後日Qiitaでまとめよう。

qiita.com