阿克曼-幻宇機器人系列教程3- 機器人交互實踐(Message)

上一篇文章介紹了如何通過topic操作命令實現與機器人的交互,本篇我們介紹如何通過Message(即topic的下一級)實現與機器人的交互。

和topic一樣,首先在一個終端通過ssh命令登錄機器人、啟動機器人,然后打開另外一個終端執行操作命令。

1. Message操作命令

1.1 獲取Message操作命令機器詳解的語句

rosmsg --help

返回的內容,總共6種操作命令?

rosmsg is a command-line tool for displaying information about ROS Message types.Commands:rosmsg show     Show message descriptionrosmsg info     Alias for rosmsg showrosmsg list     List all messagesrosmsg md5      Display message md5sumrosmsg package  List messages in a packagerosmsg packages List packages that contain messagesType rosmsg <command> -h for more detailed usage

2. Message操作命令用法

2.1 命令格式

rosmsg show+消息

2.2 以雷達為例

繼續以/scan為例,它封裝的是雷達數據

在室內機器人移動導航過程中,激光雷達是很重要的傳感器,它時刻反饋機器人周邊的障礙物信息,在機器人建圖、定位、導航算法中起到重要的作用。

在提供的樹莓派固件中,已經編寫和編譯了ROS的激光雷達節點。

rostopic type /scan   #查看雷達數據格式
sensor_msgs/LaserScan

?我們使用rosmsg show來獲取雷達數據內容

rosmsg show sensor_msgs/LaserScan
std_msgs/Header headeruint32 seqtime stampstring frame_idfloat32 angle_minfloat32 angle_maxfloat32 angle_incrementfloat32 time_incrementfloat32 scan_timefloat32 range_minfloat32 range_maxfloat32[] rangesfloat32[] intensities

Header : 是一個結構體,包含 seq、stamp、frame_id。

  • seq 掃描順序增加的 id 序列

  • stamp 激光數據的時間戳

  • frame-id 是掃描數據的名字

  • angle_min:開始掃描的角度

  • angle_max:結束掃描的角度

  • angle_increment:每次掃描增加的角度

  • time_increment:測量的時間間隔

  • scan_time :掃描的時間間隔

  • range_min:測距的最小值

  • range_max:測距的最大值

  • ranges:測量的距離數據,數組長度和雷達分辨率相關

  • intensities:與設備有關,輸出測距強度數據

3. Msaage和Topic的操作關系

至此我們已經把topic和message都進行了介紹,現在我們說明下兩者之間的操作關系。

通常來說先執行topic操作,再執行message操作,因為message是topic的子集。

以機器人雷達為例,首先需要 訂閱或確認 topic,即定義數據傳遞的“頻道”。然后,發布消息 才能通過該頻道成功傳遞數據。這樣的操作順序確保了消息在系統中能夠有效流動。

為何先訂閱 topic 后發布消息?

  • 消息的傳遞是基于訂閱的:
    你可以把訂閱 topic 看作是打開一個接收信道,消息必須通過該信道傳遞才能被正確接收。如果你在沒有訂閱 topic 的情況下發布消息,系統就不知道應該把消息送給誰。換句話說,消息沒有目的地,無法到達消費者端。

  • 話題創建是基礎:
    在這個系統中,topic 就是雷達數據的專用通道。要確保消息能被正確分發,必須先確保 topic 存在,且有正確的訂閱者。

  • 確保系統協調:
    如果一個模塊在訂閱 topic 后,雷達模塊開始發布數據,那么在發布的同時,系統保證訂閱者可以實時收到這些消息。如果沒有預先訂閱,消息的接收者就會錯過或無法處理這些數據。

結合實際操作步驟

  1. 先定義 topic(如果尚未存在),比如 "radar/data"。這告訴系統所有需要接收雷達數據的模塊可以訂閱這個 topic。

  2. 訂閱 topic,比如機器人控制模塊、導航模塊、決策模塊會訂閱 "radar/data",這樣它們就可以接收到雷達傳感器傳來的數據。

  3. 發布消息,雷達傳感器模塊將通過 topic "radar/data" 來發布雷達數據。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/905626.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/905626.shtml
