ROS1常用命令 | 您所在的位置:网站首页 › ros名词解释 › ROS1常用命令 |
一,常用命令行工具:
rostopic rosservice rosnode rosparam rosmsg rossrv 二,小海龟案例: 1. 启动ROS master:roscore 2. 启动小海龟仿真器:rosrun turtlesim turtlesim_node 3. 启动海龟控制节点:rosrun turtlesim turtle_teleop_key 4. 海龟案例的基本原理:在ROS里有一系列以rqt开头的工具,都是一些基于qt的可视化工具,可以让我们很直观的看到很多信息。例如: 显示系统计算图的工具:rqt_graph 我们之前介绍过ROS里面的核心通讯机制就是一个计算图,通过这张图可以很快的了解整个系统的全貌,尤其是针对一些未知的系统,很快可以知道这个系统是干嘛的。 在终端中输入rqt_graph,回车,会出现一个界面,这个界面里会很清晰的显示出当前ROS系统里面的几个节点: /teleop_turtle:键盘控制节点 /turtle1/cmd_vel:通讯话题,这个话题里面的具体通讯内容就是我们通过键盘输入指令的内容 /turtlesim:小海龟仿真器节点 界面如下: 三,没有界面的命令行工具 1. 显示系统中所有节点相关信息的指令:rosnode在终端中输入rosnode会显示一些关于rosnode的帮助信息如下: 1.1 rosnode list:打印显示出当前系统中所有的节点列表(/rosout:在rqt_graph中没有体现,它是在ROS环境里,只要你启动roscore,都会默认启动的一个话题,这个话题主要采集ROS里面所有节点的日信息,用来提交给上面的界面做显示的,一般不用去关心它。) 1.2 rosnode info:查看某一个节点的具体信息输入rosnode info + /某一个节点名(rosnode info /turtlesim),会显示如下信息: 1.2.1 节点turtlesim 正在发布的话题:(/turtle1/pose [turtlesim/Pose]:海龟的位置) 1.2.2 节点turtlesim 正在订阅的话题:这就是我们通过键盘指令发过去的一个数据,通过它订阅的数据,就可以控制海龟移动了。 1.2.3 节点turtlesim 提供的一些服务:可以通过这些服务来完成一些配置。 1.2.4 主机号和pid号 1.2.5 底层通讯的一些信息: 2. 跟话题相关的一个参数的命令:rostopic在终端中输入rostopic会显示一些关于rostopic的帮助信息如下: 2.1 rostopic list:打印显示出当前系统中所有的话题列表(/turtle1/cmd_vel:通讯话题,我们前面的键盘控制节点和海龟仿真器节点之间就是通过这个话题实现通讯的。) 我们也可以通过指令给这个话题发布数据,让海龟运动, 在终端输入:rostopic pub /turtle1/cmd_vel ,然后连按两次tab键, 会显示如下信息: rostopic pub /turtle1/cmd_vel :话题名, geometry_msgs/Twist:话题的消息结构, "linear: x: 0.0 y: 0.0 z: 0.0angular: x: 0.0 y: 0.0 z: 0.0" : 消息结构里面的具体数据。 2.1.1 linear:线速度,angular:角速度每一个速度都会给出x,y,z三个方向上的分量,比如给linear线速度x方向的分量一个数据1, 单位: linear线速度:m/s, angular角速度:弧度/s, 这是ROS里默认的单位,一般跟平移相关的都是:m/s,跟角度角度相关的都是:弧度/s,是ROS里面的默认的定义 回车,海龟应该按照1.0m/s向前运动一小段,然后我们发现海龟只动了一小段又停下来了,并不会一直来动,这是因为pub指令只会发布一次,如果想要海龟一直动,我们需要给其一个循环: rostopic pub -r 10 /turtle1/cmd_vel geometry_msgs/Twist "linear: x: 1.0 y: 0.0 z: 0.0angular: x: 0.0 y: 0.0 z: 0.0" (-r:频率rate,10:10赫兹,代表一秒钟发布十次这样指令) 回车,显示如下: 可以看到海龟撞到墙也不会回头,并且显示:Oh no! I hit the wall!,此时按ctrl+c 中断程序, 如果给angular角速度的z一个数值,海龟的运动将是曲线的,如下图: 3. 跟消息相关的一个命令:rosmsg 3.1 rosmsg show + 话题名:查看发布话题的结构输入rosmsg show geometry_msgs/Twist,回车,显示如下: 4. 跟服务相关的命令:rosservice 4.1 rosservice list :显示给当前系统提供的所有的服务的内容输入rosservice list 回车,显示如下: 这些服务的服务端都是仿真器,我们的终端都是作为客户端去请求某个服务的,例如:spawn服务,此服务是用来产生一只新的海龟, 请求方法如下 rosservice call /spawn,连按2次tab键,会自动根据请求的服务类型(spawn)补全的服务数据,具体如下: x,y分别代表产生新海龟位置的横纵轴坐标(仿真器窗口左下角为x,y轴的0点坐标); theta:产生新海龟的角度; name:产生新海龟的名字, 然后我们对新海龟的服务数据给予一些值: 然后enter回车,调用服务,然后会有一个服务反馈结果: 5. 话题记录:rosbag这个作用是记录当前系统中所有的话题数据,并且保存下来,当下次需要的时候再复用出来,例如, 你有一个无人机需要调试,但不可能每次都让飞机飞起来做数据调试,这就很不方便, 所以一般的方式都是做一次飞行,然后把所有的飞行数据都保存下来,回到实验室,再把这些数据复现出来, 再去做实验调试,所以后面的实验和真机飞行就没有关系了,都是用数据实验的,rosbag就是做这样的事情的。 5.1 rosbag + 参数 + 保存数据的文件名(rosbag record -a -O cmd_record):话题数据记录参数: record:记录数据 -a:-all,所有的 -O:把记录的数据保存成一个压缩包 打开第四个终端,输入:rosbag record -a -O cmd_record,回车,开始记录,具体如下: 现在随便让小海龟动几下,留下一个轨迹,然后在Ctrl+C保存数据,如下: 保存路径在主文件Home下。 现在可以尝试复现保存文件里面的数据内容了,先把所有终端都关掉,然后 打开第1个终端,输入:roscore; 打开第2个终端,输入:rosrun turtlesim turtlesim_node 打开第3个终端,输入:rosbag play cmd_record.bag 回车,即可复现,如下: |
CopyRight 2018-2019 实验室设备网 版权所有 |