1週間前にZennで本を公開しました。タイトルは「RaspberryPi OSではじめるROS2」です。
(内容としてはRaspberryPi OSでROS2を動かすというかなりニッチなもので、「○○ではじめる」とはあるまじき内容ですが、) 基本コンテンツは無料なのでぜひ読んでみてください👇
本にしたきっかけ
もともと、ROS2をRaspbianで動かすパッケージ「rpi-bullseye-ros2」を作成しており、これをメンテナンスをしていました。
このパッケージはRaspberryPi4でRviz等重いパッケージ軽量な環境で動かして、快適に開発を進めてもらうことを目的としています。
このパッケージであれば、RaspberryPi OS上でRviz2を含めたROS2を動かせます。
RaspberryPi4 + Ubuntu22では一応動きますが、Rviz2が6fps程度しか表示されません。 (元ツイ)
一方、RaspberryPi4 + Raspbianでは非常に軽快です。30fps出せます。 (元ツイ)
せっかく軽量なパッケージを作成できたので、この使い方やノウハウを一つのまとめた作品にしたいなと思い、本にしました。
いわゆるROSの本のようなシステムの統合や高度なアルゴリズムを試すなどの章はありませんが、よく使われるセンサについては一通り使えます。
ちなみに、明らかにRaspberryPiでは処理できないであろうVelodyneも取り扱っています🙃
見てほしい章
特にここだけは見てほしい!という章が二つあります。
1:picamera2
RaspberryPiにはCSI経由で接続できるpicameraがあります。
picameraはUSB経由のウェブカメラと異なりラズパイ内のVideoCoreでエンコード作業などを行うため、CPUへの負荷が非常に軽いです。
私のパッケージでは、このpicameraの映像をROS2に流すことができ、Webカメラからpicameraへの乗り換えも楽にできます。
ベースはlibcamera-appsのデータをOpenCV型に変換するlccvパッケージを流用しています。
OpenCVに逃げているところはあるので、もっと高速化できるとは思います…
2:クロスビルド環境の構築
実は、この本ではRaspi+ROS2の動かし方でなく、クロスビルドについても書いています。
RaspberryPi上でリリースビルドを行うと複数パッケージをビルドするだけでも10分以上かかることがあるので、デスクトップPCを持っているのであれば使用するとその時間を短縮できます。
CPU | 環境 | ベースOS | 時間 (s) | Raspi-nativeを1とした倍率 |
---|---|---|---|---|
i9 12900KF | native | Ubuntu | 12.3 | 18.9 |
i9 12900KF | arm64-qemu | Debian | 49.9 | 4.67 |
RaspberryPi 4B | native | Raspbian | 233 | 1 |
上の比較表では、同じパッケージをビルドするためにかかる時間を比較しています。
i9環境上では、qemuによってネイティブの1/4の速度になっていますが、もともとの速度がRaspi4の19倍あるため、4.5倍の速度でクロスビルド可能となっています。
リポジトリ内では、どのようにRaspbian向けの環境をビルドしているかを確認することができます。もしかしたら、本よりもリポジトリの方が有益かも…🙃
意外と売れた…?
この本には¥200の値段をつけています。
もともとRaspberryPi BullseyeにはlibrealsenseやOpenVINOなどのパッケージがないので、これを私が直ビルドしてdpkg化させてaptでインストールできるようにしています。
保存先には、wasabiクラウドというサービスを使っています。
このレシピはせめてパッケージ管理代を払ってから…!ということで投げ銭枠で設けました。
あんまり親切な内容ではないですが、パッケージ作成に使用したオプションやパッチなどを公開しています。
ちなみに¥200は、Zennで設定できる本の最低価格です。
売り出したところ、この記事を書いている時点で20冊分購入されており、結構驚きました。(そして少し申し訳ない…)
32bit版やROS2の直ビルドに関する資料が足りていないかもと思ったので、今後追加したいと思います。
本を作成する上で感じたこと
これまで、ブログ上で明らかに説明不足な文章を垂れ流していましたが、この本では説明を理解してもらえるようにできる限り事前知識の説明も心がけました。
校正や校閲はないですが、何日か寝かせたら「意外と全然かけてない…」が発生して修正…のループがしばらく続いており、 ダラダラ書いているうちに半年近く経過しそうになっていました。
そこで、2月になって大急ぎで書き上げました。
まだ説明不足感は否めないですが、読者の視点に立って順序よく分かりやすい説明ができるようになりたいと思いました。
反響もかなりあったので、今後は作成した資料をもとにZennで本を作成していこうと思います。