mayumi
「raspberrypiからルンバを操作する(1)」の続きです。前回までで、Raspberry piにROSをインストールして起動するところまでできました。
今日はraspberry piからルンバを動かすところまでをやっていきたいと思います。
今回は以下のエントリーを参考にさせていただきながらセットアップしてみました。
ルンバをRaspberry Piを使ってROSでコントロールできるように改造してみた(半田付け無しでOK)
2.raspberry piからルンバを操作
2.1. ルンバを操作するROSパッケージのセットアップ
raspberry piにルンバを操作するROSパッケージ(create_autonomy)をインストールしていきます。Read meの通りに行いました。
2.1.1 ビルドシステムのインストール
$ sudo apt-get install python-rosdep python-catkin-tools
2.1.2. コンパイル
ワークスペースの作成
$ cd ~ $ mkdir -p create_ws/src $ cd create_ws $ catkin init
リポジトリのクローン
$ cd ~/create_ws/src $ git clone https://github.com/AutonomyLab/create_autonomy.git
インストール
$ cd ~/create_ws $ rosdep update $ rosdep install --from-paths src -i
ビルド
$ cd ~/create_ws $ catkin build
USB Permissions
$ sudo usermod -a -G dialout $USER
ログインしなおすと設定した権限が有効になります。
2.2. ルンバとraspberry piの接続
ルンバとraspberry piはシリアルインタフェースを使用して通信します。接続にはシリアルUSB変換アダプタを使用しました。
ルンバ側にはルンバオープンインタフェースという接続口があるのでそこと、シリアルUSB変換アダプタ経由でraspberry piに接続をします。
ルンバのインターフェース資料を参考に、GND、RXD、TXDを接続します。
必ず、部品をつなぐときは電源が入っていない状態で行います。この時点では発生しませんでしたが、途中電源入れっぱなしの状態でつないでしまい、部品から煙があがりました。煙の出た部品は壊れて動かなくなります。
iRobot® Roomba 500 Open Interface (OI) Specification
ルンバと変換アダプタを正しくつないだら、変換アダプタをraspberry piにもつなぎます。
2.2. 動かしてみる!
raspberry piにログインしてルンバを動かしてみます。複数ターミナルでの操作を行うのでbyobuを使います。
2.2.1. ルンバの電源をいれる
Cleanボタンを押して、ルンバの電源を入れます。
2.2.2. ROSの起動
$ byobu $ cd create_ws $ source ~/create_ws/devel/setup.bash $ roslaunch ca_driver create_2.launch
正常につながれば、電子音「プッ」というが鳴って、raspberry piのターミナル上にバッテリー残量が表示されます。
2.2.3. ルンバへの動作命令を送る
ルンバへ回転する命令を送ります。「2.2.2. ROSの起動」で開いたターミナルはそのままにして、新しいターミナルから命令を送ります。
$ source ~/create_ws/devel/setup.bash $ rostopic pub /cmd_vel geometry_msgs/Twist -r 60 -- '[0, 0, 0]' '[0, 0, 0.5]'
Ctrl + Cで止まります。動作確認が済んだら、「2.2.2. ROSの起動」の方も止めます。
まとめ
先述のブログをかなり参考にさせていただいて、なんとかraspberry pi経由でルンバを動かすことができました。ただ、動画のようにraspberry piの電源が固定だとルンバを動かせても移動ができません。また、ジャンパーケーブルはやはり抜けやすくルンバ回転中一度抜けてしまい、ルンバがずっと回り続けてしまうということもありました。これは、raspberry piの電源を固定にしていた影響でraspberry piのUSBケーブルがジャンパーケーブルに引っかかって抜けたことが原因なので、raspberry piの電源を固定にしなければ起こらないかとは思います。このあたり、引き続きブログを参考にしつつ直していきたいと思います。