一、区别
rosrun是运行一个单独节点的命令,如果要运行多个节点,则需要使用多次rosrun命令。
roslaunch采用XML的格式对需要运行的节点进行描述,可以同时运行多个节点。例如:
<launch>
<node name="listener" pkg="rospy_tutorials" type="listener.py" output="screen"/>
<node name="publish_on_shutdown" pkg="rospy_tutorials" type="publish_on_shutdown.py" output="screen"/>
</launch>
可以同时运行listener和publish_on_shutdown两个节点。
二、roslaunch使用
1.在launch文件中录制rosbag包
<launch>
<node name="record" pkg="rosbag" type="record" output="screen" args="-o $(find record_bag)/../../bag /topic_1 /topic_2 /topic_3"/>
</launch>
2.在launch文件中启动其他launch文件
<launch>
<include file="$(find packagexx)/launch/111.launch" />
</launch>
3.roslaunch示例
<launch>
<arg name="model" default="model_name" doc="this is a model name"/>
<arg name="param_path" default="$(find package_name)/data/" doc="this is a param path" />
<group ns="group_name">
<node pkg="package_name1" name="node_name1" type="node_type1" output="screen" >
<param name="model" value="$(arg model)"/>
<param name="param_path" value="$(arg param_path)/xx.xml" />
<remap from="old_topic" to="new_topic"/>
</node>
</group>
<node pkg="package_name2" name="node_name2" type="node_type2" output="screen" >
<param name="string" type="str" value="ABC" />
<param name="int" type="int" value="6" />
<rosparam param="min_in">[1, 1, 1]</rosparam>
<rosparam param="paras">
"a": 1
"b": 2
</rosparam>
</node>
<node pkg="rviz" name="rviz" type="rviz" args="-d $(find package_name)/rviz/package_name.rviz">
</node>
</launch>
4.ros设置组名
<group ns="group_name">
</group>
本文参考
【1】ros之launch文件
https://www.cnblogs.com/ChrisCoder/p/9949643.html