(親が)ジャパネット高田で購入したRoomba980が家にやってきました。お掃除もできるお手軽ハッキング用ロボットということで、私もRaspberry Pi 4を購入してハッキングしてみました。
- ハード: Raspberry Pi 4
- OS: Raspbian Buster
- ROS: melodic
Roomba980
Roombaには400, 500, ... , 900やCreate 1, 2などのシリーズがありまして、980は900シリーズの最新版ということのようです。車体上部にはiAdaptと説明書で呼ばれているカメラがついており、おそらくこれでvSLAMをしているのではないかと思います。見た目はこんな感じ。ちなみに結構うるさいです。我が家の犬は怯えています。
Roomba900シリーズのROI
Roombaは共通してROI(Roomba Open Interface)と呼ばれるものが存在し、これを使って人々は数多くのRoombaをハッキングしてきました。通常、Roombaはその上部に存在するシリアルポートからRaspberry Piなどで通信し、ハッキングを行うようです。しかし900シリーズはその上部に存在するシリアルポートが取り除かれており、他のシリーズのように通信することができません。
いろいろと探してみたところ、車体右下上面にある細い円弧状のフレームを取り外すと、microUSBのポートがあることがわかりました12。特に写真については2をご覧ください。
ここにRaspberry Pi 4をつないでみると、 /dev/ttyACM0
としてRoombaが認識されました。https://github.com/martinschaef/roomba で試してみるとちゃんと動きました。
ちなみに、microUSBのケーブルによっては認識されない場合もありました(そもそもmicroUSBに違いがあることを知りませんでした)。「つないでも/dev/*が出てこないんだけど!」という人はケーブルを変えてみると良いかもしれません。
Roomba980をROSで動かす
ここではROS(1)のインストール方法は省きます。今回はCreate Autonomy3のパッケージに含まれるドライバーを使いました。ちなみに使う前にちゃんとRoombaポートの権限追加を行いましょう。ttyACM0の部分は適当にご自分のに変えてください。その後のROSドライバーでも同様です。
$ sudo chmod a+rw /dev/ttyACM0
これができたら、あとはドライバーを立ち上げるだけです。ちなみにCreate Autonomy3のページには「900シリーズは対応未確認」とあるように、公式にはRoomba900シリーズをサポートしていないようです。いろいろ試してみたところ、create_1のドライバーを立ち上げると接続に成功しました。(なぜ?)
$ roslaunch ca_driver create_1.launch
ちなみに rostopic list
の結果はこんな感じ。
$ rostopic list
/battery/capacity
/battery/charge
/battery/charge_ratio
/battery/charging_state
/battery/current
/battery/temperature
/battery/voltage
/bumper
/check_led
/clean_button
/cmd_vel
/day_button
/debris_led
/define_song
/diagnostics
/dock
/dock_button
/dock_led
/hour_button
/ir_omni
/joint_states
/minute_button
/mode
/odom
/play_song
/power_led
/rosout
/rosout_agg
/set_ascii
/spot_button
/spot_led
/tf
/tf_static
/undock
/wheeldrop
Roomba980はせっかくカメラ(?)がついているというハード面でのアドバンテージがあるにもかかわらず、現状だとそれがrosで使えないのがもどかしい、、、。そもそも3は900シリーズを公式に対応しているわけではないと思うので、現状ですらうまく通信できない部分があるのかもしれません。さらっと確認したところだと/cmd_vel
や/battery/*
, /ir_omni
などのセンサー系はとりあえずちゃんと動いていそうでした。
Conclusion
Roomba900シリーズもROSで動かすことができるようですね。ただ現状ではまだ全て正常かを確認できていないのと、機能をフルで活かすことはできない感じがします。新しくハッキング用Roombaを購入する場合は900はあまりお勧めしないかもです。
Future Work
- ちゃんと全てのrostopicが正常に動作しているか確認する。
- ROS2で試してみる。
- 何とかしてカメラを使う(Roombaのが無理なら別でカメラ買うしかないかな)
秒で作った記事なので何か不備や質問などがあればよろしくお願いします。
-
Roomba 980をraspberry piで動かしてみた, http://mementomorisince2013.blogspot.com/2019/01/roomba-980raspberry-pi.html ↩
-
実はルンバ900シリーズはROI対応している, https://qiita.com/ozwk/items/7ed89479cf4931970edd ↩ ↩2
-
github create_autonomy, https://github.com/AutonomyLab/create_autonomy ↩ ↩2 ↩3