みなさんArduino使っていますか?
イタリア製のいかしたマイコンです。
mbedのほうがオシャレな気がしますが、
まだまだArduinoのほうが強い気がします。
ArduinoとROSを通信させたいときに便利なrosserial_arduinoを紹介します。
rosserial_arduinoは以下のメリットがあります。
- ArduinoのスケッチをROSライクに書ける
- ArduinoとROSのインタフェースで通信できる
まあ、要するにマイコンとPCのプロトコルをいちいち決めるのがめんどくさいときに楽できますよ、ってことです。
ちなみにrosserialはシリアル通信でROSをおしゃべりするための汎用的なライブラリで、rosserial_arduinoは、そのArduino用ライブラリになります。
PCとはjava/pythonで接続します。
チュートリアルはこちら。
http://ros.org/wiki/rosserial_arduino/Tutorials/Arduino%20IDE%20Setup
http://ros.org/wiki/rosserial_arduino/Tutorials/Hello%20World
インストール
sudo apt-get install ros-fuerte-rosserial
でもいいんですが、これだと最新のArduino IDE(1.0以降)で動きません。
なので、最新版をソースから使うのがいいです。
(groovyではそのまま動くと思います。)
hg clone https://kforge.ros.org/rosserial/hg rosserial
rosdep install rosserial_arduino
rosmake rosserial_arduino
そしたらそれを以下のコマンドでインストールします。<sketchbook>はArduino IDEをインストールしたパスで置き換えてくださいね。
roscd rosserial_arduino/libraries
cp -r ros_lib <sketchbook>/libraries/
するとArduinoのサンプルにros_libというのが出るので、
これで遊べます。
ExampleからHelloWorldを選択して、ダウンロードしてみてください。
実行
まずroscoreを上げます。
roscore
次にマイコンとシリアル通信するPCのソフトを上げます。
rosrun rosserial_python serial_node.py /dev/ttyUSB0
するとすでにArduinoがROSをしゃべっているので、確認しましょう。
rostopic echo chatter
Publish/Subscribeができるようです。サービスはまだないのかな?