ROS系列:第四章(一)

四、ROS运行管理

本章主要为解决多级层深的ROS系统中,关联不同功能包,启动繁多ROS节点,功能包、节点、话题、参数重名以及不同主机之上的节点之间的通信问题;

  • 掌握元功能包使用语法;
  • 掌握launch文件的使用语法;
  • 理解什么是ROS工作空间覆盖,以及存在什么安全隐患;
  • 掌握节点名称重名时的处理方式;
  • 掌握话题名称重名时的处理方式;
  • 掌握参数名称重名时的处理方式;
  • 能够实现ROS分布式通信。

1.ROS元功能包

元功能包(metapackage)是Linux的一个文件管理系统的概念。是ROS中的一个虚包,里面没有实质性的内容,但是它依赖了其他的软件包,通过这种方法可以把其他包组合起来 。

作用:

元功能包依赖于ROS中的其他一些功能包,安装该包时会一并安装其他依赖;

实现流程:

  1. 右键src选择Create Catkin Package;
  2. 输入功能包名字 plumbing_my,添加功能包依赖处无所依赖的功能包,直接回车后在package.xml中添加依赖包:

<exec_depend>plumbing_pub_sub</exec_depend>
<exec_depend>plumbing_server_client</exec_depend>
<exec_depend>plumbing_param_server</exec_depend>

​ 添加元功能包请求:

<export>
 <!-- Other tools can request additional information be placed here -->
 <metapackage/>
</export>
  1. 修改 CMakeLists.txt,内容如下:
 cmake_minimum_required(VERSION 3.0.2)
 project(demo)
 find_package(catkin REQUIRED)
 catkin_metapackage()

注意:该 CMakeLists.txt 中最后一行不可以有换行,保证只有四行代码 ,其中第二行是功能包的名字。

编译运行即可;

2.ROS节点运行管理launch文件

launch 文件是一个 XML 格式的文件,可以启动本地和远程的多个节点,还可以在参数服务器中设置参数;
作用:

简化节点的配置与启动,提高ROS程序的启动效率

扫描二维码关注公众号,回复: 16186121 查看本文章

使用:
以小乌龟为例:

  1. 新建launch文件
    在功能包下添加 launch目录, 目录下新建 xxxx.launch 文件,编辑 launch 文件:
<launch>
    <node pkg="turtlesim" type="turtlesim_node"     name="myTurtle" output="screen" />
    <node pkg="turtlesim" type="turtle_teleop_key"  name="myTurtleContro" output="screen" />
</launch>
  1. 调用launch文件
roslaunch 包名 xxx.launch

**注意:**roslaunch 命令执行launch文件时,会自动判断是否存在roscore,如果没有则调用 roscore;ctrl+shift+~快速启动终端

2.1 launch文件—launch标签

标签是所有 launch 文件根标签,充当其他标签的容器

属性:

deprecated = “弃用声明”

作用:

告知用户当前 launch 文件已经弃用

子集标签:

所有其它标签都是launch的子级

2.2 launch文件—node标签

标签用于指定 ROS 节点,是最常见的标签,需要注意的是: 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

子集标签:

  • env 环境变量设置
  • remap 重映射节点名称
  • rosparam 参数设置
  • param 参数设置

猜你喜欢

转载自blog.csdn.net/TianHW103/article/details/127499252