在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

服務通信接口的定義與使用

麥辣雞腿堡 ? 來源:古月居 ? 作者:古月 ? 2023-12-01 15:28 ? 次閱讀

了解了通信接口的概念,接下來我們再從代碼實現的角度,研究下如何定義以及使用一個接口

在之前服務概念講解的課程中,我們編寫了這樣一個例程,我們再來回顧下。

圖片

有三個節點:

第一個驅動相機發布圖像話題

第二個是機器視覺識別節點,封裝了一個服務的服務端對象,提供目標識別位置的查詢服務;

第三個節點在需要目標位置的時候,就可以發送請求,收到位置進行使用了。

圖片

接口定義

在這個例程中,我們使用GetObjectPosition.srv定義了服務通信的接口:

learning_interface/srv/GetObjectPosition.srv

bool get      # 獲取目標位置的指令---int32 x       # 目標的X坐標int32 y       # 目標的Y坐標

定義中有兩個部分,上邊是獲取目標位置的指令,get為true的話,就表示我們需要一次位置,服務端就會反饋這個x、y坐標了。

完成定義后,還需要在功能包的CMakeLists.txt中配置編譯選項,讓編譯器在編譯過程中,根據接口定義,自動生成不同語言的代碼:

...find_package(rosidl_default_generators REQUIRED)rosidl_generate_interfaces(${PROJECT_NAME}  "srv/GetObjectPosition.srv")...

功能包的package.xml文件中也需要添加代碼生成的功能依賴:

... < build_depend >rosidl_default_generators< /build_depend > < exec_depend >rosidl_default_runtime< /exec_depend > < member_of_group >rosidl_interface_packages< /member_of_group > ...

程序調用

我們在代碼中再來重點看下接口的使用方法。

客戶端接口調用

learning_service/service_object_client.py

#!/usr/bin/env python3# -*- coding: utf-8 -*-"""@作者: 古月居@說明: ROS2服務示例-請求目標識別,等待目標位置應答"""import rclpy                                            # ROS2 Python接口庫from rclpy.node   import Node                           # ROS2 節點類from learning_interface.srv import GetObjectPosition    # 自定義的服務接口class objectClient(Node):    def __init__(self, name):        super().__init__(name)                          # ROS2節點父類初始化        self.client = self.create_client(GetObjectPosition, 'get_target_position')        while not self.client.wait_for_service(timeout_sec=1.0):            self.get_logger().info('service not available, waiting again...')        self.request = GetObjectPosition.Request()    def send_request(self):        self.request.get = True        self.future = self.client.call_async(self.request)def main(args=None):    rclpy.init(args=args)                             # ROS2 Python接口初始化    node = objectClient("service_object_client")      # 創建ROS2節點對象并進行初始化    node.send_request()    while rclpy.ok():        rclpy.spin_once(node)        if node.future.done():            try:                response = node.future.result()            except Exception as e:                node.get_logger().info(                    'Service call failed %r' % (e,))            else:                node.get_logger().info(                    'Result of object position:n x: %d y: %d' %                    (response.x, response.y))            break    node.destroy_node()                              # 銷毀節點對象    rclpy.shutdown()                                 # 關閉ROS2 Python接口

服務端接口調用

learning_service/service_object_server.py

#!/usr/bin/env python3# -*- coding: utf-8 -*-"""@作者: 古月居(www.guyuehome.
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 通信接口
    +關注

    關注

    3

    文章

    240

    瀏覽量

    31066
  • 服務端
    +關注

    關注

    0

    文章

    66

    瀏覽量

    7061
  • ROS
    ROS
    +關注

    關注

    1

    文章

    280

    瀏覽量

    17102
