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のセットアップはこちら。