当前位置:网站首页>ROS基础 - 使用 launch 文件(一) - 批量启动多个ROS节点

ROS基础 - 使用 launch 文件(一) - 批量启动多个ROS节点

2022-06-11 02:33:00 NiuniuAndAdu

ROS基础 - 使用 launch 文件(一) - 批量启动多个ROS节点

本文主要介绍launch文件的基本使用,详细的launch文件格式说明及 传递 ROS参数param 的方法,详见: https://aduandniuniu.blog.csdn.net/article/details/125181523?spm=1001.2014.3001.5502

roslaunch命令可以用来启动定义在launch(启动)文件中的节点。
roslaunch不保证节点开始的顺序,因为无法从外部知道何时完全初始化节点,因此所有启动的代码都必须能够按任意顺序启动。。

命令格式:

roslaunch [package] [filename.launch]

1、新建ROS工程

$ mkdir -p ~/launchExample/src  
$ cd ~/launchExample/src 
$ catkin_init_workspace   //初始化工作区

$ catkin_create_pkg launchTest1 roscpp  //创建ROS工程包(pachage)
$ catkin_create_pkg launchTest2 roscpp  //创建ROS工程包(pachage)

$ mkdir launch            //创建.launch文件存放目录
$ cd ~/launchExample/  
$ catkin_make 

2、新建 test.launch 文件

新建 ~/launchExample/launch/test.launch文件,内容如下:

<launch>
    <node pkg="launchTest1" type="launchTest1_node" name="launchTest1_node" output="screen" args="" />
    <node pkg="launchTest2" type="launchTest1_node" name="launchTest2_node" output="screen" args="" />
</launch>

注意:其中的 type字段,要与对应功能包中, CMakelist.txt 中add_executable 指定的ROS程序一致。

3编写测试代码

3.1新建 launchTest1 测试程序

新建 ~/launchExample/launchTest1/main.cpp 文件,内容如下:

void main()
{
printf(“Hello LaunchTest1”);
}

3.2新建 launchTest2 测试程序

新建 ~/launchExample/launchTest2/main.cpp 文件,内容如下:

void main()
{
printf(“Hello LaunchTest2”);
}

$ cd ~/launchExample/  
$ catkin_make 
$ source devel/setup.bash //设置运行环境

4、roslaunch 命令启动ROS节点

4.1 启动方法1

roslaunch test.launch  //不指定ROS包路径

4.2 启动方法2

catkin_create_pkg launchStart roscpp  //创建ROS工程包(pachage)
cp ~/launchExample/launch/test.launch ~/launchExample/launchStart/
roslaunch launchStart test.launch  //指定ROS包路径

5 launch文件格式 - 示例1

<launch>
    <node pkg="turtlesim" name="sim1" type="turtlesim_node"/>
    <node pkg="turtlesim" name="sim2" type="turtlesim_node"/>
</launch>
<launch>

  <group ns="turtlesim1">
    <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
  </group>

  <group ns="turtlesim2">
    <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
  </group>

  <node pkg="turtlesim" name="mimic" type="mimic">
    <remap from="input" to="turtlesim1/turtle1"/>
    <remap from="output" to="turtlesim2/turtle1"/>
  </node>

</launch>
原网站

版权声明
本文为[NiuniuAndAdu]所创,转载请带上原文链接,感谢
https://aduandniuniu.blog.csdn.net/article/details/125180069