ROSチュートリアル

目的

wikiのチュートリアル を行います。

方法

準備

まずは下記のものを用意してください

  1. 前回作成したマシン

ファイルシステム

まずは、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 追記