ros常用命令整理[持续更新]

  • Post author:
  • Post category:其他


会陆续添加




1 基本操作相关



1.1 查看ROS_PACKAGE_PATH环境变量

$ echo $ROS_PACKAGE_PATH
/home/[Name]/catkin_ws/src:/opt/ros/kinetic/share
roscore  



1.2 rosrun 命令

rosrun 允许你使用包名直接运行一个包内的节点(而不需要知道这个包的路径)。

用法:

$ rosrun [package_name] [node_name]



1.3 rosls 命令

rosls是rosbash命令集中的一部分,它允许你直接按软件包的名称而不是绝对路径执行ls命令(罗列目录).

用法:

$ rosls  [ 本地包名称[/子目录] ]

示例:

$ rosls beginner_tutorials/



1.4 roscd 命令

roscd是rosbash命令集中的一部分,它允许你直接切换(cd)工作目录到某个软件包或者软件包集当中。

用法:

# roscd [ 本地包名称[/子目录] ]



1.5 roscd log命令

使用roscd log可以切换到ROS保存日记文件的目录下。需要注意的是,如果你没有执行过任何ROS程序,系统会报错说该目录不存在。

如果你已经运行过ROS程序,那么可以尝试:

$ roscd log



1.6 rosed 命令

rosed 是 rosbash 的一部分。利用它可以直接通过package名来获取到待编辑的文件而无需指定该文件的存储路径了。

使用方法

$ rosed [package_name] [filename]

例子:

$ rosed roscpp Logger.msg

这个实例展示了如何编辑roscpp package里的Logger.msg文件。



1.7 rospack 命令

rospack允许你获取软件包的有关信息

用法:

$ rospack find [包名称]

实例:

要找到一个软件包的目录,使用 rospack find命令

$ rospack find roscpp
/opt/ros/kinetic/share/roscpp
$ rospack list                  
#显示出当前的包信息

$ rospack depends1 beginner_tutorials        
#显示当前包的一级依赖

$ rospack depends beginner_tutorials     
#显示当前包的所有依赖



2 Node相关



2.1 rosnode 命令

rosnode 显示当前运行的ROS节点信息

命令 内容
rosnode list 获得运行节点列表
rosnode info node-name 获得特定节点的信息
rosnode ping node-name 测试节点是否连通
rosnode kill node-name 终止节点



3 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
        (打印主题或字段类型)



3.1 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



3.2 rostopic echo

rostopic echo 可以显 示在某个话题上发布的数据.

$ rostopic echo /rosout_agg



3.3 rostopic type & rosmsg

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



3.4 rostopic pub

使用 rostopic pub

rostopic pub可以把数据发布到当前某个正在广播的话题上。

用法:

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

实例:

$ 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的频率发布速度命令到速度话题上。



3.5 rostopic hz

使用 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命令来获取关于某个话题的更深层次的信息。



3.6 打开Node-Topic图

$ rosrun rqt_graph rqt_graph

在这里插入图片描述




4 tf 相关



4.1 查看tf Tree

$ rosrun rqt_tf_tree rqt_tf_tree



4.2 发布静态TF变换

$rosrun tf static_transform_publisher [x,y,z,y,p,r] [parentFrame] [childFrame] [Rate]



5 调试相关



5.1 日志相关

打开日志框架,可以获得节点输出信息。

$ rosrun rqt_console rqt_console

在这里插入图片描述

打开日志级别窗口,里面可以调整输出的不同级别,如:

Fatal (致命)、Error (错误)、Warn (警告)、Info (信息)、Debug (调试)

$ rosrun rqt_logger_level rqt_logger_level

在这里插入图片描述



5.2 参数配置

$ rosrun rqt_reconfigure rqt_reconfigure

在这里插入图片描述



5.2.1 读取YAML文件的参数配置

$ rosparam load [config_path]/config.yaml



6 rosbag 命令

录制所有发布的话题,其中 -a 选项,该选项表示将当前发布的所有话题数据都录制保存到一个bag文件中。



6.1 record

录制所有topic数据

$ rosbag record -a



6.2 回放bag文件以再现系统运行过程

播放录制好的文件

$ rosbag play <your bagfile>

以某一频率发布消息(控制bag包播放的频率)

$ rosbag play -r 2

从某一时间节点开始播放发布消息

$ rosbag play -s 2

仅播放一定的时间数

$ rosbag play -u 200 <yourbagfile>

重复循环播放数据

$ rosbag play -l [BagName].bag  # -l== --loop

延时X秒后开始播放数据,一般用于等待其他节点运行。

rosbag play [BagName].bag -d <X>



6.3 rosbag info

查看bag文件信息

$ rosbag info <your bagfile>

如下:

$ rosbag info ./subset.bag 
path:        ./subset.bag
version:     2.0
duration:    1.7s
start:       Apr 28 2021 19:42:52.73 (1619664172.73)
end:         Apr 28 2021 19:42:54.46 (1619664174.46)
size:        7.2 KB
messages:    13
compression: none [1/1 chunks]
types:       geometry_msgs/Twist [9f195f881246fdfa2798d1d3eebca84a]
topics:      /turtle1/cmd_vel   13 msgs    : geometry_msgs/Twist



6.4 录制数据子集

rosbag record命令支持只录制某些特别指定的话题到单个bag文件中,这样就允许用户只录制他们感兴趣的话题

$ rosbag record -O [bagname].bag  [topic1] [topic2]... 

上述命令中的-O参数告诉rosbag record将数据记录保存到名为[bagname].bag 的文件中,同时后面的话题参数告诉rosbag record只能录制这两个指定的话题。

排除指定话题:

$ rosbag filter file.bag file-no-tf.bag "topic != '/tf'"

上述命令指定录制排除tfTopic的数据包。

录取指定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



6.5 将bag数据中的时间段数据提取出来

rosbag filter [bagfileName].bag [newbagName].bag "t.to_sec() >= 1620297150 and t.to_sec() <= 1620297160"

即可将bag数据中的时间段(上面为10秒内)的数据输出为新的bag文件。


参考文档:http://wiki.ros.org/cn/ROS/Tutorials



版权声明:本文为weixin_42269667原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。