Only released in EOL distros:
Package Summary
rosbridge allows dynamic socket and web-socket based access to the full capabilities of ROS. A lightweight binding to Javascript for websocket-capable web browsers is included (ros.js), but access from any language supporting sockets and JSON is easy.
- Author: Graylin Trevor Jay
- License: BSD
- Repository: brown-ros-pkg
- Source: svn https://brown-ros-pkg.googlecode.com/svn/tags/stacks/brown_remotelab/brown_remotelab-0.0.20
Package Summary
rosbridge allows dynamic socket and web-socket based access to the full capabilities of ROS. A lightweight binding to Javascript for websocket-capable web browsers is included (ros.js), but access from any language supporting sockets and JSON is easy.
- Author: Graylin Trevor Jay
- License: BSD
- Source: svn https://brown-ros-pkg.googlecode.com/svn/trunk/distribution/brown_remotelab
Package Summary
rosbridge allows dynamic socket and web-socket based access to the full capabilities of ROS. A lightweight binding to Javascript for websocket-capable web browsers is included (ros.js), but access from any language supporting sockets and JSON is easy.
- Author: Graylin Trevor Jay
- License: BSD
- Source: svn https://brown-ros-pkg.googlecode.com/svn/trunk/distribution/brown_remotelab
Package Summary
rosbridge allows dynamic socket and web-socket based access to the full capabilities of ROS. A lightweight binding to Javascript for websocket-capable web browsers is included (ros.js), but access from any language supporting sockets and JSON is easy.
- Author: Graylin Trevor Jay
- License: BSD
- Source: svn https://brown-ros-pkg.googlecode.com/svn/trunk/distribution/brown_remotelab
Deprecationの注意
これは、rosbrigeのバージョン1のドキュメントです。このバージョンは、今まで道を開き、アプリケーションを立ち上げる際の助けになりました。しかし、これはすでにdeprecated(古い)と考えられており、現在はサポートされていません。
現在サポートされているrosbridgeについては、 http://wiki.ros.org/rosbridge_suite をご覧ください。
Contents
導入
rosbridgeは、ROSのtopicとサービスをJSONメッセージとして単純なTCPソケットかウェブソケットを通して使用可能にします。どちらのモード、ソケットとウェブソケットもリクエストとレスポンスの両方に同じJSONフォーマットを使用します。異なるクライアントで同時にかつ両方のモードを単一のrosbrigeのインスタンスでサポートします。
ros.js
このページの残りでは、rosbridgeサーバそれ自体について記述します。もし、純粋なHTML+JSのROSのアプリケーションを書くことに主に興味がある場合は、ros.jsはバックエンドなのでrosbridgeについてのみ気にかければ大丈夫です。そのような方の場合は、 ros.js tutorialを読むことをお勧めします。
ソケットのモード
デフォルトでは、rosbridgeは、9090ポートをリスンし、二つの接続モードをサポートします。
ウェブソケット
rosbridgeは接続の初期化に通常のウェブソケットのハンドシェイクをサポートします。接続が確立した後は、JSOnメッセージが通常のウェブソケットのメッセージとしてやり取りされます。
ソケット
rosbridgeとソケットの接続を始めるのに、適切なホストの9090のポートへのソケットをオープンし、"raw"+"\r"+"\n"+"\r"+"\n"という文字列を送ります。(つまり pythonでは"raw\r\n\r\n" ).
その後、すべてのメッセージは、0x00 バイトではじめり、0xFFで終わります。
メッセージフォーマット
rosbridgeからとrosbridgeへのメッセージは、ASCIIのJSONメッセージに準拠します。
Topics
Topicは、以下の形式でやり取りされます。:
{"receiver":"/topic","msg":{},"type":"package/Type"}
/topicはtopicのことを指し、msg(メッセージ)は、実際のROSのメッセージのJSONバージョンを持ちます。typeは、topicのためのtype文字列を持っています。
例えば、Twistメッセージを/cmd_velに送る際は、以下のようになります。:
{"receiver":"/cmd_vel","msg":{"linear":{"x":0,"y":0,"z":0},"angular":{"x":0,"y":0,"z":0}},"type":"geometry_msgs/Twist"}
サービスコール
サービスコールを作るには:
{"receiver":"/service","msg":[]}
レシーバが呼び出されているサービスを指し、msgは、引数のJSON配列です。(例えば [arg1,arg2])。返答は、レシーバにサービスの名前が添えられたtopicとしてrosbridgeから帰ってくるでしょう。
ROSのメッセージのJSONフォーマット
大部分において、ROSのJSONへの変換は、単純です。しかし、いくらかのROSのタイプ(例えばimages)は、data-uriのような特別な型に変換されます。詳しくは、rosbridgeのJavascriptチュートリアルをご覧ください。
特別なサービス
rosbridgeにバインドされるrosjsの特別なサービスの部分は、いつでも利用できます。rosbridgeが他の言語からアクセスされたり、単純なソケットからアクセスされるときでさえも可能です。これらのサービスが、rosbridgeのクライアントはtopicを発見し、サブスクライブしたり、サービスを見つけたり、他のタスクを行う方法です。これらのより詳細は、Javascriptのrosbridgeチュートリアルの"rosjs Services"セクションをお読みください。
rosbridgeのクライアントを書く
rosbridgeのプロトコルは、簡単にクライアントを書けるようにできています。たった73行で実行できる完全なウェブソケットクライアントであるros.jsのソースを試されることをお勧めします。