收藏 人收藏

    評論

    相關推薦

    iphone接口定義

    本文提供詳細的iphone接口定義,有iphone接口定義英文版和iphone接口定義中文介紹說
    發表于 03-28 15:15 ?1.5w次閱讀

    USB接口定義

    USB接口定義 USB接口定義  更多盡在:USB產品網
    發表于 04-21 11:58 ?3.4w次閱讀

    MIDI接口定義和游戲桿接口定義

    MIDI 接口定義和游戲桿接口定義圖 MIDI 接口和 PC 游戲桿接口是共用的,外觀為 15
    發表于 11-27 20:13 ?4149次閱讀
    MIDI<b class='flag-5'>接口</b><b class='flag-5'>定義</b>和游戲桿<b class='flag-5'>接口</b><b class='flag-5'>定義</b>圖

    rs422接口定義 rs232接口定義 rs485接口定義

    rs422接口定義 rs232接口定義 rs485接口定義 Pin 信
    發表于 04-27 17:33 ?1.6w次閱讀

    手機usb接口定義

    手機8針的usb接口定義 手機12針的usb接口定義 K750c手機US
    發表于 06-10 11:19 ?1.5w次閱讀
    手機usb<b class='flag-5'>接口</b><b class='flag-5'>定義</b>

    MIDI接口定義,MIDI接口游戲桿接口引腳功能定義

    MIDI接口信號定義與游戲桿接口功能定義 MIDI接口和PC游戲桿接口是共用的,外觀見下圖:
    發表于 05-03 23:27 ?6861次閱讀
    MIDI<b class='flag-5'>接口</b><b class='flag-5'>定義</b>,MIDI<b class='flag-5'>接口</b>游戲桿<b class='flag-5'>接口</b>引腳功能<b class='flag-5'>定義</b>圖

    SCART接口功能定義

    SCART接口功能定義 附錄:SCART 接口功能定義A、傳輸復合視頻信號(Composite Video Only):
    發表于 08-21 22:40 ?7527次閱讀
    SCART<b class='flag-5'>接口</b>功能<b class='flag-5'>定義</b>

    USB接口與miniUSB接口定義

    USB接口與miniUSB接口定義 USB接口定義:
    發表于 12-21 10:54 ?2.6w次閱讀

    常用接口定義

    常用接口定義,常用接口定義,常用接口定義.
    發表于 04-29 17:57 ?20次下載

    SATA的接口定義及硬盤電源接口定義

    SATA接口的pin定義包括:信號電源和數據線接口定義
    發表于 06-16 18:21 ?23次下載

    接口定義 通信接口的作用

    通信接口 在ROS系統中,無論話題還是服務,或者我們后續將要學習的動作,都會用到一個重要的概念——通信接口
    的頭像 發表于 12-01 14:59 ?964次閱讀

    ROS通信接口機制介紹

    ROS通信接口 接口可以讓程序之間的依賴降低,便于我們使用別人的代碼,也方便別人使用我們的代碼,這就是ROS的核心目標,減少重復造輪子。 ROS有三種常用的通信機制,分別是話題、
    的頭像 發表于 12-01 15:03 ?907次閱讀
    ROS<b class='flag-5'>通信</b><b class='flag-5'>接口</b>機制介紹

    話題通信接口定義和運行效果

    話題接口定義與使用 話題通信接口定義也是類似的,繼續從之前的機器視覺案例中來衍生,我們想把服務
    的頭像 發表于 12-01 15:32 ?520次閱讀
    話題<b class='flag-5'>通信</b><b class='flag-5'>接口</b>的<b class='flag-5'>定義</b>和運行效果

    fpga仿真器接口定義

    FPGA(Field-Programmable Gate Array,現場可編程門陣列)仿真器接口定義主要依賴于仿真器的具體設計和所支持的通信協議。在FPGA的設計和仿真過程中,接口
    的頭像 發表于 03-15 14:01 ?1388次閱讀

    SIM卡座的接口定義

    SIM卡座連接器的接口定義是移動通信設備中不可或缺的一部分,確保了SIM卡與設備之間的穩定通信和數據傳輸。在本文中,連欣科技將詳細探討一下SIM卡座的
    的頭像 發表于 06-17 17:47 ?4985次閱讀
    SIM卡座的<b class='flag-5'>接口</b><b class='flag-5'>定義</b>
    主站蜘蛛池模板: 亚洲综合在线观看一区www | 视频在线高清完整免费观看 | 亚洲婷婷综合色高清在线 | 在线免费视频一区二区 | 亚洲第一成网站 | 国产亚洲精品自在久久77 | 久久刺激视频 | 婷婷久久综合九色综合九七 | 激情婷婷丁香 | 国产你懂的在线观看 | 你懂的欧美 | 日本一区二区三区在线 视频观看免费 | 分分操免费视频在线观看 | 免费人成动漫在线播放r18 | 丁香婷婷综合网 | 高h 男男 | 亚洲综合视频一区 | 亚洲淫视频 | 四虎影院免费观看 | 俺来也俺去啦久久综合网 | 亚洲一区二区免费视频 | 中文一区二区在线观看 | 亚洲国产成人精品青青草原100 | 在线资源网 | 天堂资源在线种子资源 | 我不卡老子影院午夜伦我不卡四虎 | 日韩怡红院 | 九九99久久精品影视 | 色五夜婷婷 | 操操干| 色综合久久天天综合观看 | 午夜毛片不卡高清免费 | 国产成人综合网在线播放 | 扒开末成年粉嫩的小缝强文 | 日韩色天使综合色视频 | 操干干 | 国产婷婷综合在线精品尤物 | 国产亚洲精品仙踪林在线播放 | 在线天堂中文 | 人人干人人草 | 国产精品伦子一区二区三区 |