コンテンツにスキップ

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