英文地址,請注明出處:http://en.pswp.cn/news/905626.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python 調試擴展版本兼容問題解決紀實

在 Python 開發中&#xff0c;調試工具的正常使用對效率至關重要。近期在公司項目中&#xff0c;便遇到了 Python 調試擴展與版本不兼容的問題。公司 ERP 服務器采用 Ubuntu 18.04 系統&#xff0c;其標配 Python 版本為 3.6&#xff0c;而常用的 Python Debugger 擴展對版本有…

React 第四十二節 Router 中useLoaderData的用途詳解

一、前言 useLoaderData&#xff0c;用于在組件中獲取路由預加載的數據。它通常與路由配置中的 loader 函數配合使用&#xff0c;用于在頁面渲染前異步獲取數據&#xff08;如 API 請求&#xff09;&#xff0c;并將數據直接注入組件&#xff0c;從而簡化數據流管理。 二、us…

Linux——mysql主從復制與讀寫分離

目錄 一&#xff0c;理解什么是mysql主從復制 1&#xff0c;mysql支持的復制類型 2&#xff0c;mysql主從復制的工作流程 二&#xff0c;配置mysql主從復制 三&#xff0c;配置mysql主主復制 四&#xff0c;mysql讀寫分離 1&#xff0c;了解什么是mysql讀寫分離 2&…

MongoDB數據庫深度解析:架構、特性與應用場景

在現代應用程序開發中&#xff0c;數據存儲技術的選擇至關重要。在眾多的數據庫管理系統中&#xff0c;MongoDB以其靈活性和強大的功能迅速崛起&#xff0c;成為NoSQL數據庫中的佼佼者。本文將深入解析MongoDB的架構、核心特性、性能優化及其在實際應用中的最佳實踐&#xff0c…

3D曲面上的TSP問題(一):曲面上點集距離求解

3D曲面上&#xff0c;兩點的距離求解不能采用歐式距離&#xff0c;而需要計算測地線距離。 代碼使用CGAL 5.6.2 OpenCV 4.11.0 版本實現 #include "cgal_utils.h" #include <CGAL/AABB_tree.h> #include <CGAL/AABB_traits.h> #include <CGAL/AABB_…

【歌曲結構】2:小節與歌曲結構信息整合

