ROS常用命令匯總


ROS系統也是通過命令行操作,總結了下平時工作中使用的命令工具,以后使用多會陸續添加.

查看ROS_PACKAGE_PATH環境變量

$ echo $ROS_PACKAGE_PATH
/home/saneri/catkin_ws/src:/opt/ros/kinetic/share

roscore  命令是你在運行所有ROS程序前首先要運行的命令。

$ roscore

rosrun 命令
rosrun 允許你使用包名直接運行一個包內的節點(而不需要知道這個包的路徑)。

用法:

$ rosrun [package_name] [node_name]

現在我們可以運行turtlesim包中的 turtlesim_node節點,你會看到打開了一個 turtlesim 窗口:

$ rosrun turtlesim turtlesim_node

rosls 命令
rosls是rosbash命令集中的一部分,它允許你直接按軟件包的名稱而不是絕對路徑執行ls命令(羅列目錄).

用法:
# rosls  [ 本地包名稱[/子目錄] ]

示例:

$ rosls beginner_tutorials/
CMakeLists.txt  include  package.xml  src

roscd 命令
roscd是rosbash命令集中的一部分,它允許你直接切換(cd)工作目錄到某個軟件包或者軟件包集當中。
用法:
# roscd [ 本地包名稱[/子目錄] ]

示例:

saneri@localhost:~$ roscd roscpp
saneri@localhost:/opt/ros/kinetic/share/roscpp$ pwd
/opt/ros/kinetic/share/roscpp

roscd log命令
使用roscd log可以切換到ROS保存日記文件的目錄下。需要注意的是,如果你沒有執行過任何ROS程序,系統會報錯說該目錄不存在。

如果你已經運行過ROS程序,那么可以嘗試:

$ roscd log

rosnode 命令
rosnode 顯示當前運行的ROS節點信息

rosnode list                  獲得運行節點列表
rosnode info node-name        獲得特定節點的信息
rosnode ping  node-name       測試節點是否連通
rosnode kill node-name        終止節點

rosed 命令
rosed 是 rosbash 的一部分。利用它可以直接通過package名來獲取到待編輯的文件而無需指定該文件的存儲路徑了。
使用方法

$ rosed [package_name] [filename]

例子:

$ rosed roscpp Logger.msg

這個實例展示了如何編輯roscpp package里的Logger.msg文件。

rospack 命令
rospack允許你獲取軟件包的有關信息

用法:
# rospack find [包名稱]
實例:
#要找到一個軟件包的目錄,使用 rospack find命令

$ rospack find roscpp
/opt/ros/kinetic/share/roscpp

$ rospack list                  #顯示出當前的包信息

$ rospack depends1 beginner_tutorials        #顯示當前包的一級依賴

$ rospack depends beginner_tutorials     #顯示當前包的所有依賴

rostopic 命令
rostopic命令工具能讓你獲取有關ROS話題的信息。
你可以使用幫助選項查看rostopic的子命令:

$ rostopic -h
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
rostopic list能夠列出所有當前訂閱和發布的話題,讓我們查看一下list子命令需要的參數.

$ rostopic list -h
Usage: rostopic list [/namespace]

Options:
  -h, --help            show this help message and exit(顯示此幫助消息並退出)
  -b BAGFILE, --bag=BAGFILE
                        list topics in .bag file(列出.bag文件中的主題)
  -v, --verbose         list full details about each topic(列出每個主題的完整詳細信息)
  -p                    list only publishers(僅列出發布商)
  -s                    list only subscribers(僅列出訂閱者)
  --host                group by host name(按主機名分組)

在rostopic list 中使用 verbose 選項,這會顯示出有關所發布和訂閱的話題及其類型的詳細信息。

$ rostopic list -v

Published topics:
 * /turtle1/color_sensor [turtlesim/Color] 1 publisher
 * /turtle1/cmd_vel [geometry_msgs/Twist] 1 publisher
 * /rosout [rosgraph_msgs/Log] 3 publishers
 * /rosout_agg [rosgraph_msgs/Log] 1 publisher
 * /turtle1/pose [turtlesim/Pose] 1 publisher

Subscribed topics:
 * /turtle1/cmd_vel [geometry_msgs/Twist] 1 subscriber
 * /rosout [rosgraph_msgs/Log] 1 subscriber
 * /statistics [rosgraph_msgs/TopicStatistics] 1 subscriber

僅列出發布者

