ROS 1 コマンドラインツール#
概要#
ROS 1では,さまざまなコマンドラインツールを使用してノードやトピック,サービスなどを管理・デバッグできる.ROS 1はマスター・スレーブアーキテクチャを採用しているため,ROSプログラムを実行する前に必ずroscoreを起動する必要がある.
**本演習では,ROS 1としてROS-O (ROS One)を使用する.**環境設定については,ROS-Oインストールを参照すること.
roscore#
roscoreは,ROSのコアとなるプログラム(Master,Parameter Server,rosoutなど)を実行するコマンドである.roscoreを起動しないとノード間の通信が行えないため,ROSプログラムを立ち上げる前に必ず実行する必要がある.
# roscoreの起動
$ roscore
roscoreを起動すると,以下のようなメッセージが表示される:
started roslaunch server http://hostname:xxxxx/
ros_comm version 1.xx.x
SUMMARY
========
PARAMETERS
* /rosdistro: one
* /rosversion: 1.xx.x
NODES
auto-starting new master
process[master]: started with pid [xxxxx]
ROS_MASTER_URI=http://localhost:11311/
...
rosrun#
rosrunコマンドは,任意のパッケージの中の実行ファイルを,その場所に移動することなく実行するためのコマンドである.
# 使用法
$ rosrun <package_name> <executable_name>
# 例:roscpp_tutorialsパッケージのtalkerを実行
$ rosrun roscpp_tutorials talker
# 例:rospy_tutorialsパッケージのlistenerを実行
$ rosrun rospy_tutorials listener
roslaunch#
roslaunchコマンドは,roslaunch XML形式の設定ファイルに記載されたノードを開始する.複数のノードを立ち上げるシステムを使うときに必要である.
# 使用法
$ roslaunch <package_name> <launch_file>
# 例:turtlebot_gazeboパッケージのlaunchファイルを実行
$ roslaunch turtlebot_gazebo turtlebot_world.launch
注意:roslaunchは内部でroscoreを自動的に起動するため,roslaunchを使用する場合は事前にroscoreを起動する必要はない.
rosnode#
rosnodeコマンドは,実行中のノード情報やノード間の接続を確認するためのコマンドである.
# 現在実行中のノード一覧を表示
$ rosnode list
# ノードの詳細情報を表示(購読・出版しているトピックなど)
$ rosnode info <node_name>
# 実行中のノードを終了
$ rosnode kill <node_name>
# ノードの接続状態を確認
$ rosnode ping <node_name>
詳細はrosnode Wikiを参照すること.
rostopic#
rostopicコマンドは,実行中のトピックの情報やトピックに送られたメッセージを表示できる.
# トピック一覧を表示
$ rostopic list
# トピックのメッセージをリアルタイムで表示
$ rostopic echo <topic_name>
# トピックの詳細情報を表示
$ rostopic info <topic_name>
# トピックのメッセージ型を表示
$ rostopic type <topic_name>
# トピックにメッセージを送信
$ rostopic pub <topic_name> <msg_type> <data>
# トピックの周波数を表示
$ rostopic hz <topic_name>
# 例:/chatterトピックのメッセージを表示
$ rostopic echo /chatter
rostopicコマンドとrosmsgコマンドを組み合わせると便利である:
# トピックの型を調べて,その型の詳細を表示
$ rostopic type /rosout | rosmsg show
詳細はrostopic Wikiを参照すること.
rosmsg#
rosmsgコマンドは,メッセージのデータ構造を表示する.
# メッセージの詳細を表示
$ rosmsg show <message_type>
# メッセージ一覧を表示
$ rosmsg list
# 例:sensor_msgs/CameraInfoの構造を表示
$ rosmsg show sensor_msgs/CameraInfo
詳細はrosmsg Wikiを参照すること.
rosservice#
rosserviceコマンドは,実行中のサービスに関する情報を表示し,サービスを呼び出すことができる.
# サービス一覧を表示
$ rosservice list
# サービスの型を表示
$ rosservice type <service_name>
# サービスを呼び出す
$ rosservice call <service_name> <args>
# サービスの詳細情報を表示
$ rosservice info <service_name>
# 例:add_two_intsサービスを呼び出す
$ rosservice call /add_two_ints 1 2
詳細はrosservice Wikiを参照すること.
rossrv#
rossrvコマンドは,サービスのデータ構造を表示する.使い方はrosmsgと同じである.
# サービスの詳細を表示
$ rossrv show <service_type>
# サービス一覧を表示
$ rossrv list
# 例:AddTwoIntsサービスの構造を表示
$ rossrv show std_srvs/AddTwoInts
詳細はrossrv Wikiを参照すること.
rospack#
rospackコマンドは,ROSパッケージに関する情報を取得するためのコマンドである.
# パッケージ一覧を表示
$ rospack list
# パッケージのパスを表示
$ rospack find <package_name>
# パッケージの依存関係を表示
$ rospack depends <package_name>
# 例:roscpp_tutorialsパッケージのパスを表示
$ rospack find roscpp_tutorials
rosparam#
rosparamコマンドは,ROSパラメータサーバーに保存されているパラメータを取得・設定できる.
# パラメータ一覧を表示
$ rosparam list
# パラメータの値を取得
$ rosparam get <param_name>
# パラメータの値を設定
$ rosparam set <param_name> <value>
# パラメータをYAMLファイルから読み込む
$ rosparam load <yaml_file>
# パラメータをYAMLファイルに保存
$ rosparam dump <yaml_file>
# 例:すべてのパラメータを表示
$ rosparam get /
rosbag#
rosbagコマンドは,トピックの記録や再生を行うためのコマンドである.
# トピックを記録
$ rosbag record <topic_name>
# 複数のトピックを記録
$ rosbag record <topic1> <topic2> <topic3>
# すべてのトピックを記録
$ rosbag record -a
# バッグファイルを再生
$ rosbag play <bag_file>
# バッグファイルの情報を表示
$ rosbag info <bag_file>
# 例:/cmd_velトピックを記録
$ rosbag record /cmd_vel
rosclean#
roscleanコマンドは,ROSのログファイルを管理するためのコマンドである.
# ローカルディスク上のログファイルの容量を確認
$ rosclean check
# ログファイルを削除
$ rosclean purge
ヘルプの表示#
各コマンドの詳細なヘルプは,-hオプションで表示できる.
# 例:rostopicのヘルプを表示
$ rostopic -h
# 例:rosrunのヘルプを表示
$ rosrun -h