ROS(2)编写第一个ROS launch文件—下半部分(代码和实操)

在工作空间中新建一个软件包

cd ~/catkin_ws/src

使用下述指令,创建一个ROS程序包,名称为:beginner_tutorials

catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

如下两图所示

ROS(2)编写第一个ROS launch文件—下半部分(代码和实操)_第1张图片

ROS(2)编写第一个ROS launch文件—下半部分(代码和实操)_第2张图片

在catkin_ws工作空间中添加环境变量,如图

ROS(2)编写第一个ROS launch文件—下半部分(代码和实操)_第3张图片

rospack 这个命令不但可以查找软件包的所在目录,还可以查看一个软件包的依赖包都有哪些:如上图

罗列出来的这 3 个软件包中,比如 roscpp 这个软件包的依赖包又有哪些: ROS(2)编写第一个ROS launch文件—下半部分(代码和实操)_第4张图片

对有 beginner_tutorials 包来说,它的依赖包(roscpp、rospy、std_msgs)的依赖包,就是 beginner_tutorials 包的间接依赖包: 

ROS(2)编写第一个ROS launch文件—下半部分(代码和实操)_第5张图片

在上面我们讲解了工作空间和功能包的定义、构成、依赖、创建和编译。下面进入正题,launch文件的创立(简单版)

roscd  beginner_tutorials

mkdir launch

cd launch

gedit turtlemimic.launch

添加下面的代码:

 
 
 
 
 
 
 

实际效果如图:

ROS(2)编写第一个ROS launch文件—下半部分(代码和实操)_第6张图片

ROS(2)编写第一个ROS launch文件—下半部分(代码和实操)_第7张图片

解释程序:

上面的代码,创建了2个 ros 节点, 并以不同命名空间标签区分,所以两个节点的名字都是一样的也没关系。

    : 这个标签是其他标签的根标签,简单的说,它就是其他标签的容器。
    : 它可以做成一个组, 简单的比喻, 就像是 C++里面的namespace一样,并且这个标签里的”ns” 指的就是:namespace(命名空间)。
    : 这个标签的效果:就是在终端中使用 rosrun 命令来启动一个节点。 “pkg”参数:软件(或程序)包名;

如何运行这个 launch 文件: (运行脚本文件,不像运行rosrun命令,不需要提前在一个终端中运行 roscore 命令。如果你没有启动roscore命令,这个roslaunch 会自动启动 /rosout 节点;如果你先前启动了roscore,这个roslaunch就不会再启动/rosout节点了。)

然后输入以下指令,运行启动文件:

roslaunch beginner_tutorials turtlemimic.launch

效果如下,启动两个海龟节点,PS两个窗口是重叠在一起的,需要拉开
ROS(2)编写第一个ROS launch文件—下半部分(代码和实操)_第8张图片

好啦,我们就完成了一简单的launch文件的编写!~~ 

你可能感兴趣的:(ROS系统)