ROSノードの利用

はじめに

ここでは既存のROSノードをSIGVerseで利用する方法を紹介します。ROSのサンプルプログラムTurtleSimで使用されている亀アバターの制御ノードをそのまま用いて、SIGVerse内のロボットを操作することを目的とします。

※このチュートリアルはUbuntu12.04LTS上のSIGVerse v2.2.0以降に対応しています。また、少なくとも、http://wiki.ros.orgのチュートリアル:http://wiki.ros.org/ROS/Tutorials/WritingPublisherSubscriber%28c%2B%2B%29 (catkin) まで実施済みの環境を想定しています。

SIGVerse内ロボット制御のためのコントローラの作成

まず、制御ノードからのメッセージを浮け、SIGVerse内のロボットを動かすためのコントローラとなるノードを作成します。ここでは、catkin_make を行うディレクトリは、例えば、ユーザ名を UserNameとし、ROS用ワークスペースを catkin_ws とすると、 /home/UserName/catkin_ws にて行われるものとします(以降<catkin_ws>と表記)。
本チュートリアル実施に必要なファイルは fileros_if.tar.gz からダウンロードできます。これをROSワークスペース <catkin_ws>/src へ展開します。

$ tar xvfz ros_if.tar.gz -C <catkin_ws>/src

catkin_ws>/src/ros_if/CMakeLists.txt の102, 103行目にSIGVerseのヘッダファイルパスの指定があります。

これを、例えば次のように環境に応じて変更します。

コントローラをビルドします。

$ 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/

turtlesim制御ノードの作成

ROS公式サイトのチュートリアル用ソースコードを取得します。

git clone https://github.com/ros/ros_tutorials.git

SIGVerseの起動

まず、これまでに作業を行っていた端末(terminal)とは別に新しく端末を立ち上げ、そこでROSを立ち上げます。

$ roscore

起動が確認できたら、別のウィンドウあるいはタブで新しく端末を立ち上げます。その端末で、次のコマンドによりSIGVerseを起動します。

$ cd ~/<catkin_ws>
$ source devel/setup.bash
$ cd devel/lib/libros_if
$ sigverse.sh -w ./ros_world.xml

SIGViewerの起動とシミュレーションの開始

制御ノードの起動

制御ノードの動作確認

メッセージ送受信の様子の図示


Front page   New List of pages Search Recent changes   Help   RSS of recent changes