ROS命令列工具

panfengblog發表於2020-11-08

ROS命令列工具

這裡主要參考了wiki上的ros文件,還有需要命令沒有包含到,便用邊學吧,當然建議使用萬能的--help : )

1. 常用使用者工具

1.1 roscore

使用roscore命令啟動ros的核心節點(包括Master, Paremeter Server, rosout等等),啟動時直接執行如下命令即可:

roscore

B5TpOs.png


1.2 rosrun

我們使用rosrun命令來執行某個功能包中的某個節點,如下是幫助資訊

Usage: rosrun [--prefix cmd] [--debug] PACKAGE EXECUTABLE [ARGS]
  rosrun will locate PACKAGE and try to find
  an executable named EXECUTABLE in the PACKAGE tree.
  If it finds it, it will run it with ARGS.

主要使用方法是:

rosrun [功能包名] [節點名]

舉個例子,執行我們的小海龜模擬節點

B57Fud.png


1.3 rosnode

使用rosnode命令可以列印出ROS節點的資訊,命令如下

rosnode is a command-line tool for printing information about ROS Nodes.

Commands:
	rosnode ping	test connectivity to node
	rosnode list	list active nodes
	rosnode info	print information about node
	rosnode machine	list nodes running on a particular machine or list machines
	rosnode kill	kill a running node
	rosnode cleanup	purge registration information of unreachable nodes

Type rosnode <command> -h for more detailed usage, e.g. 'rosnode ping -h'

舉個例子:

檢視當前節點列表(rosout節點是ros預設的一個節點,用於採集節點資訊):

rosnode list

B5TccQ.png

檢視小海龜模擬節點的詳細資訊(釋出資訊、訂閱資訊、服務、程式PID等等):

rosnode info /turtlesim

B573bn.png


1.4 rostopic

主要用於列印當前的一些話題資訊

rostopic is a command-line tool for printing information about ROS Topics.

Commands:
	rostopic bw	display bandwidth used by topic
	rostopic delay	display delay of topic from timestamp in header
	rostopic echo	print messages to screen
	rostopic find	find topics by type
	rostopic hz	display publishing rate of topic    
	rostopic info	print information about active topic
	rostopic list	list active topics
	rostopic pub	publish data to topic
	rostopic type	print topic or field type

舉個例子:
檢視當前的話題:

rostopic list

B5HGsH.png

其中的/turtle1/cmd_vel就是我們控制小海龜的一個話題,我們可以使用rostopic pub命令(使用--help獲取命令細節)給想該話題釋出資料。比如說我們這裡給小海龜釋出資料(linear是線速度,angular是角速度,一般使用常用單位m/s和rad/s,這就是這個訊息的資料結構):

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: 0.0"

然後就能看到小海龜向前跑動了,但是很快停了下來,因為我們只發布了一次資料,我們可以靈活的使用引數定義這個釋出的過程(如加-r設定釋出頻率,-1釋出一次退出等等,萬能的help命令!)


1.5 rosmsg

rosmsg命令用於檢視話題訊息(Message)的資料結構的定義

rosmsg is a command-line tool for displaying information about ROS Message types.

Commands:
	rosmsg show	Show message description
	rosmsg info	Alias for rosmsg show
	rosmsg list	List all messages
	rosmsg md5	Display message md5sum
	rosmsg package	List messages in a package
	rosmsg packages	List packages that contain messages

Type rosmsg <command> -h for more detailed usage

舉個例子:

我們現在檢視控制小海龜話題的訊息的資料結構,我們首先使用rostopic info檢視話題的詳細資訊,獲得訊息名,然後再使用rosmsg show檢視訊息的資料結構,可以看到六個速度都是使用float64資料格式。

B5LTOg.png


1.6 rosservice

rosservice命令用於檢視和控制服務相關資訊

Commands:
	rosservice args	print service arguments
	rosservice call	call the service with the provided args
	rosservice find	find services by service type
	rosservice info	print information about service
	rosservice list	list active services
	rosservice type	print service type
	rosservice uri	print service ROSRPC uri

Type rosservice <command> -h for more detailed usage, e.g. 'rosservice call -h'

舉個例子:
我們檢視當前存在的服務

rosservice list

B5XCgf.png

然後我們將當前的終端作為客戶端,小海龜模擬器作為服務端,使用rosservice call命令呼叫/spawn服務(產卵服務)產生一個新的小海龜:

rosservice call /spawn "x: 3.0
y: 3.0
theta: 0.0
name: 'turtle2'" 
name: "turtle2"

BIpbi4.png

產生了一隻新的小海龜,我們對應的話題也就相應增加了,簡單檢視一下:

BICH29.png

1.7 rosbag

rosbag命令可以通過記錄訊息包(bag)或者傳送訊息包來實現過程的記錄與復現(模擬),所謂訊息包(bag)就是一串訊息的序列。

Usage: rosbag <subcommand> [options] [args]

A bag is a file format in ROS for storing ROS message data. The rosbag command can record, replay and manipulate bags.

Available subcommands:
   check  	Determine whether a bag is playable in the current system, or if it can be migrated.
   compress  	Compress one or more bag files.
   decompress  	Decompress one or more bag files.
   decrypt  	Decrypt one or more bag files.
   encrypt  	Encrypt one or more bag files.
   filter  	Filter the contents of the bag.
   fix  	Repair the messages in a bag file so that it can be played in the current system.
   help  
   info  	Summarize the contents of one or more bag files.
   play  	Play back the contents of one or more bag files in a time-synchronized fashion.
   record  	Record a bag file with the contents of specified topics.
   reindex  	Reindexes one or more bag files.

For additional information, see http://wiki.ros.org/rosbag

舉個例子:

我們現在使用bag記錄我們用鍵盤操控小海龜的過程,然後儲存訊息bag用於後續復現。

使用rosbag record記錄小海龜的message,執行如下命令(-a記錄全部訊息,-O 輸出為檔案,更多命令引數參考–help),然後我們移動小海龜。

rosbag record -a -O turtle_path

記錄完成後 ctrl+c 結束記錄,可以看到儲存到了當前目錄下:

BIkDLn.png

然後我們執行這個訊息bag

rosbag play turtle_path.bag 

就可以發現小海龜復現了之前用鍵盤操作的過程(這裡我重新開了個小海龜)

BIkbFK.png

2. 視覺化工具

2.1 rxgraph

rxgraph用於顯示ROS節點以及話題的計算圖。

其中rosgraph是命令列版本,rqt_graph的基於QT開發的圖形介面版本

執行rosgraph可以看到節點資訊(以及入站出站介面)和服務資訊(Services)

B5IhKs.png

執行rqt_graph ,可以以圖形介面的形式展示計算圖

B5PO9H.png

相關文章