$ rostopic list -p
/rosout
/rosout_agg
/turtle1/cmd_vel
/turtle1/color_sensor
/turtle1/pose

僅列出訂閱者

$ rostopic list -s
/rosout
/statistics
/turtle1/cmd_vel

rostopic echo 可以顯 示在某個話題上發布的數據.

$ rostopic echo /rosout_agg

rostopic type 命令用來查看所發布話題的消息類型。

$ rostopic type /turtle1/color_sensor
turtlesim/Color
$ rostopic type /turtle1/cmd_vel
geometry_msgs/Twist

我們可以使用rosmsg命令來查看消息的詳細情況。

$ rosmsg show geometry_msgs/Twist
geometry_msgs/Vector3 linear
  float64 x
  float64 y
  float64 z
geometry_msgs/Vector3 angular
  float64 x
  float64 y
  float64 z

使用 rostopic pub
rostopic pub可以把數據發布到當前某個正在廣播的話題上。
用法:

$ rostopic pub [topic] [msg_type] [args]

實例:

$ rostopic list                    #查出所有rostopic
/rosout
/rosout_agg
/statistics
/turtle1/cmd_vel
/turtle1/color_sensor
/turtle1/pose

saneri@localhost:~$ rostopic type /turtle1/cmd_vel        #查類型
geometry_msgs/Twist

$ rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'

以上命令會發送一條消息給turtlesim,告訴它以2.0大小的線速度和1.8大小的角速度開始移動。

$ rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'

這條命令以1Hz的頻率發布速度命令到速度話題上。

使用 rostopic hz
rostopic hz命令可以用來查看數據發布的頻率。
用法:

rostopic hz [topic]

實例:

$ rostopic hz /turtle1/pose
subscribed to [/turtle1/pose]
average rate: 62.486
        min: 0.015s max: 0.017s std dev: 0.00047s window: 60
average rate: 62.476
        min: 0.015s max: 0.018s std dev: 0.00045s window: 122
average rate: 62.514
        min: 0.014s max: 0.020s std dev: 0.00057s window: 185
average rate: 62.506
        min: 0.013s max: 0.020s std dev: 0.00061s window: 248

現在我們可以知道了turtlesim正以大約60Hz的頻率發布數據給turtle。我們也可以結合rostopic type和rosmsg show命令來獲取關於某個話題的更深層次的信息。

$ rostopic type /turtle1/cmd_vel | rosmsg show
geometry_msgs/Vector3 linear
  float64 x
  float64 y
  float64 z
geometry_msgs/Vector3 angular
  float64 x
  float64 y
  float64 z

到此我們已經完成了通過rostopic來查看話題相關情況的過程。

rosbag 命令
rosbag 將ROS系統運行過程中的數據錄制到一個.bag文件中,然后可以通過回放數據來重現相似的運行過程.退出錄制時按Ctrl-C退出該命令,你應該會看到在當前目錄下一個以年份、日期和時間命名並以.bag作為后綴的文件。

錄制所有發布的話題,其中 -a 選項,該選項表示將當前發布的所有話題數據都錄制保存到一個bag文件中。

$ rosbag record -a

回放bag文件以再現系統運行過程

$ rosbag play <your bagfile>

1. 以某一頻率發布消息(控制bag包播放的頻率) : rosbag play -r 2

2.從某一時間節點開始播放發布消息 : rosbag play -s 2

rosbag info 查看bag文件信息

$ rosbag info <your bagfile>

錄制數據子集

rosbag record命令支持只錄制某些特別指定的話題到單個bag文件中,這樣就允許用戶只錄制他們感興趣的話題

在bag文件所在目錄下執行以下命令:

$ rosbag record -O 2018-12.bag  /turtle1/command_velocity /turtle1/pose

上述命令中的-O參數告訴rosbag record將數據記錄保存到名為2018-12.bag 的文件中,同時后面的話題參數告訴rosbag record只能錄制這兩個指定的話題。

可以使用rosbag info 2018-12.bag 命令查看錄制時指定話題的信息.

也可以只指定bag包的文件名,錄制所有數據

$ rosbag record -a -O 2018-12.bag

錄取指定topic,並且每五分鍾分割一次, -e為正則匹配。

# rosbag record --split --duration=5m -e /radar/back_targets /vehicle_speed /imu_data

如果查看視頻,可以執行如下命令,就可以實現視頻播放功能

rosrun image_view image_view image:=/camera/front_middle compressed

 

 

參考文檔:http://wiki.ros.org/cn/ROS/Tutorials

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM