本章主要内容介绍在ROS中上述问题的解决策略(见本章目录),预期达成学习目标也与上述问题对应:
-
掌握元功能包使用语法;
-
掌握launch文件的使用语法;
-
理解什么是ROS工作空间覆盖,以及存在什么安全隐患;
-
掌握节点名称重名时的处理方式;
-
掌握话题名称重名时的处理方式;
-
掌握参数名称重名时的处理方式;
-
能够实现ROS分布式通信。
---------------------------------------------------
1. 元功能包
我们可以认为它是一本书的目录索引,告诉我们这个包集合中有哪些子包,并且该去哪里下载。
方便用户的安装,我们只需要这一个包就可以把其他相关的软件包组织到一起安装了
接下来给出操作
1. 新建一个功能包
因d为是元包,所以第二个啥都不用加,直接回车创立
2. 修改package 声明依赖关系
3.修改CMakelist
------------------------------------------------------------------------------
----------------------前置-----------------------
2. 管理launch文件
(1)首先创建功能包
再建文件夹
再建文件
内容如下:
<launch>
<node pkg="turtlesim" type="turtlesim_node" name="myTurtle" output="screen" />
<node pkg="turtlesim" type="turtle_teleop_key" name="myTurtleContro" output="screen" />
</launch>
完成后如下
这样节点设置好了,我们运行就可以直接帮我们打开乌龟,不用一个一个ros打开
roslaunch 命令执行launch文件时,首先会判断是否启动了 roscore,如果启动了,则不再启动,否则,会自动调用 roscore
-------------------------
1. launch文件标签——launch
deprecated = "弃用声明" ----使用会出现提示
2. node标签
需要注意的是: roslaunch 命令不能保证按照 node 的声明顺序来启动节点(节点的启动是多进程的)
-
pkg="包名"——节点所属的包
-
type="nodeType"——节点类型(与之相同名称的可执行文件)
-
name="nodeName"——节点名称(在 ROS 网络拓扑中节点的名称)
-
args="xxx xxx xxx" (可选)——将参数传递给节点
-
-----------------------------
-
machine="机器名"——在指定机器上启动节点
-
respawn="true | false" (可选)——如果节点退出,是否自动重启
-
respawn_delay=" N" (可选)——如果 respawn 为 true, 那么延迟 N 秒后启动节点
-
required="true | false" (可选)——该节点是否必须,如果为 true,那么如果该节点退出,将杀死整个 roslaunch
-
ns="xxx" (可选)——在指定命名空间 xxx 中启动节点
-
clear_params="true | false" (可选)——在启动前,删除节点的私有空间的所有参数
-
output="log | screen" (可选)——日志发送目标,可以设置为 log 日志文件,或 screen 屏幕,默认是 log