1. 程式人生 > 其它 >2.4 常用命令

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

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 校驗(加密)