※このチュートリアルはv2.2.0以降対応しています。また、少なくとも、http://wiki.ros.orgのチュートリアル・http://wiki.ros.org/ROS/Tutorials/WritingPublisherSubscriber%28c%2B%2B%29 (catkin) まで実施済みの環境を想定しています。
ここでは既存のROSノードをSIGVerseで利用する方法を紹介します。ROSのサンプルプログラムTurtleSimで使用されている亀アバターの制御ノードをそのまま用いて、SIGVerse内のロボットを操作することを目的とします。
インターフェイスを作成します。ここでは、Ubuntu 12.04LTS環境を想定しています。また、catkin_make を行うディレクトリは、例えば、ユーザ名を UserNameとし、ROS用ワークスペースを catkin_ws とすると、 /home/UserName/catkin_ws にて行われるものとします。
SIGVerse内ロボットのインターフェイスは ros_if.tar.gz からダウンロードできます。これをROSワークスペース /home/<usrname>/<catkin_ws>/src へ展開します。
$ tar xvfz ros_if.tar.gz -C ~/<catkin_ws>/src
インターフェイスをビルドします。
$ cd ~/<catkin_ws> $ mkdir devel/lib/libros_if $ catkin_make
次のコマンドでインターフェイスが作成されたことを確認してください。
$ ll devel/lib/libros_if/sig_if_ctrl.so
ファイルが存在しない旨のメッセージが表示される場合は、catkin_make時に何らかのエラーが生じているはずです。それらをチェックし、適宜修正してください。ビルドが確認できたら、SIGVerseの世界ファイルをコピーします。
$ cp src/ros_if/ros_world.xml devel/lib/libros_if/
まず、これまでに作業を行っていた端末(terminal)とは別に新しく端末を立ち上げ、そこでROSを立ち上げます。
$ roscore
起動が確認できたら、別のウィンドウあるいはタブで新しく端末を立ち上げます。その端末で、次のコマンドによりSIGVerseを起動します。
$ cd ~/<catkin_ws> $ source devel/setup.bash $ cd devel/lib/libros_if $ sigverse.sh -w ./ros_world.xml
$ rosrun turtlesim turtle_teleop_keyすると、http://wiki.ros.org/ROS/Tutorials/UnderstandingTopics のときと同様に、
Reading from keyboard --------------------------- Use arrow keys to move the turtle.と表示され、当該端末はユーザからのキー入力待ち状態になります。この端末はロボットの操作をするとき、キー入力時にアクティブにしてある必要がありますので注意してください。
$ cd ~/<catkin_ws> $ source devel/setup.bash $ rosnode listによって行えます。これにより、同端末に
/ros_sig_node /rosout /teleop_turtleと表示されることを確認してください
$ cd ~/<catkin_ws> $ source devel/setup.bash $ rosrun rqt_graph rqt_graphによって確認でき、次のような図をみることができます。