Roslaunch实在是太方便了,用的太爽了。以前启动rosnode得一个一个起,而且又要source一下,又满屏幕都是窗口,把我找的直接是蛋疼,但是roslaunch以后,将你要启动的节点配置在一个launch文件里面,这样你运行起来,所有的节点也将全部启动起来。
下来进入正题
1、使用launch启动脚本文件
<?xml version="1.0"?>
<launch>
<node pkg="sensor" type="teleop" name="teleop" output="screen"></node>
<node pkg="sensor" type="cmd" name="cmd"></node>
<node pkg="sensor" type="odometry" name="odometry"></node>
<include file="$(find package-name)/launch-file-name" />
</launch>
说明:
1、 pkg 和 type 属性确定了:启动此节点,ROS应该运行哪个程序。它们与 rosrun 的两个命令行参数一样,它们分别是:程序包名字 和 可执行文件的名字。
name 属性指定了一个节点的名字。这个节点程序会调用 ros::init() 函数内有一个这个节点的 name 参数,导致这个节点的 name 被改写,所以这个 name 属性容易被覆盖。
2、output=”screen” 带这个属性启动的节点会将标准输出信息显示在终端的窗口中,而不会保存在日志文件中。这也解释了为什么这个带有output=”screen”的节点(node) 的日志文件在上面日志文件列表中丢失的原因。
3、llaunch-prefix=”xterm -e” 正如我们所知道的,xterm 命令会开一个新的终端窗口。 -e 参数告诉 xterm :执行其命令行剩余部分(rosrun turtlesim turtle_teleop_key)。
4、这个 file 属性期望我们添加想要包含的文件的完整路径。但是大多数时候,include 元素使用一个 find 命令来搜索一个程序包,代替一个明确的完整路径
上面我只用了这么些参数,但是launch里面有很多的要点,大家可以去
https://blog.csdn.net/github_35160620/article/details/52618271 看看,非常不错
谢谢这位大牛的总结,清扫了我前方的障碍,哈哈