クワマイでもできる

クワマイでもわかる

ROS#:Objectの位置姿勢をPublish

UnityとROSを通信させるのに便利なROS#(ros sharp)には、Unity上のGameObjectの位置姿勢を配信(Publish)するスクリプトが用意されている。ROS#v1.2c以前とv1.3ではちょっと使い方が違うのでメモ。

動作環境

  • Unity動作用PC
  • ROS動作用PC
    • Ubuntu16.04
    • ROS Kinetic Kame

ROS#のセットアップ

セットアップ方法は以前書いた。今回はセットアップ済みの状態から始める。

kuwamai.hatenablog.com

配信の手順

Pose Stamped Publisher

RosConnectorがアタッチされているオブジェクトにAssets/RosSharp/Scripts/RosBridgeClient/RosCommuncation/PoseStampedPublisher.csをアタッチする。

位置姿勢を配信させたいGameObjectをPublished Transformにドラッグ&ドロップする。 Topic、Frame Idは好きな名前を入れる。

f:id:kuwamai:20181211235251p:plain

ちなみにTopicはデータの名前、Frame Idは座標系の名前のようなもの。なので複数GameObjectの位置姿勢を配信する際はFrame Idを統一しておくと良い。

データの確認

UnityとROSの接続はセットアップ編を参照。

kuwamai.hatenablog.com

無事に接続したら、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のセットアップはこちら。