おおたfabさんでは、「素人でもロボットをつくりたい」という勉強会を定期的に行っています。前回はルンバのセンサーデータをArduinoで読み取ることを試しました。少し時間が空きましたが、マイコンをArduinoからRaspberry Pi 4に変更して、少し高度なことができるようにROS(Robot Operating System)でルンバを動かしてみます。
ROSをつかってルンバを動かすという記事はインターネットを検索すればいろいろでてきます。今回はdemura.netさんの記事を参考にして進めてみます。
Raspberry Pi 4にUbuntu 18.04 LTSをインストールする
今回はRaspberry Pi 4(4GB)を使用します。ROS Melodicの動作OSとしてはUbuntu 18.04 LTSが必要になります。しかし、Raspberry Pi 4ではUbuntu 18.04 LTSはサーバー版しかサポートされておらず、後からデスクトップ環境を追加する必要があります。この作業はdemura.netさんの記事を参考にしました。
ROS Melodicをインストールする
Ubuntu18.04のデスクトップ環境にROS Melodicをインストールします。こちらもdemura.netさんの記事を参考にしました。
- Raspberry Pi4 (8GB RAM):ROS Melodicのインストール (demura.net)
ただしメモリが4GBしかありませんので、少し方法を変えています。また、おおたfabの勉強会に参加されているかたのRaspberry Pi 4にも同じようにインストールする必要があるので、Jetson Japan User Groupさんの書籍「Jetson Nano超入門」で使用されているインストールのためのスクリプトを参考にしてほぼ自動でインストールされるようにしました。このスクリプトはGitHub.comに置きました。
この状態でROSが動作するようになり、サンプルプログラムであるturtlesimが動くことを確認しました。
Gazeboシミュレータをインストールする
GazeboシミュレータをインストールしてRaspberry Pi 4の中でルンバを動かしてみます。こちらもdemura.netさんも記事を参考にしました。
- HARD2021: Gazeboシミュレータでルンバを動かそう! (demura.net)
こちらも自動でインストールするスクリプトを作成しました。
実際に動かしてみると、やはりRaspberry Pi 4では重いですが、なんとか動きます。
ルンバをRaspberry Pi 4に接続すればこのシミュレータと同じように動くはずです。
ルンバの実機を動かしてみる
いよいよRaspberry Pi 4にルンバを接続して動かしてみます。こちらもdemura.netさんも記事を参考にしましたが、前提がノートPCとなっていますので、Raspberry Pi 4用に少し手順を変えています。
- HARD2021: リアルRoombaをノートPCで動かそう!(第2回補講) (demura.net)
今回の構成図は以下のようになります。
Raspberry Pi 4のUSBコネクタにUSBシリアル変換アダプターを接続し、ルンバの外部ポートに接続しました。
電源はモバイルバッテリーを使用してRaspberry Pi 4に供給します。
この状態でPCのsshターミナルからRaspberry Pi 4にログインし、roslaunch ca_driverを実行したところopenエラーになってしまいました。どうやらca_driverでは/dev/roombaというデバイス名を使っているようです。/dev/USBtty0は認識しているので、シンボリックリンクを張って再実行したところ、ルンバからピポッという音がして、正常に接続できました。
Ready状態になっていますし、バッテリーの残量も表示されています。正常にROSとルンバが接続されました。
この状態で、turtlesimやGazeboシミュレータで行ったようにキー入力でロボットを制御するプログラムを動かしたところ、実機のルンバを動かすことができました。
ここまでの手順をGitHub.comにまとめておきました。
次のステップへ
これでルンバがROS制御のロボットになりました。今後はROSプログラミングを試していくことになります。事例をみながらROSとロボット制御についての理解を深めたいです。