< >
Home » ROS2与Gazebo11入门教程 » ROS2与Gazebo11入门教程-连接至ROS 2

ROS2与Gazebo11入门教程-连接至ROS 2

说明:

  • 介绍如何连接Gazebo和ROS

ROS2集成概述

  • Gazebo是一个独立的应用程序,可以独立于ROS或ROS 2使用。Gazebo与这两个ROS版本中任一版本的集成都是通过一组称为gazebo_ros_pkgs的软件包来完成和实现的。这些软件包在Gazebo的C++ API和传输系统与ROS 2的消息和服务之间架起了桥梁。

  • 尚未将ROS 1中的所有功能都移植到ROS 2中。可以在这个议题上检查其移植进展情况

  • 如果您对移植官方或您自己的自定义插件感兴趣,请查看ROS 2迁移贡献指南。

  • ROS 2的gazebo_ros_pkgs是一个元软件包,其中包含以下4个具体的软件包:

  - 1. gazebo_dev软件包:为ROS发行版的默认Gazebo版本提供cmake配置。因此,下游软件包可以仅依赖于gazebo_dev软件包,而无需自己查找Gazebo。

  - 2. gazebo_msgs软件包:用于提供ROS 2与Gazebo交互所使用的消息和服务的数据结构。

  - 3. gazebo_ros软件包:提供方便的C++类和函数,其他插件可以使用这些类和函数,例如gazebo_ros :: Node,以及转换和测试实用程序。此外该软件包还提供一些有用的插件。

  - 4. gazebo_plugins软件包:提供一系列Gazebo插件,用于将传感器和其他功能提供给ROS 2使用。例如,gazebo_ros_camera插件用于发布ROS 2图像,而gazebo_ros_diff_drive插件则提供了一个接口,用于通过ROS 2控制差分驱动机器人并对其进行自检。

目标版本

  • 从ROS 2的Crystal Clemmys发行版开始,其gazebo_ros_pkgs就已发布了相应的debian软件包。

  • 也可以使用相对于ROS 2主支的这个ros2 Gazebo分支,从源代码构建这些软件包。

  • 当前,支持的Gazebo版本是Gazebo 9及更高版本。

与ROS1的区别

  • 在从ROS 1迁移到ROS 2时,对gazebo_ros_pkgs软件包进行了一些更改和重构。

  • 重构这些软件包的一些目标包括:

  • 充分利用ROS 2的新功能,例如无主节点发现(即非集中式发现)。

  • 删除重复Gazebo中已有功能的代码。

  • 通过标准化通用功能(例如ROS命名空间、参数和话题重映射设置方法)来减少代码重复。

  • 利用最新的SDFormat,Gazebo和Ignition API以及ROS 2的风格准则(style guidelines)和代码检查工具(linters)对代码库进行现代化改造。

  • 为所有移植功能增加测试和演示。

  • 可以在gazebo_ros_pkgs Wiki上找到每个插件的详细迁移指南。请阅读以下几个常见的重点内容。

Init(初始化)

  • ROS 1集成要求使用gazebo_ros_api_plugin系统插件启动Gazebo,这会初始化ROS。

  • 而ROS 2没有这样的要求。无需任何插件即可启动Gazebo,而且可以在Gazebo运行时添加启用ROS 2的插件。

Node(节点)

  • 在ROS 1中,每个插件通常有一个或多个ros::NodeHandle实例,以与ROS进行交互。

  • 而在ROS 2中,插件使用的是gazebo_ros :: Node,它允许每个插件在ROS计算图中作为自己的节点存在,且带有自己的参数、命名空间、日志记录器等。插件也无需担心旋转节点或保留回调队列,gazebo_ros会在内部处理所有这些事务。

SDF解析

  • Gazebo ROS插件通常希望通过SDF设置多种配置,而且在ROS 1实现中,插件上有很多重复代码来解析相同的内容,有时还遵循松散的约定。

  • 而在ROS 2中,像命名空间、ROS参数和话题重映射规则这样的常见配置都是由gazebo_ros::Node解析的,因此无需插件每次都重新实现它们。

gazebo_ros_api_plugin

  • 在ROS 1中,gazebo_ros_api_plugin是一个大型插件,捆绑提供了大量功能,给用户提供很少灵活选择加入/退出某些功能的余地。

  • 而在ROS 2中,该插件被拆分为多个更小、功能更集中的插件。

  • 可以在ROS 2迁移:gazebo_ros_api_plugin页面上阅读其详细信息。

参考:

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: ros2与gazebo11入门教程