首先,先明确一下与节点相关术语的含义:
Nodes:节点,一个节点即为一个可执行程序,它可以通过ROS与其他节点通信,另外,一个catkin程序包里可以有很多节点。
Messages:消息,消息是一种ROS数据类型,用于订阅或发布到一个话题,是一个载体。
Topics:话题,节点可以向话题发布消息或可以向话题订阅消息,像通信中转站一样。
Master:节点管理器,ROS名称服务。
rosout:相当于std::cout
roscore:是在运行所有ROS程序前首先要运行的命令。
运行ros节点的方法:
一般有两种:
第一种:使用rosrun,在设置完环境变量后,可以使用包名来直接运行一个包内的节点。
用法:
$rosrun [package_name] [node_name]
注意:这种方法需要新打开一个终端 运行
$roscore
第二种:使用roslaunch
用法:
$roslaunch [package] [fliename.launch]
launch是个文件,用launch文件来运行程序相对于rosrun的优点有两个
<1>可以向程序传参
<2>可以同时运行多个节点
launch文件结构
<launch>
<!--第1个节点-->
<node pkg="" type="" name="">
<!--注释内容-->
<para name="程序中的数值或布尔参数" value="" />
<para name="程序中的字符串参数" value=" " type="str" />
...
<node>
...
<!--第n个节点-->
<node pkg="" type="" name="">
<!--注释内容-->
...
<node>
</launch>
注意:
<1>pkg:应该填写实际工程中的包名
<2>type:填写对应CMakeLists里add_executable 生成的binary名字。
<3>name:这个随便写,只要符合ros命名规则就行,这个名字在运行时(roslunch 。。)会出现在终端里。