ROS2学习(十一).ROS概念 - 命令行工具的使用
生活随笔
收集整理的這篇文章主要介紹了
ROS2学习(十一).ROS概念 - 命令行工具的使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
命令行工具
- 概述
- 用法
- 樣例
- 其他說明
- 實現
概述
ROS 2包含有一系列的命令行工具用以對ROS 2系統觀測。
用法
命令ros2是所有命令的入口,它具有各種子命令,用于觀察并處理節點、主題、服務等。
要查看所有的子命令,請運行
ros2 --help
子命令包括:
- action : 對ROS action的讀寫
- bag : 記錄/回放rosbag
- component : 管理組件容器
- daemon : 對ROS 2守護進程的讀寫
- doctor : 檢查ROS關于潛在問題的配置
- interface : 顯示ROS interface的信息
- launch : 查看或運行一個launch文件
- lifecycle : 查看或管理節點的生命周期
- multicast : 查看管理廣播
- node : 查看ROS節點
- param : 查看、配置節點參數
- pkg : 查看ROS包
- run : 運行ROS節點
- security :配置安全設定
- service :查看、調用ROS服務
- topic :查看、發布ROS主題
- wtf :采用wtf作為doctor的別名
樣例
使用命令行工具可以運行一個發布-監聽的樣例,可以使用topic子命令來發布和顯示話題中的消息。
在一個終端中發布消息:
$ ros2 topic pub /chatter std_msgs/String "data: Hello world" 1628647237.530682 [0] ros2: using network interface eno1 (udp/192.168.254.24) selected arbitrarily from: eno1, lxdbr0 publisher: beginning loop publishing #1: std_msgs.msg.String(data='Hello world')publishing #2: std_msgs.msg.String(data='Hello world')publishing #3: std_msgs.msg.String(data='Hello world')在另一個終端中,可以打印接收到的消息
$ ros2 topic echo /chatter 1628647264.220949 [0] ros2: using network interface eno1 (udp/192.168.254.24) selected arbitrarily from: eno1, lxdbr0 data: Hello world --- data: Hello world --- data: Hello world --- data: Hello world --- data: Hello world其他說明
ROS2使用分布式發現過程以使得節點之間可以互相連接。不像ROS1的ROS Master,ROS2中并未使用集中式的發現機制,因此ROS節點發現ROS圖中的所有其他參與者需要花費一定的時間。因此后臺有一個長時間運行的守護進程,用以存儲ROS圖的信息,以更快地響應例如節點名稱列表等的查詢。
第一次使用命令行工具時,守護進程將自動啟動。您也可以運行ros2 daemon --help命令查看如何使用守護進程。
但是目前看來,這個命令只支持啟動、停止和查看啟動狀態三種子命令:)
實現
ros2命令的源碼可以在https://github.com/ros2/ros2cli上找到。
ros2工具目前被實現為一個框架,可以通過插件進行擴展。
例如,sros2包提供了security子命令,如果安裝了sros2包,該命令會被ros2工具自動檢測到。
總結
以上是生活随笔為你收集整理的ROS2学习(十一).ROS概念 - 命令行工具的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ROS2学习(十).ROS概念 - 主题
- 下一篇: ROS2学习(十二).ROS概念 - R