2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

roslib.jsで独自メッセージ型を使う

Last updated at Posted at 2020-06-25

あまりニーズがなさそうですが、roslibjsで独自メッセージ型を使うケースについて調べてみました。
roslibjsとは、web上でrosのトピックを送受信したり、rosのサービス/アクションを叩いたり
できるようになるjavascriptライブラリです。

ロボットに取り付けた画面からロボットに指令を出したり、ロボットからの情報を表示したりします。
rosにはrviz, rqt等、ROS基盤にアクセスするアーキテクチャはありますが、
エンドユーザ向けの画面を作りたい場合はコテコテ作る必要があります。

pyqtで画面を作ればpythonコードで直接rosAPIにアクセス出来て楽ですが、
UIというとWebアーキテクチャがメインっぽいですし、qtに依存するのもあれですし・・

基本的なことはROSのwikiに丁寧に書かれてます。
http://wiki.ros.org/roslibjs/Tutorials/BasicRosFunctionality

独自メッセージ型と書きましたが、Web側(つまりroslibjs)で型定義するわけではありません。
あくまで型定義はロボット側ROSパッケージで行います。どういうことなのか。

#1.独自メッセージ型をROSパッケージで定義
これもwikiに書かれてるので、そのとおりにサンプルを用意します。
http://wiki.ros.org/ROS/Tutorials/CreatingMsgAndSrv

#2.メッセージ型を確認

>rosmsg show beginner_tutorials/Num
int64 num

作成したパッケージbeginner_tutorialsの下に、Numというメッセージ型が新規作成され、
その型がint変数一個であることがわかります。

#3.ros側のブリッジサーバ起動

roslaunch rosbridge_server rosbridge_websocket.launch

新しいパッケージを作成し、source devel/setup.bashをした後、ブリッジサーバを
起動する必要があります。でないと、ブリッジサーバが新しい独自メッセージ型を
認知できません。

#4.ros側でトピック待ち

>rostopic echo /aaa
WARNING: topic [/aaa] does not appear to be published yet

新しいメッセージ型を、/aaaという名前のトピックで受信します。
とはいえ、この時点でrosマスタはそんな名前のトピックは知りません。
ただ、「そのうち誰かが/aaaという名前でトピックをpublishするだろう」と
思ってるだけです。

#5.Webページ側でトピック発行
基本的なコードは上記のwikiに書かれてるので、トピックを発行するとこだけ抜粋すると、


var pub = new ROSLIB.Topic({
    ros:ros,
    name:'/aaa',
    messageType: 'beginner_tutorials/Num'
});
pub.publish(new ROSLIB.Message({num: 999}));

これで、4の画面に以下のようにトピックが届きます。

> rostopic echo /aaa
num: 999

roslibjs側では、beginner_tutorials/Numというメッセージ型が
どういう型なのか定義されているわけではありません。
ただ、型の定義に合わせてデータを構成して送れば、
rosマスタが良しなにトピックのサブスクライバに配信してくれます。

4で、/aaaという正体不明のトピックが登録されたrosマスタは、
このようにWebページからトピックを発行されて初めて、

/aaaというトピックが、beginner_tutorialsパッケージのNumメッセージ型を
保持したトピックであることを知ります。そして、rostopic echoしてるところ、
すなわちコンソールのサブスクライバにトピックを配信します。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?