写在前面
本文编写于ROS初学阶段,目的在于学习记录同时 与大家简单分享。ROS相关学习资料在国内较为稀少,B站古月居上传一定入门视频,但仍不够详尽,有些细节还需自己再斟酌。相比之下wai网资源较为丰富,维基百科好像也有不错的教程介绍,有兴趣的朋友可以 自己找找。
开始
首先ROS系统在Ubuntu系统中需要打开ROSmaster(节点管理器)才能进行ros的相关节点操作,这里关于ROS系统的工作结构古月在B站做过一些介绍,简单来说就是节点管理器管理node节点之间的topic话题传输。
1.打开新的终端运行 roscore ,将打开节点管理器。如果你没有退出上一个管理器将会出现提示语 “Please kill other roscore、master processes before relaunching”;
2. 为了打开“海龟”turtlesim,打开一个新终端输入
rosrun turtlesim turtlesim_node
输入的同时可利用“tab”键提高书写效率,同时出现海龟窗口;
3. 为了能够通过按键控制海龟运动,这里需要再打开一个新终端:
rosrun turtlesim turtle_teleop_key
当然海龟的运动也可以通过程序控制,我们后面再说。现在我们就可以利用键盘上下左右键控制海龟运动。
ROS话题
上面上个终端通过命令生成了两个节点 turtlesim_node 和 turtle_teleop_key ,节点之间通过话题通讯,节点管理器链接管理,海龟运动的同时,按键“key”节点发布publish消息,海龟turtlesim则订阅这些消息,从个知道该如何运动。
利用动态图显示这些节点:
$ rosrun rqt_graph rqt_graph
如果没有安装,安装命令如下:
$ sudo apt-get install ros-<distro>-rqt
$ sudo apt-get install ros-<distro>-rqt-common-plugins
rostopic
-
rostopic 命令可以帮助你获取ros话题的相关信息。可以通过
rostopic -h
或者rostopic
双击tab键以获得相关提示或信息。 -
rostopic echo 命令可以获取在某个话题上发布的数据。格式为
rostopic echo [topic]
- 列出当前已订阅和发布的所有话题
rostopic list -h
- 使用
rostopic type
命令来查看消息类型rostopic type [topic]
- 使用
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/Velocity消息有两个浮点型元素:linear和angular。在本例中,’[2.0, 0.0, 0.0]‘表示linear的值为x=2.0, y=0.0, z=0.0,而’[0.0, 0.0, 1.8]'是说angular的值为x=0.0, y=0.0, z=1.8。这些参数实际上使用的是YAML语法。
- 利用
rostopic hz [topic]
报告数据的发布速率。 - 利用
$ rosrun rqt_plot rqt_plot
绘制话题数据。