Service話題
首先使用同樣的方法可以完成srv文件的導(dǎo)入
服務(wù)端的實現(xiàn)。Hierarchy窗口的“+→Create”Empty”創(chuàng)建空GameObject,命名為“AddTwoIntsServer”,添加新的腳本“AddTwoIntsServer”
using UnityEngine;
using Unity.Robotics.ROSTCPConnector;
using Unity.Robotics.ROSTCPConnector.ROSGeometry;
using AddTwoIntsRequest = RosMessageTypes.Hello.AddTwoIntsRequest;
using AddTwoIntsResponse = RosMessageTypes.Hello.AddTwoIntsResponse;
public class AddTwoIntsServer : MonoBehaviour
{
void Start()
{
// 向ROS連接注冊Service服務(wù)
ROSConnection.GetOrCreateInstance().ImplementService<
AddTwoIntsRequest, AddTwoIntsResponse >("add_two_ints", AddTwoIntsCallback);
}
private AddTwoIntsResponse AddTwoIntsCallback(AddTwoIntsRequest request)
{
AddTwoIntsResponse response = new AddTwoIntsResponse();
response.sum = request.a + request.b;
return response;
}
}
客戶端的實現(xiàn)。Hierarchy窗口的“+→Create”Empty”創(chuàng)建空GameObject,命名為“AddTwoIntsClient”,添加新的腳本“AddTwoIntsClient”,編輯如下。
using UnityEngine;
using Unity.Robotics.ROSTCPConnector;
using AddTwoIntsRequest = RosMessageTypes.Hello.AddTwoIntsRequest;
using AddTwoIntsResponse = RosMessageTypes.Hello.AddTwoIntsResponse;
public class AddTwoIntsClient : MonoBehaviour
{
ROSConnection ros;
void Start()
{
// 向ROS連接注冊Service服務(wù)
ros = ROSConnection.GetOrCreateInstance();
ros.RegisterRosService< AddTwoIntsRequest, AddTwoIntsResponse >("add_two_ints");
// 請求生成
AddTwoIntsRequest request = new AddTwoIntsRequest(1, 2);
// 請求發(fā)送
ros.SendServiceMessage< AddTwoIntsResponse >("add_two_ints", request, AddTwoIntsCallback);
}
void AddTwoIntsCallback(AddTwoIntsResponse response)
{
print("1 + 2 = " + response.sum);
}
}
-
Service
+關(guān)注
關(guān)注
0文章
31瀏覽量
14026 -
ROS
+關(guān)注
關(guān)注
1文章
285瀏覽量
17570 -
Unity
+關(guān)注
關(guān)注
1文章
128瀏覽量
22310
發(fā)布評論請先 登錄
ROS與RPLIDAR結(jié)合使用說明及問題匯總
ROS與STM32是如何進行通信的
RT-Thread實時操作系統(tǒng)與ROS2是怎樣進行通信的
Unity開發(fā)者Arm指南-特效圖形技術(shù)介紹
ROS的含義與機器人操作系統(tǒng)ROS的介紹
ROS與STM32通信

ROS基本介紹

ROS/ROS 2 介紹

如何將消息導(dǎo)入Unity

ROS核心框架介紹

ROS通信接口機制介紹

評論