色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何在代碼中配置DDS編程示例

麥辣雞腿堡 ? 來源:古月居 ? 作者:古月 ? 2023-11-24 18:08 ? 次閱讀

DDS編程示例
我們嘗試在代碼中配置DDS,以之前Hello World話題通信為例。

圖片

運行效果

啟動兩個終端,分別運行發(fā)布者和訂閱者節(jié)點:

$ ros2 run learning_qos qos_helloworld_pub
$ ros2 run learning_qos qos_helloworld_sub

可以看到兩個終端中的通信效果如下,和之前貌似并沒有太大區(qū)別。

圖片

圖片

看效果確實差不多,不過底層通信機(jī)理上可是有所不同的。

發(fā)布者代碼解析

我們看下在代碼中,如果加入QoS的配置。

learning_qos/qos_helloworld_pub.py

#!/usr/bin/env python3# -*- coding: utf-8 -*-"""@作者: 古月居(www.guyuehome.com)@說明: ROS2 QoS示例-發(fā)布“Hello World”話題"""import rclpy                     # ROS2 Python接口庫from rclpy.node import Node      # ROS2 節(jié)點類from std_msgs.msg import String  # 字符串消息類型from rclpy.qos import QoSProfile, QoSReliabilityPolicy, QoSHistoryPolicy # ROS2 QoS類"""創(chuàng)建一個發(fā)布者節(jié)點"""class PublisherNode(Node):    def __init__(self, name):        super().__init__(name)        # ROS2節(jié)點父類初始化        qos_profile = QoSProfile(     # 創(chuàng)建一個QoS原則            # reliability=QoSReliabilityPolicy.BEST_EFFORT,            reliability=QoSReliabilityPolicy.RELIABLE,            history=QoSHistoryPolicy.KEEP_LAST,            depth=1        )        self.pub = self.create_publisher(String, "chatter", qos_profile) # 創(chuàng)建發(fā)布者對象(消息類型、話題名、QoS原則)        self.timer = self.create_timer(0.5, self.timer_callback)         # 創(chuàng)建一個定時器(單位為秒的周期,定時執(zhí)行的回調(diào)函數(shù))    def timer_callback(self):                                # 創(chuàng)建定時器周期執(zhí)行的回調(diào)函數(shù)        msg = String()                                       # 創(chuàng)建一個String類型的消息對象        msg.data = 'Hello World'                             # 填充消息對象中的消息數(shù)據(jù)        self.pub.publish(msg)                                # 發(fā)布話題消息        self.get_logger().info('Publishing: "%s"' % msg.data)# 輸出日志信息,提示已經(jīng)完成話題發(fā)布def main(args=None):                           # ROS2節(jié)點主入口main函數(shù)    rclpy.init(args=args)                      # ROS2 Python接口初始化    node = PublisherNode("qos_helloworld_pub") # 創(chuàng)建ROS2節(jié)點對象并進(jìn)行初始化    rclpy.spin(node)                           # 循環(huán)等待ROS2退出    node.destroy_node()                        # 銷毀節(jié)點對象    rclpy.shutdown()                           # 關(guān)閉ROS2 Python接口

完成代碼的編寫后需要設(shè)置功能包的編譯選項,讓系統(tǒng)知道Python程序的入口,打開功能包的setup.py文件,加入如下入口點的配置:

