2012年11月25日日曜日

rosserialを使ってArduinoとROSで通信する

みなさん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ができるようです。サービスはまだないのかな?

0 件のコメント:

コメントを投稿