Raspberry PiにROS Kineticを入れてみた

その昔、学生時代に授業でROSを触っていました。当時は今ほど情報量がなくてドキュメントを見ても何をやっているのかよく分からなくて挫折してました。

ただ、最近Twitterを眺めているとROSの知見が増えてきて、今なら挫折をせずにやれるのではと思い、再入門をすることにしました。

ひとまずROSのチュートリアルを見ながら昔の感覚を思い出しつつUbuntu上でTurtlesimを動かすところまではやりきれるようになりました。(↓こんなの)

f:id:KMiura:20210907005037p:plain

でさらにROSを一からちゃんと勉強しようと思いROSの本を探してみたら、数こそ少ないですが昔よりはある程度の選択肢がありました。

その中でも使用言語がPythonで情報量が多そうな以下の本を購入しました。

で読み進めていくうちに自分でもRaspberry Piを使ってロボットを作ってみたいと思うようになりました。

昔作ってからまともに動かせていないロボットカーがあったので、そいつをROS対応にするのを目標にしようと思いました。

最近はaliexpressとかに「ROS対応」を謳ったロボットキットを見かけるようになりましたが、Raspberry Piを使っていると多分自分でROSのセットアップをさせると思います(もしかしてイメージが配布されている?)。

しかもそういうロボットにはそこそこのセンサーが入ってたり、筐体もしっかりしているので、値段がそこそこします。

それなら自分で作るのが安上がりです。

というわけでRaspberry PiにROS Kineticをセットアップしていきます。

今回はUbuntuではなく、Raspbian Busterで試してみます。

Raspbianでやったほうが後々ハードウェアの依存関係に悩まされずに済みそうという安易な考えですw。

結論としては、以下のROSのドキュメントにやり方が紹介されているのでそのとおりにやるだけです。

http://wiki.ros.org/ROSberryPi/Installing%20ROS%20Kinetic%20on%20the%20Raspberry%20Pi

基本的にはROSのソースファイルを落としてそこから依存パッケージをインストールするだけですが、このドキュメントはOSのバージョンによって手順が分けてあり、それがわかりやすくみえてちょいちょいややこしいところがあると感じました。

特に一番詰まったのはワークスペースのビルドに失敗するところです。

何時間も悩みましたが作業ディレクトリの違いという超初歩的ミスでしたw。

Linuxになれている今でもこんなミスをするわけで昔はもっと苦戦したでしょうね。そりゃ挫折するわけだ。

というわけでこんな初歩的ミスをなくすためにインストール用のシェルスクリプトを用意しました。

スクリプトを実行するとRaspbian BusterでROS Kineticをセットアップしてワークスペースも作成されるようになります。

PCのUbuntuでやるときよりもかなりビルドに時間が取られました。なので途中で失敗したときの手戻りは辛かったです…

念の為、Raspberry Piを再起動させて以下のコマンドを実行します。

このコマンドは簡単にいうとROSの基本的なプログラムを起動するもので、ROSのシステムを動かすときは必ず実行します。

roscore

実行後、以下のようにROSのバージョンやIPアドレスが表示されればROSは正常に起動しています。

started roslaunch server http://raspberrypi:44065/
ros_comm version 1.12.17


SUMMARY
========

PARAMETERS
 * /rosdistro: kinetic
 * /rosversion: 1.12.17

NODES

auto-starting new master
process[master]: started with pid [30552]
ROS_MASTER_URI=http://raspberrypi:11311/

setting /run_id to 35a98658-0f36-11ec-81c5-dca63297671e
process[rosout-1]: started with pid [30565]
started core service [/rosout]

これでロボット作りの第一歩が踏み出せたので、今度はセンサーの値を読み取ったりモーターをぶん回していこうと思います。