#d roslaunch的功能
roslaunch可以一次启动多个node,大大提高了我们的执行效率。有了这个组件,我们不再需要通过rosrun启动一个个节点。
#e roslaunch的格式
要想使用roslaunch,就得编写对应的launch文件。
格式如下:
<launch>
<!--每一个launch文件必须以此开始和结束-->
<!--pkg和type等于rosrun的前两个参数 -->>
<node pkg="rviz" type="rviz" name="rviz" args="-d $(find lidar_localization)/rviz/test_frame.rviz"></node>
<node pkg="lidar_localization" type="test_frame_node" name="test_frame_node" output="screen"></node>
</launch>
(摘自任乾老师的博客)
可以看到,里面有pkg、type和name三个参数,而且都是名字。那么这三个分别指的是什么的名字?
#d roslaunch的原理
roslaunch的底层还是rosrun。roslaunch相当于代替你输入rosrun 以及一个个参数。
#rosrun的使用格式
rosrun [功能包名称] [节点名称]
#d pkg和type的意思
rosrun有两个必要参数,也就是功能包名和节点名。launch文件想要运行起来node文件,那也得拿到对应的两个参数,传给rosrun。pkg就是传给rosrun的[功能包名称] type就是[节点名称]
#d 节点名
节点名指的是,生成的可执行文件名字。在cmake里可以查到生成的对应文件。生成好的节点文件放在devel目录下。一个功能包下可以有多个节点文件。
#d name的意思
name是节点初始化的参数。
#e name的例子
ros::init(argc, argv, "test_frame_node");
在launch文件中输入name参数,相当于替换掉这里的test_frame_node。
具体各节点的name名称可根据rqt_graph查看。