ROSとライトローバーの基本操作
ROSは基本的にコマンドラインを使って操作します。ここでは、ROSの基本操作となるコマンドと、ライトローバーをROSを使って制御するために必要な手順について紹介します。
ROSの基本操作
基本用語
ROSを使用する際によく登場する用語の一覧です。
用語 | 用語(英語) | 意味 |
---|---|---|
マスター | master | ノードやトピックの管理をするプロセス |
ノード | node | ロボット制御システムを構成する一つ一つのプロセス |
パッケージ | package | 特定の機能を実現するためのノードの集まり |
トピック | topic | pub/sub型で非同期のノード間通信方法 |
メッセージ | message | トピックでやり取りされるデータ |
サブスクライバー | subscriber | トピックを受信(購読)するノード |
パブリッシャー | publisher | トピックを送信(配信)するノード |
サービス | service | リクエスト/リプライ型のノード間通信方法 |
パラメータ | parameter | ノード外から動的に変更も可能なノード内変数 |
roscoreの起動
ROSシステムの基幹となるROS masterなどのプログラムを立ち上げるコマンドがroscoreです。ROSを使用する際には常に立ち上がっているようにする必要があります。
画面左上のメニューから、アクセサリ->LXTerminalを選択するか、キーボードの Ctrl+Alt+T を押してターミナルを起動し、次のコマンドを実行してください。
roscore
次のような画面が表示されれば、無事にroscoreが起動しています。
rosノードの実行(rosrun)
ROSのノードを実行するためにはrosrunというコマンドを使用します。
rosrun [パッケージ名] [ノード名]
例えば、ジョイスティックからの入力を取得する機能を持つ「joy」パッケージに含まれる「joy_node」というノードを起動するコマンドは、次のようになります。
rosrun joy joy_node
ノードの起動に合わせて、引数を設定することもできます。
例えば、joy_nodeの~deadzoneパラメータを設定することで、アナログスティックのデットゾーンを変更することができます。
rosrun joy joy_node _deadzone:=0.1
rosrunの引数について、詳しくは以下のページで解説されています。
ROS.org Remapping Arguments
roslaunchの使用
ROSでは複数のノードを立ち上げることでシステムを構成します。
そのため、ノードをいちいちrosrunで起動していては面倒です。
roslaunchは複数のノードをまとめて起動したり終了させることができる仕組みです。
roslaunchでは、あらかじめ特定の書式に従って記述したlaunchファイルを使用します。
launchファイルとroslaunchを使用することで、以下のようなことが可能となります。
* 複数のノードをまとめて起動
* 名前空間を使用した同一ノードの複数起動
* パラメータの設定
* リマップの使用(トピック名やノード名の変更)
* 条件分岐の使用(引数でパラメータや起動するノードを変更することができる)
roslaunchコマンドは以下のように使用できます。
roslaunch [パッケージ名] [launchファイル名]
また、rosrunと同様に引数を設定することもできます。
パッケージの中には、ユーザーが簡単に使用できるよう、あらかじめlaunchファイルが含まれている物も多くあります。
例えば、ライトローバー用のROSパッケージ「lightrover_ros」には、ライトローバーをゲームパッドで操作するために必要なノードをまとめて立ち上げる「pos_joycon.launch」が含まれています。pos_joycon.launchは、以下のコマンドで起動することができます。
roslaunch lightrover_ros pos_joycon.launch
ノードの終了
ノードを終了させる方法はいくつかあります。
ここではライトローバーを使用する際に、最もよく使用する方法のみ紹介します。
* ノードを実行しているターミナルがアクティブな状態で、Ctrl+Cを押してください
rosrunで起動した場合でも、roslaunchを使用した場合でも、どちらでも終了することができます。また、roscoreも終了することができます。
roscdによるディレクトリ移動
roscdコマンドを使用することにより、パッケージのディレクトリへ素早く移動することができます。
roscd [パッケージ名]
単に移動するだけでなく、パスが通っているかどうかの確認にも使用できます。
rostopicの使用
rostopicはトピックに関する様々な操作を行うことができるコマンドです。
ここでは、良く使われるいくつかを紹介します。
より詳しい情報は以下のページで得ることができます。
ROS.rog rostopic
rostopic list
現在存在しているトピックの一覧を表示します。
rostopic list
rostopic echo
特定のトピックで配信されたメッセージの内容を表示します。
rostopic echo [トピック名]
例えば、ライトローバーの速度指令値として使用している/rover_driveトピックの値を見る場合、以下のコマンドを使用します。
rostopic echo /rover_drive