ROSさんお手やわらかに:ROS青雲編
以前製作して諸般の事情でお蔵入りとなったroomba500を使った実験用ロボットを、turtlebotのスタックで動くようにする。つまりturtlebotのコンパチ機を作るわけだ。ROS_by_exampleを読んでいると、やっぱり手元にturtlebotが欲しくなる。自作ロボットでサンプルを試すには、かなりスクリプトに手を入れなければならない。買おうかと思ったが円安の影響もあるのか、現在販売されているkobukiをベースに使ったturtlebot2はかなり高い。turtlebot1は昔のroomba createをベースにしているので、マニュアルを見るかかぎり、通信体系が似ているroomba500でも動きそうだ。
基本的にこの記事にしたがって作業した。ただ、createの設定のままではうまく動かなかったので下記に設定内容を記録しておくことにした。roombaに搭載したX61とターミナルになるT61は相互に名前でsshできるようになっている。システム構成はこの投稿の図(ただしROSはhydro)を参照のこと。
■X61(roomba搭載機)の設定
.bashrcに下記を追加
export ROS_MASTER_URI=http://X61:11311
export ROS_HOSTNAME=X61
#
# setting up turtlebot
#
export TURTLEBOT_BASE=roomba
export TURTLEBOT_STACKS=circles
export TURTLEBOT_3D_SENSOR=kinect
export TURTLEBOT_SERIAL_PORT=/dev/ttyUSB0
ROS_MASTERをX61に設定している。重要なのはTURTLEBOT_BASEをroombaにしておくこと。例によって使いにくいROSのwikiでは見つからなかったが、launchスクリプトを調べたところ、roombaという値もとれることに気づいた。createだとroombaは動かない。
またダッシュボードで見るとジャイロに赤いアイコンがついているが、デゼーブルになっているという意味なので、問題はないようだ。もともとroombaにはジャイロがないのでこれはしょうがない。
■T61(ターミナル)の設定
.bashrcに下記を追加
ROS_MASTER_URI=http://X61:11311
ROS_HOSTNAME=T61
X61をマスターにするように設定する。これだけでOK
■ロボットの起動
X61とroombaの電源を入れる。
T61からsshでX61にログインし、下記を実行
$ roslaunch turtlebot_bringup minimal.launch
これだけだ。あとはチュートリアルにしたがって試してみればいい。キーボードでテレオペするのがわかりやすい。
■問題点
ダッシュボードでroombaのバッテリーレベル(右側)が表示されない。これは我慢するしかないみたいだ。
X61でローンチしたプロセスをコントロールCで停止しても、roombaが外部コントロールの状態(Fullモード)のままになっていて、roombaのパワーボタンを押しても電源が切れない。roomba500_lightノードでは終了すると通常モードに戻って電源が切れる。この状態では充電もできないので、roombaのSPOTボタンとDOCKボタンを10秒以上押してリセットするしかない。これは何とかしないと、大変に使い勝手が悪い。
ともあれ、これでturtlebot用のサンプルコードが動く(動きそう?)な環境が出来上がった。