【ROS学习1】(很形象!!)
目录
ROS命令行工具的使用
以(小海龟仿真器)为例:
分别打开三个终端:
1.roscore :
#启动ROS Master
2.rosrun turtlesim turtlesim_node:
#启动 小海龟仿真器
turtlesim是ROS下的一个功能包名
双击tap以查看包中包含的节点:
3.rosrun turtlesim turtle_teleop_key :
#启动海龟控制节点(键盘控制)
ROS下有很多基于Qt的可视化工具,rqt_graph可以用来显示系统的计算图:清晰的展现系统的全貌。其中turtlesim是仿真器节点,
teleop_turtle是键盘控制节点,
两个节点之间由一个topic:turtle1/cmd_vel做通讯。具体的内容便是键盘传输的速度指令。
常用命令行工具:
rosnode:
显示系统中所有节点相关信息
rosnode list:列出系统中所有节点
其中rosout是一个默认的节点,该topic主要采集ros里所有节点的日志信息,提交给上面的界面做显示。
rosnode info:
查看某一节点的具体信息,
如rosnode info /turtlesim
我们可以直观的看到这个节点在发布(output)哪一些topic(Publications)以及订阅(input)哪一些topic(Subscriptions)。
rostopic:
rostopic list:打印当前系统的所有话题:
那我们是否可以不依赖键盘操控给话题发布数据,让海龟运动呢?
可以的,使用rostopic pub(public)发布话题。
其中turtle1/cmd_vel是话题名,Twist 是发布的指令的消息结构(数据内容),“ ”里为具体数据,
其中linear为海龟运动的线速度,
angular为角速度。
使用pub -r (rate频率)来以一定的频率发布话题内容,
如pub -r 10(10Hz)
ctrl+C终止发布
使用rosmsg show可以查看话题的具体结构:
如rosmsg show geometry_msgs/Twist
这样我们便可以看到Twist消息的数据结构。
rosservice(服务)
rosservice list:打印服务内容,服务端为我们的海龟仿真器,终端就作为客户端以请求某个服务。
其中使用rosservice call /spawn可以产生一只新的小海龟。
x,y为小海龟诞生之初的坐标,theta为初始方向角,name为海龟这个节点名。
(出现了,三头龟!!)
再次使用rostopic list,发现新增了turtle2和turtle3
再次查看计算图:
话题记录(录制rosbag)
rosbag record -a -O cmd_record
-a:保存所有数据
-O以压缩包形式,后面接文件名
录制完毕后生成.bag文件。
运行rosbag
rosbag play cmd_record.bag
如有不足,欢迎讨论!