ROS基础篇(四)-- 调试时,常用的命令有哪些

文章目录

    • 1 创建工作空间
    • 2 package相关命令
    • 3 rosrun和rosnode命令
    • 4 rostopic相关命令
    • 5 rosmsg相关命令
    • 6 rosservice相关命令
    • 7 rossrv相关命令
    • 8 rosparam相关命令
    • 9 rqt相关命令
    • 10 rosbag相关命令

1 创建工作空间

1、启动ROS

roscore

2、创建工作环境

# 创建工作空间
mkdir -p catkin_ws/src		# 创建代码空间
cd ~/catkin_ws/src			# 进入代码文件夹
catkin_init_workspace		# 初始化当前文件夹

3、创建功能包

cd ~/catkin_ws/src
catkin_create_pkg <package_name> [depend1] [depend2] [depend3]

        注意: 同一个工作空间下,不允许存在同名功能包;不同工作空间下,允许存在同名功能包

4、编译ROS程序

# 编译工作空间
cd ~/catkin_ws
catkin_make
catkin_make install

5、添加程序包到全局路径

source ~/catkin_ws/devel/setup.bash		# 设置环境变量
echo $ROS_PACKAGE_PATH					# 检查环境变量

6、文件操作相关命令

sudo apt install XXX		# 安装ROS功能包
sudo apt purge XXX			# 删除某个功能包
apt search	XXX				# 搜索某个功能包
rosed 包名 文件名			# 修改功能包文件,需要先安装vim

2 package相关命令

1、rospack

        rospack是对package管理的工具,命令的用法如下:

rospack命令 作用
rospack help 显示rospack的用法
rospack list 列出本机所有package
rospack depends [package] 显示package的依赖包
rospack find [package] 定位某个package
rospack profile 刷新所有package的位置记录

        注:以上命令如果package缺省,则默认为当前目录(如果当前目录包含package.xml)

2、roscd

roscd [package]		# 切换到ROS package所在路径

3、rosls

rosls [package]		# 列出package下的文件

4、rosdep

        rosdep 是用于管理ROS package依赖项的命令行工具,用法如下:

rosdep命令 作用
rosdep check [package] 检查package的依赖是否满足
rosdep install [package] 安装package的依赖
rosdep db 生成和显示依赖数据库
rosdep init 初始化/etc/ros/rosdep中的源
rosdep keys 检查package的依赖是否满足
rosdep update 更新本地的rosdep数据库

        常用命令演示:
        打开一个终端,输入 roscore 后,再打开一个终端,假设我们要查看 turtlesim,如下:

rospack list				# 查看软件包列表和定位软件包
rospack find turtlesim		# 寻找一个软件包的目录
rosls turtlesim				# 查看软件包
roscd turtlesim				# 切换至软件包目录
rospack depends turtlesim	# 查看软件包的依赖

        运行结果如下图:
ROS基础篇(四)-- 调试时,常用的命令有哪些_第1张图片


3 rosrun和rosnode命令

1、rosrun

rosrun [--prefix cmd] [--debug] pkg_name node_name [ARGS]		
# rosrun将会寻找PACKAGE下的名为EXECUTABLE的可执行程序,将可选参数ARGS传入。

2、rosnode

        rosnode相当于ros节点管理命令,通过此命令可以查看、操作以及监测已经运行的ros节点,详细命令如下:

rosnode命令 作用
rosnode list 列出当前运行的node信息
rosnode info node_name 显示node的详细信息
rosnode kill node_name 结束某个node
rosnode ping 测试连接节点
rosnode machine 列出在特定机器或列表机器上运行的节点
rosnode cleanup 清楚不可到达节点的注册信息

        常用命令演示:

rosrun turtlesim turtlesim_node		# 启动小海龟仿真器
rosnode list						# 查看当前系统运行的ros节点
rosnode info /turtlesim				# 查看节点/turtlesim的信息
rosnode ping /turtlesim				# 测试节点/turtlesim是否正常
rosnode kill /turtlesim 			# 关闭节点/turtlesim

rosnode ping -all 					# 测试系统所有节点是否正常运行
rosnode kill --all					# 关闭所有节点

        运行结果如下图:

