##整理结合机器人操作系统(ros)浅析和网址http://wiki.ros.org/cn
NODE
node几乎是无处不在,这个东西相当于可执行文件,目前我更愿意把它当做cpp文件,通过catkin_make之后生成可执行文件。
Message
不用说了,没有message就是哑巴了。还是这是血液吧,不然传递机制是无法建立起来的
TOPIC
topic就像是QQ群一样,提供一个平台。当有人发了一条消息后,QQ群告诉任何一个加群的人,有没有红包啥的。显然这是一种通过第三方传递的方式,也就是间接传递。发红包的人就是publisher,看群消息的人就是subscriber,然后是MESSAGE传递,这就很简单了,就是水群。
SERVICE
service有点像两人私聊的意思,或者是很多人找一个人私聊。跳过了topic平台,它与topic区别就在于是消息直接传递还是间接传递。水群就是间接传递,多对多传递。私聊就是直接传递,一对一。
C++体悟
在ros中似乎和正常编程有点不一样,估计VS背后也是这么搞的,只不过ros用户体验不是太高。比如beginner_tutorials::AddTwoInts::Request这一句,把工作包当做命名空间,把里面的AddTwoInts.srv文件当做一个类,不知道VS底层机制是不是这样。当然,ros的c++实现毕竟是借助c++的,还是有不少地方是相似的。
ROS命令部分:
启动节点
启动节点(也称运行ROS程序)的基本命令是rosrun
rosrun [package_name] [node_name]
rosrun package-name executable-name
eg:rosrun turtlesim turtlesim_node
可以像执行任 何其他程序一样直接执行 turtlesim_node:
这里可以看出,一个节点相当于一个cpp文件,运行之后产生一个类似于exe的可执行文件。
可以使用 rosrun 命令显式设置节点的名称,语法 如下:
rosrun package-name executable-name __name:=node-name
Rosrun只是简便了操作,也可以直接找出下面的命令进行操作
/opt/ros/indigo/lib/turtlesim/turtlesim_node
查看节点
rosnode list
rosnode info node-name
在 ROS 系统中查看节点之间的发布-订阅关系的最简单方式就是在终端输入如下命令:
rqt_graph
这是图形界面,比较容易理解