ROSとROS Bridgeのチュートリアル - ais-lab/UD_wiki GitHub Wiki

UDのシステムを構築しているROSとROS Bridgeについて簡単に説明します. 詳しい説明は公式wikiなどを参考にしてください.

UDの機能を利用する方法としては,ROSと直接連携する方法(つまりROSプログラミング)と,ROS Bridgeを用いて間接的に制御する方法があります.

ROSの通信

  • NodeはTopic(データパス)に対してMessageをPublish(配信),Subscribe((購読)している
  • 配信者と購読者が通信するためには,配信者と購読者は同じ型のメッセージを送受信する必要があります

Topicの確認方法

rostopic bw     トピックで使用されている帯域を表示する
rostopic echo   スクリーンにメッセージを出力する
rostopic find   メッセージの型からトピックを探す
rostopic hz     トピックの配信頻度を表示する
rostopic info   アクティブなトピックについての情報を出力する 
rostopic list   アクティブなトピックをリスト表示する
rostopic pub    トピックへデータを配信する
rostopic type   トピックの型を出力する

listで一覧を表示した後,infoでその詳細を見て,echoで実際の内容を見る,というのがよく使う流れである.

トピックに対応しているMessageを調べるには

rostopic type トピック名

を用いる.

これらのコマンドによりROS上ではもちろん,次に紹介するROS Bridgeで送るデータの内容を調べることができる.

ROS Bridgeによる通信

ROS BridgeはROSパッケージであり,JSON形式のデータをやりとりすることで,ROSと通信ができます. ROS側でサーバを立てて,そこに接続する形となります. TCP,UDP,websocketが対応しています.

http://wiki.ros.org/rosbridge_suite

つまり,通信ができる環境,機能があれば,OSやハードウェアに関係なくUDと通信できるようになります. 例えば,スマートフォンからでもUDが制御可能となります. 具体的な使い方は rosbridgeを介してyoubotをキーボードから操作するためのPythonサンプル を参考にしてください.

ROS側に命令を送信する

例えば,送る文字列はこのようなものになります.

{
  "op": "publish",
  "topic": "/cmd_vel",
  "type": "geometry_msgs/Twist"
}

topic /cmd_velに対してmessage geometry_msgs/Twist をpublish(配信)しています 内容は前述したコマンドなどを参考に自分で調べてください.主要なTopicは右のリンクに書いてあります.

ROS側からデータを受信する

(todo)