歌曲小節與結構信息整合 我將為您整合小節信息與歌曲結構,創建一個更加詳細的JSON數據結構。 處理方法 將小節時間與歌曲結構段落進行匹配為每個小節添加所屬段落信息為小節添加格式化的時間戳為小節添加對應時間范圍內的歌詞{"song_title": "財神廟前許三億…

C語言:深入理解指針(3)

目錄 一、數組名的理解 二、用指針訪問數組 三、一維數組傳參的本質 四、冒泡排序 五、二級指針 六、指針數組 七、指針數組模擬二維數組 八、結語 一、數組名的理解 數組名其實就是首元素的地址 int arr[3] {1,2,3}; printf("arr :%p\n" ,arr); printf(…

Spring MVC 接口的訪問方法如何設置

RequestMapping 是 Spring 框架中用于映射 HTTP 請求到控制器方法的注解。它支持以下 HTTP 方法訪問類型&#xff0c;通過 method 屬性指定&#xff1a; GET&#xff1a;用于獲取資源POST&#xff1a;用于提交數據PUT&#xff1a;用于更新資源DELETE&#xff1a;用于刪除資源PA…

linux libdbus使用案例

以下是一個基于 Linux libdbus 的詳細指南,包含服務端和客戶端的完整代碼示例,涵蓋 方法調用、信號發送 和 異步消息處理。libdbus 是 D-Bus 的底層 C 庫,直接操作 D-Bus 協議,適合需要精細控制的場景。 1. libdbus 的核心機制 連接管理:通過 dbus_bus_get 連接系統總線或…

Day118 | 靈神 | 二叉樹 | 刪點成林

Day118 | 靈神 | 二叉樹 | 刪點成林 1110.刪點成林 1110. 刪點成林 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 最直接的思路就是看當前結點的值是不是在要刪除的列表中&#xff0c;在的話刪除當前結點并把左右孩子加入res中 很可惜這樣是錯的&#xff0c;…

趣味編程:鐘表

目錄 1. 效果展示 2. 源碼展示 3. 邏輯概述 3.1 表針繪制函數&#xff08;DrawHand&#xff09; 3.2 表盤繪制函數 3.3 主程序邏輯 4. 小結 概述&#xff1a;本篇博客主要介紹簡易鐘表的繪制。 1. 效果展示 該鐘表會隨著系統的時間變化而變化&#xff0c;動態的效…

ansible進階02

管理主機清單變量 使用變量的原則 變量創建的位置 角色的defaults或vars目錄主機清單playbook或主機清單所在位置的子目錄group_vars和host_varsplay或角色或任務 無論在哪創建變量&#xff0c;都應該遵守一些規則&#xff1a; 保持簡潔不要重復造輪子。不要反復在多個位置…

C40-指針

一 指針的引入 什么是指針:指針是一個變量&#xff0c;其值是另一個變量的內存地址 簡單的使用地址輸出一個變量: 代碼示例 #include <stdio.h> int main() {int a10;printf("a的地址是:%p\n",&a);printf("a%d\n",*(&a)); //*號是取值運算符…

Nginx 返回 504 狀態碼表示 網關超時(Gateway Timeout)原因排查

Nginx 返回 504 狀態碼表示 網關超時&#xff08;Gateway Timeout&#xff09;&#xff0c;這意味著 Nginx 作為反向代理服務器&#xff0c;在等待上游服務器&#xff08;如后端應用服務器、數據庫服務器等&#xff09;響應時&#xff0c;超過了預設的時間限制&#xff0c;最終…

DeepSeek推理優化技巧:提升速度與降低成本

文章目錄 DeepSeek推理優化技巧&#xff1a;提升速度與降低成本引言一、模型優化&#xff1a;減少模型參數與計算量1. 模型剪枝&#xff08;Pruning&#xff09;2. 模型量化&#xff08;Quantization&#xff09;3. 知識蒸餾&#xff08;Knowledge Distillation&#xff09; 二…

深度解析 Sora:從技術原理到多場景實戰的 AI 視頻生成指南【附學習資料包下載】

一、技術架構與核心能力解析 1.1 時空建模體系的創新突破 Sora 在視頻生成領域的核心優勢源于其獨特的時空建模架構。區別于傳統將視頻拆解為單幀處理的模式,Sora 采用時空 Patch 嵌入技術,將連續視頻序列分割為 32x32 像素的時空塊(每個塊包含相鄰 3 幀畫面),通過線性投…

【實戰篇】數字化打印——打印部署管理接口開發

前言 前面的章節已經介紹了打印管理模塊的主要界面設計&#xff0c;本篇介紹用myBuilder開發界面接口&#xff0c;實現最終的功能。 1. 配置打印應用菜單 首先配置掛載好模塊菜單 讓菜單點擊能訪問到對應的頁面 2. 打印部署管理數據表詳細設計 以下是打印部署管理的數據表字…

Window下Jmeter多機壓測方法

1.概述 Jmeter多機壓測的原理&#xff0c;是通過單個jmeter客戶端&#xff0c;控制多個遠程的jmeter服務器&#xff0c;使他們同步的對服務器進行壓力測試。 以此方式收集測試數據的好處在于&#xff1a; 保存測試采樣數據到本地機器通過單臺機器管理多個jmeter執行引擎測試…

ResourceBundle多語言國際化

在 Java 中&#xff0c;ResourceBundle 是一個用于國際化&#xff08;i18n&#xff09;和本地化&#xff08;l10n&#xff09;的一種機制&#xff0c;它使得程序能夠根據不同的區域設置&#xff08;如語言、國家等&#xff09;加載不同的資源文件。ResourceBundle 主要用于從外…

精益數據分析(62/126):從客戶訪談評分到市場規模估算——移情階段的實戰進階

精益數據分析&#xff08;62/126&#xff09;&#xff1a;從客戶訪談評分到市場規模估算——移情階段的實戰進階 在創業的移情階段&#xff0c;科學評估用戶需求與市場潛力是決定產品方向的關鍵。今天&#xff0c;我們結合Cloud9 IDE的實戰經驗與《精益數據分析》的方法論&…