ROSでの超基本的なプログラム実行


はじめに

この記事では前回作成したプログラムの実行を行います。
最後に簡単な機能紹介もします。

環境

ROS : indigo
OS : Ubuntu14.04
言語 : python2.7
参考ページ : http://wiki.ros.org/ja/ROS/Tutorials/ExaminingPublisherSubscriber

プログラム実行

実行方法は人によってかなり違います。
今回は公式でも紹介されている王道です。

1つ目のコンソール

ROSを使うためにはMasterがいなければ話になりません。
roscoreを起動してください。

$ source ~/ros_ws/devel/setup.bash
$ roscore

エラーの場合は赤い文字が出るはずです。

おそらくROS_MASTER_URIの設定が間違っているのでしょう。
/etc/hostsの127.0.0.1のホスト名を覚えてください。
そして以下のコマンドによって再設定してください。

% export ROS_MASTER_URI=http://ホスト名:11311

2つ目のコンソール

talker.pyを実行していきましょう。
まずはcatkin_makeの後にsetup.bashを通します。

$ cd ~/ros_ws
$ catkin_make
$ source /devel/setup.bash
$ rosrun ros_start talker.py

以下のような表示が出るはずです。

[INFO] [WallTime: 1314931831.774057] hello world 1314931831.77
[INFO] [WallTime: 1314931832.775497] hello world 1314931832.77
[INFO] [WallTime: 1314931833.778937] hello world 1314931833.78
[INFO] [WallTime: 1314931834.782059] hello world 1314931834.78
[INFO] [WallTime: 1314931835.784853] hello world 1314931835.78
[INFO] [WallTime: 1314931836.788106] hello world 1314931836.79

3つ目のコンソール

最後にlistener.pyの実行

$ cd ~/ros_ws
$ rosrun ros_start listener.py

以下のような表示が出るはずです。

[ INFO] 1251943144.400553000: Received [Hello there! This is message [1]]
[ INFO] 1251943144.600712000: Received [Hello there! This is message [2]]
[ INFO] 1251943144.801003000: Received [Hello there! This is message [3]]
[ INFO] 1251943145.001407000: Received [Hello there! This is message [4]]
[ INFO] 1251943145.201229000: Received [Hello there! This is message [5]]
[ INFO] 1251943145.401417000: Received [Hello there! This is message [6]]

これがでればPublishされSubscribeまでできているということです。
ROSのプログラムを実行する一連の流れです。

覚えてほしい便利機能

実行した後にどのようにつながっているのか確認するコマンドがあります。

$ rqt_grath

これを行えばノード同士がどのように接続されているのかを可視化して理解することが出来るようになります。

複雑な開発を行ったときに何故かSubscribeしてくれない...
そんな時に私は研究の際非常に重宝しました。

ちなみに私が1台のサーバに対し5台のクライアントすべてにROSのPublisherとSubscriberの機能を持たせた時の画像がこちらです。
最大で10台まで接続した時には非常に助かりました。

こんなものもROSのプログラムを理解すれば簡単に作れます。

おわりに

これであなたもROSを使い放題です。
自分の目的にあったROSの使い方をしましょう。
目的に合わないのにも関わらずROSを使うのは無駄です。

次回はメッセージを利用したROS通信の解説を行う予定です。