对于一个复杂的系统,会有十几个、几十个甚至是上百个节点在运行,如果我们每次都是采取“打
开终端、运行 rosrun 指令”来启动应用程序,显得效率非常低。我们需要一个更方便的方式来启动系统。ROS 中提供了“使用 launch 文件 + roslaunch”命令来完成系统的启动。具体的实现方法如下:
一、添加launch文件
- 选定功能包右击 ——> 添加 launch 文件夹
- 选定 launch 文件夹右击 ——> 添加 launch 文件
- 编写launch文件
二、编写launch文件
下面是一个launch文件示例:
<launch>
<node pkg="hello" type="hello_vs" name="hello" output="screen" />
<node pkg="turtlesim" type="turtlesim_node" name="t1"/>
<node pkg="turtlesim" type="turtle_teleop_key" name="key1" />
</launch>
- node ——包含的某个节点
- pkg —— 节点所在的功能包的名字
- type —— 节点的二进制可执行文件的名字
- name —— 节点启动后,可有 ROS 识别出的节点名称。我们在编写节点时,通过 ros::init(argc, argv, “node_name”)已经指定了节点名,当节点启动后,这个启动文件(*.launch)会给我们一个重新命名节点的机会。
- output—— 设置日志的输出目标。通过启动文件启动节点后,默认节点输出信息会输入到一个日志文件而不是屏幕上。想要在屏幕上打印信息,需要加“output="screen”
所以上面的launch文件示例是实现了hello_vs.cpp文件里面的功能,还有同时启动乌龟节点的
功 能。
三、运行launch文件
- 在vscode界面ctrl+shift+B编译文件
- 打开一个终端运行:
roscore
- 重新打开一个终端输入命令
source ./devel/setup.bash
roslaunch package_name launch_file_name
运行界面如下
小技巧——ROS省略命令“source ./devel/setup.bash”
因为每次新开一个终端都要输入命令“source ./devel/setup.bash” ,很麻烦,我们可以通过
sudo gedit ~/.bashrc
打开.bashrc文件,然后在中写入命令
source /home/***/your_ws/devel/setup.bash
其中***是你的计算机名。具体操作可以参考ROS省略命令“source ./devel/setup.bash“