Service話題
首先使用同樣的方法可以完成srv文件的導(dǎo)入

服務(wù)端的實(shí)現(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連接注冊(cè)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;
}
}
客戶端的實(shí)現(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連接注冊(cè)Service服務(wù)
ros = ROSConnection.GetOrCreateInstance();
ros.RegisterRosService< AddTwoIntsRequest, AddTwoIntsResponse >("add_two_ints");
// 請(qǐng)求生成
AddTwoIntsRequest request = new AddTwoIntsRequest(1, 2);
// 請(qǐng)求發(fā)送
ros.SendServiceMessage< AddTwoIntsResponse >("add_two_ints", request, AddTwoIntsCallback);
}
void AddTwoIntsCallback(AddTwoIntsResponse response)
{
print("1 + 2 = " + response.sum);
}
}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
Service
+關(guān)注
關(guān)注
0文章
31瀏覽量
14343 -
ROS
+關(guān)注
關(guān)注
1文章
293瀏覽量
18722 -
Unity
+關(guān)注
關(guān)注
1文章
131瀏覽量
23295
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
熱點(diǎn)推薦
ROS與RPLIDAR結(jié)合使用說(shuō)明及問(wèn)題匯總
的ROSpackage rplidar_ros介紹:rplidar_ros是國(guó)內(nèi)第一款面向全球ROS開(kāi)發(fā)者推出相應(yīng)package的激光雷達(dá),其低廉的價(jià)格大大推動(dòng)了激光雷達(dá)在
發(fā)表于 09-07 16:27
ROS與STM32是如何進(jìn)行通信的
ROS與STM32通信2020.8.1主要內(nèi)容制作ROS包,將控制命令傳給STM32,并將接收到的數(shù)據(jù)作為話題進(jìn)行發(fā)布STM32接收數(shù)據(jù)并將姿態(tài)數(shù)據(jù)傳回給ROS接收:期望角速度、期望線
發(fā)表于 08-11 07:25
RT-Thread實(shí)時(shí)操作系統(tǒng)與ROS2是怎樣進(jìn)行通信的
,高效和穩(wěn)定,這里簡(jiǎn)單介紹一下 ROS 很重要的4個(gè)設(shè)計(jì):Message (消息):有的時(shí)候可能會(huì)苦惱傳感器的信息應(yīng)該以什么樣的數(shù)據(jù)結(jié)構(gòu)發(fā)送出去,于是 ROS 定義好了各種常見(jiàn)傳感器的數(shù)據(jù)格式,有了
發(fā)表于 04-01 11:38
Unity開(kāi)發(fā)者Arm指南-特效圖形技術(shù)介紹
本指南介紹了幾種可以在Unity程序中使用的特效技術(shù),包括:
?臟鏡頭效果
?霧效果
?冰墻效果
在本指南中,有圖像顯示了如何在示例中使用特效展示了冰洞演示和Nordeus的游戲Spellsouls
發(fā)表于 08-02 06:07
ROS的含義與機(jī)器人操作系統(tǒng)ROS的介紹
為了說(shuō)明講清楚 ROS,我就從 ROS 是什么,為什么使用 ROS,如何使用 ROS 三個(gè)方面展開(kāi)。 △出自今年《機(jī)器人視覺(jué)與應(yīng)用》課程本人制作的課件 是什么
發(fā)表于 09-26 14:08
?12次下載
ROS與STM32通信
ROS與STM32通信2020.8.1主要內(nèi)容制作ROS包,將控制命令傳給STM32,并將接收到的數(shù)據(jù)作為話題進(jìn)行發(fā)布STM32接收數(shù)據(jù)并將姿態(tài)數(shù)據(jù)傳回給ROS接收:期望角速度、期望線
發(fā)表于 12-24 19:00
?12次下載
ROS基本介紹
近來(lái)找到的實(shí)習(xí)主要是做智能車控制,用到的也就是ROS機(jī)器人操作系統(tǒng),ROS需要運(yùn)行在一個(gè)操作系統(tǒng)上,這個(gè)操作系統(tǒng)常用的就是Linux,而公司用的就是Ubuntu,所以Ubuntu-ROS組合就是實(shí)習(xí)的主要學(xué)習(xí)內(nèi)容了。所以我就新開(kāi)
ROS/ROS 2 介紹
ROS是機(jī)器人操作系統(tǒng)(Robot Operating System)的英文縮寫。ROS是用于編寫機(jī)器人軟件程序的一種具有高度靈活性的軟件架構(gòu)。ROS的原型源自斯坦福大學(xué)的STanford
Unity與ROS鏈接介紹
對(duì)于ROS而言,其最常用的就是Topic話題以及Service兩個(gè)了。之前我們?cè)诹私?b class='flag-5'>Unity Robotics Hub時(shí)候就了解到基本的Unity
如何將消息導(dǎo)入Unity
自定義msg 將消息導(dǎo)入Unity的步驟如下所示: 1.Unity的菜單“Robotics→Generate ROS Messages…”選擇。 2.在“ROS message pat
ROS核心框架介紹
ROS核心框架 對(duì)于第一個(gè)問(wèn)題,我也沒(méi)仔細(xì)研究過(guò)源碼,核心代碼基本由python和C++組成,運(yùn)用了xmlrpc機(jī)制,每個(gè)運(yùn)行的節(jié)點(diǎn)可以理解成一個(gè)進(jìn)程。進(jìn)程間通訊有些是共享內(nèi)存的方式(比如
ROS通信接口機(jī)制介紹
ROS通信接口 接口可以讓程序之間的依賴降低,便于我們使用別人的代碼,也方便別人使用我們的代碼,這就是ROS的核心目標(biāo),減少重復(fù)造輪子。 ROS有三種常用的通信機(jī)制,分別是話題、服務(wù)、
Unity與ROS的Service話題介紹
評(píng)論