ROS基础篇(四)-- 调试时,常用的命令有哪些_第2张图片 ROS基础篇(四)-- 调试时,常用的命令有哪些_第3张图片

4 rostopic相关命令

        rostopic包含rostopic命令行工具,用于显示有关ROS 主题的调试信息,包括发布者,订阅者,发布频率和ROS消息。它还包含一个实验性Python库,用于动态获取有关主题的信息并与之交互。

rostopic命令 作用
rostopic list 列出当前所有的topic
rostopic info topic_name 显示某个topic的属性信息
rostopic echo topic_name 显示某个topic的内容
rostopic pub topic_name … 向某个topic发布内容
rostopic bw topic_name 查看某个topic的带宽
rostopic hz topic_name 查看某个topic的频率
rostopic find topic_type 查看某个类型的topic
rostopic type topic_name 查看某个topic的类型(msg)
rostopic delay 显示带有 header 的主题延迟

        常用命令演示:

rostopic -h						# 查看 rostopic 所有操作
rostopic list					# 查看当前系统中存在的话题
rostopic info /turtle1/pose		# 查看话题/turtle1/pose信息
rostopic echo /turtle1/pose		# 查看话题/turtle1/pose内容,获得小海龟位置信息
rostopic hz /turtle1/pose		# 查看话题/turtle1/pose通信频率
rostopic bw /turtle1/pose		# 查看话题/turtle1/pose通信带宽

# 原型:rostopic pub [-1]   [-r 1] -- [args] [args]
# 发布话题/turtle1/cmd_vel,只需要输入rostopic pub /turtle1/cmd_vel后,按两次Tab键,命令会自动补齐,然后加上后面的“-r 1”,
表示发布频率为1Hz,修改z值,将0.0改为1.0,表示绕Z轴按照逆时针方向,角速度为1rad/s。
rostopic pub /turtle1/cmd_vel geometry_msgs/Twist "linear:
x: 0.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 1.0"-r 1

        运行效果如下图所示:

ROS基础篇(四)-- 调试时,常用的命令有哪些_第4张图片 ROS基础篇(四)-- 调试时,常用的命令有哪些_第5张图片

5 rosmsg相关命令

        rosmsg是用于显示有关 ROS消息类型的信息的命令行工具。

rosmsg命令 作用
rosmsg list 列出系统上所有的消息
rosmsg show msg_name 显示某个消息的描述
rosmsg info msg_name 显示某个消息的信息
rosmsg md5 显示 md5 加密后的消息
rosmsg package 显示某个功能包下的所有消息
rosmsg packages 列出包含消息的功能包

        常用命令演示:

rosmsg package turtlesim 	# rosmsg package 包名,列出某个包下的所有msg
rosmsg show turtlesim/Pose	# rosmsg show 消息名称,显示消息描述

运行效果如下图所示:
ROS基础篇(四)-- 调试时,常用的命令有哪些_第6张图片


6 rosservice相关命令

        rosservice包含用于列出和查询ROSServices的rosservice命令行工具。调用部分服务时,如果对相关工作空间没有配置 path,需要进入工作空间调用 source ./devel/setup.bash ,详细命令如下表:

rosservice命令 作用
rosservice list 显示服务列表
rosservice info 打印服务信息
rosservice type 打印服务类型
rosservice uri 打印服务ROSRPC uri
rosservice find 按服务类型查找服务
rosservice call 使用所提供的args调用服务
rosservice args 打印服务参数

        常用命令演示:

rosservice -h										# 查看所有service操作
roservice list										# 查看 service 列表
rosservice args /spawn								# 打印服务参数							
roservice type /spawn | rossrv show			     	# 查看 service 格式并显示数据

# roservice call [service] [args],调用 service调用服务,为小乌龟的案例生成一只新的乌龟
rosservice call /spawn "x: 1.0
y: 2.0
theta: 0.0
name: 'turtle2'"
name: "turtle2"

        运行效果如下图所示:
ROS基础篇(四)-- 调试时,常用的命令有哪些_第7张图片


7 rossrv相关命令

        rossrv是用于显示有关ROS服务类型的信息的命令行工具,如下表:

