ROS系統也是經過命令行操做,總結了下平時工做中使用的命令工具,之後使用多會陸續添加.node
查看ROS_PACKAGE_PATH環境變量bash
$ echo $ROS_PACKAGE_PATH
/home/saneri/catkin_ws/src:/opt/ros/kinetic/share
roscore 命令是你在運行全部ROS程序前首先要運行的命令。工具
$ roscore
rosrun 命令
rosrun 容許你使用包名直接運行一個包內的節點(而不須要知道這個包的路徑)。測試
用法:this
$ rosrun [package_name] [node_name]
如今咱們能夠運行turtlesim包中的 turtlesim_node節點,你會看到打開了一個 turtlesim 窗口:spa
$ rosrun turtlesim turtlesim_node
rosls 命令
rosls是rosbash命令集中的一部分,它容許你直接按軟件包的名稱而不是絕對路徑執行ls命令(羅列目錄).命令行
用法:
# rosls [ 本地包名稱[/子目錄] ]code
示例:orm
$ 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