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)