在工作空间中新建一个软件包
cd ~/catkin_ws/src
使用下述指令,创建一个ROS程序包,名称为:beginner_tutorials
catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
如下两图所示
在catkin_ws工作空间中添加环境变量,如图
rospack 这个命令不但可以查找软件包的所在目录,还可以查看一个软件包的依赖包都有哪些:如上图
罗列出来的这 3 个软件包中,比如 roscpp 这个软件包的依赖包又有哪些:
对有 beginner_tutorials 包来说,它的依赖包(roscpp、rospy、std_msgs)的依赖包,就是 beginner_tutorials 包的间接依赖包:
在上面我们讲解了工作空间和功能包的定义、构成、依赖、创建和编译。下面进入正题,launch文件的创立(简单版)
roscd beginner_tutorials
mkdir launch
cd launch
gedit turtlemimic.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>
</launch>
实际效果如图:
解释程序:
上面的代码,创建了2个 ros 节点, 并以不同命名空间标签区分,所以两个节点的名字都是一样的也没关系。
<launch> : 这个标签是其他标签的根标签,简单的说,它就是其他标签的容器。
<group> : 它可以做成一个组, 简单的比喻, 就像是 C++里面的namespace一样,并且这个标签里的”ns” 指的就是:namespace(命名空间)。
<node> : 这个标签的效果:就是在终端中使用 rosrun 命令来启动一个节点。 “pkg”参数:软件(或程序)包名;
如何运行这个 launch 文件: (运行脚本文件,不像运行rosrun命令,不需要提前在一个终端中运行 roscore 命令。如果你没有启动roscore命令,这个roslaunch 会自动启动 /rosout 节点;如果你先前启动了roscore,这个roslaunch就不会再启动/rosout节点了。)
然后输入以下指令,运行启动文件:
roslaunch beginner_tutorials turtlemimic.launch
效果如下,启动两个海龟节点,PS两个窗口是重叠在一起的,需要拉开
好啦,我们就完成了一简单的launch文件的编写!~~