2.4 常用命令
2.4 常用命令
機器人系統中啟動的節點少則幾個,多則十幾個、幾十個,不同的節點名稱各異,通訊時使用話題、服務、訊息、引數等等都各不相同,一個顯而易見的問題是: 當需要自定義節點和其他某個已經存在的節點通訊時,如何獲取對方的話題、以及訊息載體的格式呢?
在 ROS 同提供了一些實用的命令列工具,可以用於獲取不同節點的各類資訊,常用的命令如下:
- rosnode : 操作節點
- rostopic : 操作話題
- rosservice : 操作服務
- rosmsg : 操作msg訊息
- rossrv : 操作srv訊息
- rosparam : 操作引數
作用
和之前介紹的檔案系統操作命令比較,檔案操作命令是靜態的,操作的是磁碟上的檔案,而上述命令是動態的,在ROS程式啟動後,可以動態的獲取執行中的節點或引數的相關資訊。
案例
本節將藉助於2.1、2.2和2.3的通訊實現介紹相關命令的基本使用,並通過練習ROS內建的小海龜例程來強化命令的應用。
另請參考:
2.4.1 rosnode
rosnode 是用於獲取節點資訊的命令
rosnode ping 測試到節點的連線狀態 rosnode list 列出活動節點 rosnode info 列印節點資訊 rosnode machine 列出指定裝置上節點 rosnode kill 殺死某個節點 rosnode cleanup 清除不可連線的節點
-
rosnode ping
測試到節點的連線狀態
-
rosnode list
列出活動節點
-
rosnode info
列印節點資訊
-
rosnode machine
列出指定裝置上的節點
-
rosnode kill
殺死某個節點
-
rosnode cleanup
清除無用節點,啟動烏龜節點,然後 ctrl + c 關閉,該節點並沒被徹底清除,可以使用 cleanup 清除節點
2.4.2 rostopic(用於釋出訂閱模型中)
rostopic包含rostopic命令列工具,用於顯示有關ROS 主題的除錯資訊,包括髮布者,訂閱者,釋出頻率和ROS訊息。它還包含一個實驗性Python庫,用於動態獲取有關主題的資訊並與之互動。
rostopic bw 顯示主題使用的頻寬
rostopic delay 顯示帶有 header 的主題延遲
rostopic echo 列印訊息到螢幕
rostopic find 根據型別查詢主題
rostopic hz 顯示主題的釋出頻率
rostopic info 顯示主題相關資訊
rostopic list 顯示所有活動狀態下的主題
rostopic pub 將資料釋出到主題
rostopic type 列印主題型別
-
rostopic list(-v)
直接呼叫即可,控制檯將列印當前執行狀態下的主題名稱
rostopic list -v : 獲取話題詳情(比如列出:釋出者和訂閱者個數...)
-
rostopic pub(相當於釋出者)
可以直接呼叫命令向訂閱者釋出訊息
為roboware 自動生成的 釋出/訂閱 模型案例中的 訂閱者 釋出一條字串
rostopic pub /主題名稱 訊息型別 訊息內容
rostopic pub /chatter std_msgs gagaxixi
為 小烏龜案例的 訂閱者 釋出一條運動資訊
rostopic pub /turtle1/cmd_vel geometry_msgs/Twist
"linear:
x: 1.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 2.0"
//只發布一次運動資訊
rostopic pub -r 10 /turtle1/cmd_vel geometry_msgs/Twist
"linear:
x: 1.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 2.0"
// 以 10HZ 的頻率迴圈傳送運動資訊
-
rostpic echo(相當於訂閱者)
獲取指定話題當前釋出的訊息
-
rostopic info
獲取當前話題的小關資訊
訊息型別
釋出者資訊
訂閱者資訊
-
rostopic type
列出話題的訊息型別
-
rostopic find 訊息型別
根據訊息型別查詢話題
-
rostopic delay
列出訊息頭資訊
-
rostopic hz
列出訊息釋出頻率
-
rostopic bw
列出訊息釋出頻寬
2.4.3 rosmsg(用於釋出訂閱模型)
rosmsg是用於顯示有關 ROS訊息型別的 資訊的命令列工具。
rosmsg 演示
rosmsg show 顯示訊息描述
rosmsg info 顯示訊息資訊
rosmsg list 列出所有訊息
rosmsg md5 顯示 md5 加密後的訊息
rosmsg package 顯示某個功能包下的所有訊息
rosmsg packages 列出包含訊息的功能包
-
rosmsg list(列出訊息型別)
會列出當前 ROS 中的所有 msg
-
rosmsg packages
列出包含訊息的所有包
-
rosmsg package
列出某個包下的所有msg
//rosmsg package 包名
rosmsg package turtlesim
rosmsg show
顯示訊息描述
//rosmsg show 訊息名稱
rosmsg show turtlesim/Pose
結果:
float32 x
float32 y
float32 theta
float32 linear_velocity
float32 angular_velocity
-
rosmsg info
作用與 rosmsg show 一樣
-
rosmsg md5 (資料:http://wiki.ros.org/ROS/Technical%20Overview#Message_serialization_and_msg_MD5_sums)
一種校驗演算法,保證資料傳輸的一致性
2.4.4 rosservice(用於服務通訊模型)
rosservice包含用於列出和查詢ROSServices的rosservice命令列工具。
呼叫部分服務時,如果對相關工作空間沒有配置 path,需要進入工作空間呼叫 source ./devel/setup.bash
rosservice args 列印服務引數
rosservice call 使用提供的引數呼叫服務
rosservice find 按照服務型別查詢服務
rosservice info 列印有關服務的資訊
rosservice list 列出所有活動的服務
rosservice type 列印服務型別
rosservice uri 列印服務的 ROSRPC uri
rosservice list
列出所有活動的 service
~ rosservice list
/clear
/kill
/listener/get_loggers
/listener/set_logger_level
/reset
/rosout/get_loggers
/rosout/set_logger_level
/rostopic_4985_1578723066421/get_loggers
/rostopic_4985_1578723066421/set_logger_level
/rostopic_5582_1578724343069/get_loggers
/rostopic_5582_1578724343069/set_logger_level
/spawn
/turtle1/set_pen
/turtle1/teleport_absolute
/turtle1/teleport_relative
/turtlesim/get_loggers
/turtlesim/set_logger_level
rosservice args
列印服務引數
rosservice args /spawn
x y theta name
rosservice call
呼叫服務
為小烏龜的案例生成一隻新的烏龜
rosservice call /spawn "x: 1.0
y: 2.0
theta: 0.0
name: 'xxx'"
name: "xxx"
//生成一隻叫 xxx 的烏龜
-
rosservice find
根據訊息型別獲取話題
-
rosservice info
獲取服務話題詳情
-
rosservice type
獲取訊息型別
-
rosservice uri
獲取伺服器 uri
2.4.5 rossrv
rossrv是用於顯示有關ROS服務型別的資訊的命令列工具,與 rosmsg 使用語法高度雷同。
rossrv show 顯示服務訊息詳情
rossrv info 顯示服務訊息相關資訊
rossrv list 列出所有服務資訊
rossrv md5 顯示 md5 加密後的服務訊息
rossrv package 顯示某個包下所有服務訊息
rossrv packages 顯示包含服務訊息的所有包
-
rossrv list
會列出當前 ROS 中的所有 srv 訊息
-
rossrv packages
列出包含服務訊息的所有包
-
rossrv package
列出某個包下的所有msg
//rossrv package 包名
rossrv package turtlesim
rossrv show
顯示訊息描述
//rossrv show 訊息名稱
rossrv show turtlesim/Spawn
結果:
float32 x
float32 y
float32 theta
string name
---
string name
-
rossrv info
作用與 rossrv show 一致
-
rossrv md5
對 service 資料使用 md5 校驗(加密)