entry_points={    'console_scripts': [     'qos_helloworld_pub  = learning_qos.qos_helloworld_pub:main',},

訂閱者代碼解析

訂閱者中的QoS配置和發(fā)布者類似。

learning_qos/qos_helloworld_sub.py

#!/usr/bin/env python3# -*- coding: utf-8 -*-"""@作者: 古月居@說明: ROS2 QoS示例-訂閱“Hello World”話題消息"""import rclpy                                     # ROS2 Python接口庫
from rclpy.node   import Node                    # ROS2 節(jié)點類
from std_msgs.msg import String                  # ROS2標(biāo)準(zhǔn)定義的String消息from rclpy.qos import QoSProfile, QoSReliabilityPolicy, QoSHistoryPolicy  # ROS2 QoS類"""創(chuàng)建一個訂閱者節(jié)點"""class SubscriberNode(Node):    def __init__(self, name):        super().__init__(name)         # ROS2節(jié)點父類初始化        qos_profile = QoSProfile(      # 創(chuàng)建一個QoS原則            # reliability=QoSReliabilityPolicy.BEST_EFFORT,            reliability=QoSReliabilityPolicy.RELIABLE,            
history=QoSHistoryPolicy.KEEP_LAST,            depth=1        )        self.sub = self.create_subscription(            String, "chatter", self.listener_callback, qos_profile) # 創(chuàng)建訂閱者對象(消息類型、話題名、訂閱者回調(diào)函數(shù)、QoS原則)    
def listener_callback(self, msg):                      # 創(chuàng)建回調(diào)函數(shù),執(zhí)行收到話題消息后對數(shù)據(jù)的處理        self.get_logger().info('I heard: "%s"' % msg.data) # 輸出日志信息,提示訂閱收到的話題消息def main(args=None):                               # ROS2節(jié)點主入口main函數(shù)    rclpy.init(args=args)                          # ROS2 Python接口初始化    node = SubscriberNode("qos_helloworld_sub")    # 創(chuàng)建ROS2節(jié)點對象并進(jìn)行初始化    rclpy.spin(node)                               # 循環(huán)等待ROS2退出    
node.destroy_node()                            # 銷毀節(jié)點對象    rclpy.shutdown()                               # 關(guān)閉ROS2 Python接口

完成代碼的編寫后需要設(shè)置功能包的編譯選項,讓系統(tǒng)知道Python程序的入口,打開功能包的setup.py文件,加入如下入口點的配置:

