ROS#:Objectの位置姿勢をPublish
UnityとROSを通信させるのに便利なROS#(ros sharp)には、Unity上のGameObjectの位置姿勢を配信(Publish)するスクリプトが用意されている。ROS#v1.2c以前とv1.3ではちょっと使い方が違うのでメモ。
動作環境
- Unity動作用PC
- Windows 10
- ROS# v1.3
- Unity 2018.2.17f1
- Visual studio 2017
- ROS動作用PC
- Ubuntu16.04
- ROS Kinetic Kame
ROS#のセットアップ
セットアップ方法は以前書いた。今回はセットアップ済みの状態から始める。
配信の手順
Pose Stamped Publisher
RosConnectorがアタッチされているオブジェクトにAssets/RosSharp/Scripts/RosBridgeClient/RosCommuncation/PoseStampedPublisher.cs
をアタッチする。
位置姿勢を配信させたいGameObjectをPublished Transformにドラッグ&ドロップする。 Topic、Frame Idは好きな名前を入れる。
ちなみにTopicはデータの名前、Frame Idは座標系の名前のようなもの。なので複数GameObjectの位置姿勢を配信する際はFrame Idを統一しておくと良い。
データの確認
UnityとROSの接続はセットアップ編を参照。
無事に接続したら、ROSを動作させているPC側のターミナルから下記コマンドを入力すると、Topicが配信されていることがわかる。
$ rostopic list /pose_test
Topicのデータが見たい場合は下記のコマンドを入力。poseとorientationに位置姿勢が表示されていることがわかる。
$ rostopic echo /pose_test header: seq: 11806 stamp: secs: 251 nsecs: 204 frame_id: "Unity" pose: position: x: 0.125135 y: 0.9609885 z: 1.93874049 orientation: x: 0.39447543 y: -0.253540576 z: 0.820601046 w: 0.3266807
参考
ROSのセットアップはこちら。