rosbridge + roslibpyでメッセージを配信する

websocketでROSと通信できるrosbridgeをこちらで知りました。
ROS講座53 ブラウザでpub subする

rosbridge_suite
rosbridge_suite
rosbridge_suite

プロトコルの仕様はこちら
rosbridge v2.0 Protocol Specification

インストールして動作を試してみます。


rosbridgeのインストールと起動



以下のコマンドでインストール


$ sudo apt-get install ros-melodic-rosbridge-suite



roslaunchで起動します。
roscoreも同時に起動するので、別途roscoreを実行しておく必要はありません。


$ roslaunch rosbridge_server rosbridge_websocket.launch





roslibpy



こちらを見てみると、
rosbridge_suite
・Javascript
・Java
・Python
のライブラリがあります。

今回はPythonライブラリ「roslibpy」を使用してみます。
roslibpy: ROS Bridge library

pipでインストール。


$ sudo apt install python-pip
$ pip install roslibpy



サンプルとして、こちらと同様にカメを動かしてみます。
ROS turtlesimを自動的に動かすプログラムの作成

gitのテストコードを参考に作成します。
test_topic.py

プログラムは以下のようになりました。

・sample.py


  1. # -*- coding:utf8 -*-
  2. import time
  3. from roslibpy import Message, Ros, Topic
  4. def main():
  5.     
  6.     # roscoreを実行しているサーバーへ接続
  7.     ros_client = Ros('192.168.1.104', 9090)
  8.     # Publishするtopicを指定
  9.     publisher = Topic(ros_client, '/turtle1/cmd_vel', 'geometry_msgs/Twist')
  10.     def start_sending():
  11.         while True:
  12.             if not ros_client.is_connected:
  13.                 break
  14.             
  15.             # 送信するTwistメッセージの内容
  16.             publisher.publish(Message({
  17.                 'linear': {
  18.                     'x': 2.0,
  19.                     'y': 0,
  20.                     'z': 0
  21.                 },
  22.                 'angular': {
  23.                     'x': 0,
  24.                     'y': 0,
  25.                     'z': 1.8
  26.                 }
  27.             }))
  28.             time.sleep(0.1)
  29.         publisher.unadvertise()
  30.     # Publish開始
  31.     ros_client.on_ready(start_sending, run_in_thread=True)
  32.     ros_client.run_forever()
  33. if __name__ == '__main__':
  34.     main()




プログラムを実行する前にturtlesimを実行。


$ rosrun turtlesim turtlesim_node




作成したプログラムを実行。


$ python sample.py



見事カメが動いてくれました。

930_01.png




【参考URL】
ROS講座53 ブラウザでpub subする
rosbridge_suite
rosbridge_suite
rosbridge v2.0 Protocol Specification
test_topic.py
関連記事

プロフィール

Author:symfo
blog形式だと探しにくいので、まとめサイト作成中です。
Symfoware まとめ

PR




検索フォーム

月別アーカイブ