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页面上阅读其详细信息。

英语原文地址:http://gazebosim.org/tutorials?tut=ros2_overview&cat=connect_ros

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

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


标签: none