Installation
(Unity側)
ROS-TCP-ConnectorのREADME.mdに沿ってパッケージをインストール
(ROS側)
ワークスペース内にROS-TCP-Endpoint
をインストール
git clone git@github.com:Unity-Technologies/ROS-TCP-Endpoint.git
実行
(Unity側)
引用元:
-
Unity上部メニューからROS Setingsというウィンドウを開きネットワークを設定
-
スクリプトを作製(※ファイル名とクラス名は同じにすること)
2.1 Subscriber
Sub_test.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Unity.Robotics.ROSTCPConnector;
using StringMsg = RosMessageTypes.Std.StringMsg;
public class Sub_test : MonoBehaviour{
void Start(){
ROSConnection.instance.Subscribe<StringMsg>("test1", Callback);
}
void Callback(StringMsg msg){
Debug.Log(msg.data);
}
}
テスト用コマンド
rostopic pub /test1 std_msgs/String test!!
2.2 Publisher
Pub_test.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Unity.Robotics.ROSTCPConnector;
using Int32Msg = RosMessageTypes.Std.Int32Msg;
public class Pub_test : MonoBehaviour{
ROSConnection ros;
// Start is called before the first frame update
void Start(){
ros = ROSConnection.instance;
ros.RegisterPublisher<Int32Msg>("test2");
}
// Update is called once per frame
void Update(){
Int32Msg msg_data = new Int32Msg(12345);
ros.Send("test2", msg_data);
}
}
テスト用コマンド
rostopic echo /test2
(ROS側)
rosrun ros_tcp_endpoint default_server_endpoint.py
トラブルシューティング
ROSコネクションが表示されない
原因
- ROS Clicentがunity上に存在しない
チェック項目
- world内にROS clientを生成するためのScriptが配置されているか
- scriptに間違えがないか
参考
- unity ros 通信に必要なパッケージ
ROS-TCP-Endpoint
- Qiita: ROS-TCP-ConnectorでPubSub通信
- ROS入門 (18) - ROS-Unity間のサービスによる通信