rossrv命令 作用
rossrv show 显示服务消息详情
rossrv info 显示服务消息相关信息
rossrv list 列出所有服务信息
rossrv md5 显示 md5 加密后的服务消息
rossrv package 列出某个包下所有服务消息
rossrv packages 列出包含服务消息的所有包

        常用命令演示:

rossrv list					# 会列出当前ROS中的所有srv消息
rossrv package turtlesim 	# rossrv package 包名,列出某个包下的所有msg
rossrv show turtlesim/Spawn	# rossrv show 消息名称,显示消息描述

        运行效果如下图所示:
ROS基础篇(四)-- 调试时,常用的命令有哪些_第8张图片


8 rosparam相关命令

        rosparam包含rosparam命令行工具,用于使用YAML编码文件在参数服务器上获取和设置ROS参数使用命令行来维护参数服务器,如下表:

rosparam命令 作用
rosparam set param_key param_value 设置参数
rosparam get param_key 显示参数
rosparam load file_name 从外部文件加载参数
rosparam dump filename 保存参数到外部文件
rosparam delete 删除参数
rosparam list 列出所有参数名称

        常用命令演示:

rosparam list						# 列出所有参数
rosparam set name nuaa				# rosparam set [parame_name] [args],设置service parameter
rosparam get name					# 获得parameter
rosparam delete	name				# 删除parameter

rosparam load xxx.yaml				# rosparam load [file_name] [namespace],从外部文件加载参数
rosparam dump yyy.yaml				# 将参数写出到外部文件

        运行效果如下图所示:
ROS基础篇(四)-- 调试时,常用的命令有哪些_第9张图片


9 rqt相关命令

        rqt是一个基于qt开发的可视化工具,拥有扩展性好、灵活易用、跨平台等特点,相关命令如下:

1、rqt_graph

        rqt_graph是来显示通信架构,可以通过计算图显示当前有哪些Node和topic在运行,可以直观的看到ROS的通信架构和信息流,方便我们的理解。

2、rqt_plot

        rqt_plot将一些参数,尤其是动态参数以曲线的形式绘制出来。当我们在开发时查看机器人的原始数据,我们就能利用rqt_plot将这些原始数据用曲线绘制出来,可以极大的帮助我们了解数据的变化态势,理解数据流的作用,用曲线来显示我们的操作,精确直观。

3、rqt_console

        rqt_console里存在一些过滤器,我们可以利用它方便的查到我们需要的日志。

        常用命令演示:

rqt_graph							# 查看系统中运行的计算图
# 图形化显示 topic
rosrun rqt_graph rqt_graph
rosrun rqt_plot rqt_plot

        了解更多,请参考:rqt工具箱。


10 rosbag相关命令

        rosbag是一套用于记录和回放ROS主题的工具。它旨在提高性能,并避免消息的反序列化和重新排序。rosbag对软件包来操作,一个包是ROS用于存储ROS消息数据的文件格式,rosbag命令可以记录、回放和操作包。指令列表如下:

rosbag命令 作用
rosbag cheak 确定一个包是否可以在当前系统中进行,或者是否可以迁移
rosbag decompress 压缩一个或多个包文件
rosbag filter 解压一个或多个包文件
rosbag fix 在包文件中修复消息,以便在当前系统中播放
rosbag help 获取相关命令指示帮助信息
rosbag info 总结一个或多个包文件的内容
rosbag paly 以一种时间同步的方式回放一个或多个包文件的内容
rosbag record 用指定主题的内容记录一个包文件
rosbag reindex 重新索引一个或多个包文件

        常用命令演示:

rosbag record -a -O 目标文件			# 开始录制,并将目标文件保存在当前文件夹
rosbag info 文件名					# 查看文件
rosbag paly 文件名					# 回放文件
rosbag record -a					# 录制所有topic变化

        补充:

        rosbag通过命令行能够对软件包进行很多的操作,更重要的拥有代码API,可以对包进行重新编写。增加一个ROS API,用于通过服务调用与播放和录制节点进行交互。了解更多,请参考:rosbag使用。

你可能感兴趣的:(ROS,rosrun,rostopic,rosmsg,rosservice,rosparam,1024程序员节)