系列文章目录
第一章 ROS空间创建、helloworld的实现、开启多个节点
第二章 话题通信
第三章 服务通信
第四章 参数服务器
第五章 常用指令
第六章 通信机制实操
第七章 ROS通信机制进阶(常用API、Python模块的导入)
第八章 元功能包、节点运行管理launch文件(teleop_twist安装方法)
第九章 重名问题、分布式通信
第十章-第一节 TF坐标变换(内含PyKDL 和PyInit__tf2功能缺失等解决)
第十章-第二节 TF坐标变换实操
第十章-第三节 rosbag、rqt工具箱
第十一章-第一节 机器人系统仿真(URDF相关)
第十一章-第二节 机器人系统仿真(Gazebo相关)
第十二章 机器人导航(仿真)
文章目录
前言
现在大二,之前大一有幸参加了2021的国赛,很壮烈的拿了个江苏赛区的二等奖。但发现无人机这个题,真的是往堆钱上走了。不上ROS不行,现在来记录一下一个纯小白学习ROS的过程和遇到的问题。防止学弟、学妹们再走我走过的弯路。板子用的是学长给的Jetson Nano(4GB),版本是Ubuntu18.04(已配置好基础ROS所需配置)。
一、常用指令介绍
机器人系统中启动的节点少则几个,多则十几个、几十个,不同的节点名称各异,通信时使用话题、服务、消息、参数等等都各不相同,一个显而易见的问题是: 当需要自定义节点和其他某个已经存在的节点通信时,如何获取对方的话题、以及消息载体的格式呢?
在 ROS 同提供了一些实用的命令行工具,可以用于获取不同节点的各类信息,常用的命令如下:
rosnode
: 操作节点rostopic
: 操作话题rosservice
: 操作服务rosmsg
: 操作msg消息rossrv
: 操作srv消息rosparam
: 操作参数
二、具体介绍
1.rosnode
rosnode是用于获取节点信息的命令
rosnode ping /节点名
测试到节点的连接状态rosnode list
列出活动节点rosnode info /节点名
打印节点信息rosnode machine
列出指定设备上节点rosnode kill /节点名
杀死某个节点rosnode cleanup
清除不可连接的僵尸节点
2.rostopic
rostopic包含rostopic命令行工具,用于显示有关ROS 主题的调试信息,包括发布者,订阅者,发布频率和ROS消息。它还包含一个实验性Python库,用于动态获取有关主题的信息并与之交互。
rostopic bw
显示主题使用的带宽rostopic delay
显示带有 header 的主题延迟rostopic echo
打印消息到屏幕,记得进入工作空间并刷新环境变量rostopic find
根据类型查找主题rostopic hz
显示主题的发布频率rostopic info
显示主题相关信息rostopic list
显示所有活动状态下的主题
#直接调用即可,控制台将打印当前运行状态下的主题名称
#rostopic list -v
: 获取话题详情(比如列出:发布者和订阅者个数…)- rostopic pub 将数据发布到主题
#rostopic pub 话题名tab补齐tab补齐
(记得先刷新环境变量source ./devel/setup.bash
)
#rostopic pub -r 10 话题名tab补齐tab补齐
以1s/10次的频率发 rostopic type
打印主题类型
3.rosservice
rosservice包含用于列出和查询ROS Services的rosservice命令行工具。
调用部分服务时,如果对相关工作空间没有配置 path,需要进入工作空间调用 source ./devel/setup.bash
rosservice args
打印服务参数rosservice call+服务
使用提供的参数调用服务rosservice find
按照服务类型查找服务rosservice info
打印有关服务的信息rosservice list
列出所有活动的服务rosservice type
打印服务类型rosservice uri
打印服务的 ROSRPC uri
4.rosmsg(发布订阅模型)
rosmsg是用于显示有关 ROS消息类型的信息的命令行工具。
rosmsg show
显示消息描述
#rosmsg show turtlesim/Pose
rosmsg info
显示消息信息rosmsg list
列出所有消息
#rosmsg list | grep -i person(消息名称)
可以看到指定消息rosmsg md5
显示 md5 加密后的消息rosmsg package
显示某个功能包下的所有消息rosmsg packages
列出包含消息的功能包
5.rossrv(服务类型)
rossrv是用于显示有关ROS服务类型的信息的命令行工具,与 rosmsg 使用语法高度雷同。
rossrv show
显示服务消息详情rossrv info
显示服务消息相关信息rossrv list
列出所有服务信息
#rosmsg list | grep -i addInts(消息名称)
可以看到指定消息rossrv md5
显示 md5 加密后的服务消息rossrv package
显示某个包下所有服务消息rossrv packages
显示包含服务消息的所有包
6.rosparam(参数服务器)
rosparam包含rosparam命令行工具,用于使用YAML编码文件在参数服务器上获取和设置ROS参数。
rosparam set
设置参数
rosparam set name huluwa
//再次调用 rosparam list 结果
/name
/rosdistro
/roslaunch/uris/host_helloros_virtual_machine__42911
/rosversion
/run_id
rosparam get
获取参数
rosparam get name
//结果
huluwa
rosparam load
从外部文件加载参数rosparam dump
将参数写出到外部文件rosparam delete
删除参数rosparam list
列出所有参数
//默认结果
/rosdistro
/roslaunch/uris/host_helloros_virtual_machine__42911
/rosversion
/run_id
总结
以上就是今天要讲的内容,本文仅仅简单记录了ROS的常用命令,如果有问题请在博客下留言或者咨询邮箱:layraliu@foxmail.com。