■
ROSチュートリアル
目的
wikiのチュートリアル を行います。
方法
ファイルシステム
まずは、setup.bashを読み込みます。
bashの場合(標準)
$ source /opt/ros/indigo/setup.bash
zshの場合(シェルを変更している場合)
$ source /opt/ros/indigo/setup.zsh
これにり、rosのコマンドが使えるようになります。
ワークスペース
ROSで作業するためのワークスペースを作成します。 基本的にここで作業を行います。
$ mkdir -p ~/catkin_ws/src $ cd ~/catkin_ws/src $ catkin_init_workspace
ワークスペースのビルドは次のようにして行うことができます。
$ cd ~/catkin_ws/ $ catkin_make
ArchLinuxでcatkin_makeがうまく行かない場合は、こちらをご覧ください。
ワークスペースを適用します。
$ source devel/setup.bash
zshの場合は上記のように.bashを.zshに変更してください。
この読み込みはシェルを起動するたびに必要になるので、.bashrc .zshrcなどに書き込んでおくと楽です。
roscd
roscdを使うとパッケージのディレクトリに移動できます。
$ roscd パッケージ名
タブ補完を使うこともできます。
パッケージ
ROSのcatkinパッケージはCMakeLists.txtとpackage.xmlを含む必要があります。
パッケージの作成
std_msgs,rospy,roscppに依存したbeginner_tutorialsパッケージを作成します。
$ cd ~/catkin_ws/src $ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
rospackコマンドでパッケージの依存を調べることができます。
$ rospack depends beginner_tutorials
ビルド
パッケージのビルド
パッケージをビルドします。
$ cd ~/cakint_ws $ catkin_make
ノード
概念
- ノード:ノードはROSを使用して他のノードとやりとりする。
- トピック:ノードはメッセージをトピックに向けて配信し、購読して受け取る。
- メッセージ:トピックへ配信・購読するROSのデータ型。
- マスター:ROSのネームサービス。
- rosout:ROSのおけるstdout・stderr。
- roscore:マスター+rosout+パラメータサーバ。
roscore
roscoreはROSを使用する際に一番初めに起動させます。
$ roscore
rosrun
rosrunはパッケージ名を使用して、パッケージに含まれるノードを起動します。
turtlesimを起動してみます。
$ rosrun turtlesim turtlesim_node
トピック
セットアップ
rosrunの続きからさらにturtle_teleop_keyを起動します。
$ rosrun turtlesim turtle_teleop_key
これで、亀を矢印キードで操作することができるようになりました。
ROSトピック
turtlesim_nodeとturtle_teleop_keyはトピックを介して通信しています。
rqt_graphを使って、グラフを作成することができます。
$ rosrun rqt_graph rqt_graph
rostopicを使うことでトピックの詳細を得ることができます。 echoを使うとトピックのデータを見ることができます。
$ rostopic echo /turtle1/cmd_vel
rostopic listではトピックのリストを得ることができます。
$ rostopic list -v
rostopic pubではトピックを配信することができます。
$ rostopic pub トピック メッセージタイプ 引数 $ rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'
rqt_plotを使用すると、トピックのデータをグラフにすることができます。(略)
サービス
サービスもトピックと同じノード間の通信に使われる手段の一つですが、サービスは、リクエストとレスポンスから成り立っています。
前のままturtlesim_nodeは起動しておいてください。
ROSサービス
rosserviceを使うことでサービスの詳細を得ることができます。
listを使うと提供されるサービスを表示することができます。
$ rosservice list
callでサービスを呼び出すことができます。
$ rosservice call サービス 引数 $ rosservice call clear $ rosservice call spwan 2 2 0.2 ""
rosparamを使用すると、パラメータを操作することができます。(略)
デバッグ
rqt
rqt_consoleはログ収集フレームワークにノードからの出力を表示する機能を追加します。
rqt_clogger_levelはノード実行時の力詳細レベルを変更できます。
両方を起動します。
$ rosrun rqt_console rqt_console $ rosrun rqt_logger_level rqt_logger_level
これらを使用してでログを見ることができます。(略)
おわりに
いかがでしたでしょうか。 わからないことなどがありましたら、ご質問だくさい。
2015/7/26
2015/8/11 追記