entry_points={    'console_scripts': [     'qos_helloworld_pub  = learning_qos
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 機(jī)器人
    +關(guān)注

    關(guān)注

    211

    文章

    28390

    瀏覽量

    206947
  • 通信
    +關(guān)注

    關(guān)注

    18

    文章

    6029

    瀏覽量

    135954
  • DDS
    DDS
    +關(guān)注

    關(guān)注

    21

    文章

    633

    瀏覽量

    152635
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4780

    瀏覽量

    68535
收藏 人收藏

    評論

    相關(guān)推薦

    何在MCUxpresso IDE的外設(shè)配置USB?

    我必須在 MCUxpresso IDE 中使用 LPC54113 實現(xiàn) USB 協(xié)議代碼。請?zhí)峁┮韵略敿?xì)信息,1. 如何在 MCUxpresso IDE 的外設(shè)配置 USB。2.US
    發(fā)表于 04-04 06:22

    仿射變換綜合示例_《OpenCV3編程入門》書本配套源代碼

    《OpenCV3編程入門》書本配套源代碼:仿射變換綜合示例
    發(fā)表于 06-06 15:39 ?5次下載

    實現(xiàn)多種重映射綜合示例_《OpenCV3編程入門》書本配套源代碼

    《OpenCV3編程入門》書本配套源代碼:實現(xiàn)多種重映射綜合示例
    發(fā)表于 06-06 15:39 ?4次下載

    漫水填充算法綜合示例_《OpenCV3編程入門》書本配套源代碼

    《OpenCV3編程入門》書本配套源代碼:漫水填充算法綜合示例
    發(fā)表于 06-06 15:39 ?2次下載

    形態(tài)學(xué)圖像處理綜合示例_《OpenCV3編程入門》書本配套源代碼

    《OpenCV3編程入門》書本配套源代碼:形態(tài)學(xué)圖像處理綜合示例
    發(fā)表于 06-06 15:52 ?8次下載

    線性圖像濾波綜合示例_《OpenCV3編程入門》書本配套源代碼

    《OpenCV3編程入門》書本配套源代碼:線性圖像濾波綜合示例
    發(fā)表于 06-06 15:52 ?8次下載

    圖像金字塔和resize綜合示例_《OpenCV3編程入門》書本配套源代碼

    《OpenCV3編程入門》書本配套源代碼:圖像金字塔和resize綜合示例
    發(fā)表于 06-06 15:52 ?3次下載

    圖像濾波綜合示例_《OpenCV3編程入門》書本配套源代碼

    《OpenCV3編程入門》書本配套源代碼:圖像濾波綜合示例
    發(fā)表于 06-06 15:52 ?6次下載

    何在代碼添加注釋

    什么是代碼注釋,如何在代碼添加注釋,相信每一位了解編程的人并不陌生。注釋里往往有很多有趣的腦洞和「真心話」
    的頭像 發(fā)表于 10-17 10:53 ?1.1w次閱讀

    Megawin 8051 MCU的IAP(應(yīng)用程序編程示例代碼

    Megawin 8051 MCU的IAP(應(yīng)用程序編程示例代碼分享
    發(fā)表于 07-01 10:36 ?3次下載
    Megawin 8051 MCU的IAP(應(yīng)用程序<b class='flag-5'>編程</b>)<b class='flag-5'>示例</b><b class='flag-5'>代碼</b>

    何在易e語言代碼中使用HTTP代理IP

    何在易e語言代碼中使用HTTP代理IP,示例代碼demo直接可用(步驟注釋清晰)
    的頭像 發(fā)表于 08-05 16:29 ?6929次閱讀

    何在c語言代碼中使用HTTP代理IP

    何在c語言代碼中使用HTTP代理IP,示例代碼demo直接可用(步驟注釋清晰)
    的頭像 發(fā)表于 08-05 16:31 ?2345次閱讀

    何在c#語言代碼中使用HTTP代理IP

    何在c#語言代碼中使用HTTP代理IP,示例代碼demo直接可用(步驟注釋清晰)
    的頭像 發(fā)表于 08-05 16:33 ?2597次閱讀

    移動數(shù)據(jù)的編程示例

    編程示例 在此編程示例,將移動在生產(chǎn)班次期間為示例收集的數(shù)據(jù)值以作進(jìn)一步處理。收集的數(shù)據(jù)放在
    的頭像 發(fā)表于 08-23 10:10 ?1393次閱讀
    移動數(shù)據(jù)的<b class='flag-5'>編程</b><b class='flag-5'>示例</b>

    何在命令行配置DDS

    DDS這么好,那該如何配置和使用呢?我們先帶大家入個門。 案例一:在命令行配置DDS 我們先來試一試在命令行
    的頭像 發(fā)表于 11-24 18:03 ?976次閱讀
    如<b class='flag-5'>何在</b>命令行<b class='flag-5'>中</b><b class='flag-5'>配置</b><b class='flag-5'>DDS</b>
    主站蜘蛛池模板: 北条麻妃快播| 穿着丝袜被男生强行啪啪| 百度影音第四色| 国产毛A片久久久久久无码| 久久精品热99看| 肉肉高潮液体高干文H| 伊人久久大香线蕉观看| xxxxx中国明星18| 精品亚洲欧美中文字幕在线看| 欧美亚洲日韩欧洲不卡| 亚洲国产中文字幕在线视频| 99久久国产免费福利| 黄色三级三级免费看| 青青草在线视频| 伊人草久久| 国产精品青青青高清在线密亚| 免费国产在线观看| 亚洲视频一区| 国产老肥熟xxxx| 日本片bbbxxx| caoporm国产精品视频免费| 久久精品亚洲| 亚洲伦理精品久久| 国产精品视频免费视频| 青草精品国产福利在线视频| 最近中文字幕在线看免费完整版| 国产做国产爱免费视频| 无码射肉在线播放视频| 丰满五十老女人性视频| 欧美精品一区二区蜜臀亚洲| 诱人的女邻居9中文观看| 精选国产AV精选一区二区三区| 色欲久久精品AV无码| 插我一区二区在线观看| 日本 一二三 不卡 免费| avtt一区| 日本人六九视频| 动漫美女的禁| 我的奶头被客人吸的又肿又红| 俄罗斯人与动ZOZ0| 天天澡夜夜澡人人澡|