自定義msg
將消息導入Unity的步驟如下所示:
1.Unity的菜單“Robotics→Generate ROS Messages…”選擇。
2.在“ROS message path”中選擇“catkin_ws/src”。
然后就可以看到path下的msg都會顯示在Unity下面
然后點擊“MyString.msg”中的“Build msg”。這樣“MyString.msg”將被轉換成c#腳本“MyStringMsg”,并在Project窗口中輸出“RosMessages”。
Topic話題
這一小節我們主要來說Topic的發布和訂閱,首先我們來看一下發布者的Unity編程。
1.在Hierarchy窗口的“+→Create Empty”中創建空GameObject,命名為“Publisher”。
2.在“Publisher”中追加新腳本“ChatterPublisher”,編輯如下
using UnityEngine;
using Unity.Robotics.ROSTCPConnector;
using MyStringMsg = RosMessageTypes.Hello.MyStringMsg;
public class ChatterPublisher : MonoBehaviour
{
private ROSConnection ros;
// 初始化時被調用
void Start()
{
// 向ROS連接注冊Topic話題
ros = ROSConnection.instance;
ros.RegisterPublisher< MyStringMsg >("chatter");
}
// 每幀更新
void FixedUpdate()
{
// 發送msg信息
MyStringMsg msg = new MyStringMsg("Hello Unity!");
ros.Send("chatter", msg);
}
}
而接收者和發布者類似,都在Hierarchy窗口的“+→Create Empty”中創建空GameObject,命名為“Subscriber”。
在“Subscriber”中添加新的腳本“ChatterSubscriber”,編輯如下。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Unity.Robotics.ROSTCPConnector;
using MyStringMsg = RosMessageTypes.Hello.MyStringMsg;
public class ChatterSubscriber : MonoBehaviour{
void Start(){
// 向ROS連接注冊Subscribe
ROSConnection.instance.Subscribe< MyStringMsg >("chatter", Callback);
}
void Callback(MyStringMsg msg){
Debug.Log(msg.data);
}
}
同時我們可以在ROS當中訂閱這些信息,運行
roscore
rosparam set ROS_IP 127.0.0.1
rosparam set ROS_TCP_PORT 10000
rosrun ros_tcp_endpoint default_server_endpoint.py
# roslauch ros_tcp_endpoint endpoint.launch tcp_ip:=127.0.0.1 tcp_port:=10000 # 將127.0.0.1
然后寫一個listener.py的訂閱器。
-
編程
+關注
關注
88文章
3616瀏覽量
93735 -
ROS
+關注
關注
1文章
278瀏覽量
17009 -
Unity
+關注
關注
1文章
127瀏覽量
21830
發布評論請先 登錄
相關推薦
評論