Ignition Gazebo机器人模拟仿真支持ROS1 Noetic和ROS2 Foxy

2022-03-21 15:36:13 浏览数 (1)

Open Robotics的仿真 小组很高兴宣布ROS Noetic和Foxy之Ignition集成的发布!ROS用户可以轻松访问Ignition Citadel,这是Ignition的第一个5年LTS,将一直支持到2025年。

  • https://cloud.tencent.com/developer/article/1663186

下一代的Gazebo

Ignition是下一代Gazebo模拟仿真器,具有更新的体系结构和旨在改善模拟仿真体验的新功能。Ignition的一些新功能包括:

  • 基于插件的物理和渲染抽象-使用您自己的引擎,而无需重新编译模拟仿真器
  • 分层系统,仅加载机器人与之交互的世界的一部分-这允许更大的模拟仿真世界
  • 在多台机器上分布式模拟仿真
  • 高度可定制的基于QtQuick的用户界面
  • 超快速2D运动学物理引擎,平凡物理引擎(TPE)

最重要的是,Ignition已经具有许多习惯Gazebo经典使用的功能,例如:

  • 服务器与客户端分离,实现无头模拟仿真
  • 内置支持多种传感器,例如摄像机,激光雷达,IMU,深度摄像机,磁力计,高度计,气压传感器等。
  • 动画人类演员
  • 用于机器人控制的插件,例如差速驱动和防滑转向
  • 图形界面,用于处理模型,自省属性,控制视角,插入模型等。
  • ROS 1和2集成

模拟仿真

可以在https://github.com/ignitionrobotics/ros_ign中找到集成包。尝试例如:

代码语言:javascript复制
sudo apt install ros-foxy-ros-ign
. /opt/ros/foxy/setup.sh
ros2 launch ros_ign_gazebo_demos rgbd_camera_bridge.launch.py

有关在ROS上使用模拟器的更多详细教程:

  • Ignition Citadel: ROS 1 integration
  • Ignition Citadel: ROS 2 integration

更多案例:

  • Ignition Citadel: ROS 1 demos
  • Ignition Citadel: ROS 2 demos

库和工具

还有更多!Ignition不仅仅是模拟器:它是C 库和工具的集合,可以独立于机器人应用程序上的模拟器使用。可以在ROS软件包或普通C 项目上使用它们。

可以在package.xml中使用(rosdep):

  • ignition-citadel
  • ignition-cmake2
  • ignition-common3
  • ignition-fuel-tools4
  • ignition-gazebo3
  • ignition-gui3
  • ignition-launch2
  • ignition-math6
  • ignition-math6-eigen3
  • ignition-msgs5
  • ignition-physics2
  • ignition-plugin
  • ignition-rendering3
  • ignition-sensors3
  • ignition-tools
  • ignition-transport8
  • sdformat

包括15个库。以下是一些可能特别感兴趣的内容:

Ignition Math

Ignition Math是用于机器人应用程序的通用数学库。它提供了广泛的功能,包括:

  • 类型模板化的姿势,矩阵,向量和四元数类。
  • 形状表示以及用于计算体积,密度,尺寸和其他属性的运算符。
  • 材料属性,质量,惯性,温度,PID,千米数,球坐标和过滤的类。
  • 可选的Eigen组件,可在几种Eigen和Ignition Math类型之间转换。

Ignition Physics

许多物理模拟软件库已针对不同的应用程序(游戏,机器人技术,科学)设计并具有不同的功能(刚性或可变形接触,2d或3d)。Ignition Physics的设计前提是,没有一个单一的物理引擎能够普遍适用于所有模拟环境。根据物理引擎的功能,应该有可能支持一组不同的功能。然后可以根据每个应用程序的上下文为它选择一个物理引擎。

  • 物理引擎功能的粒度定义作为可选的API。
  • 用于在运行时加载具有所需功能的物理引擎的插件接口。
  • 刚体动力学模拟常见方面的功能
    • 从SDFormat文件构造模型。
    • 碰撞形状(例如框,球,圆柱,网格,高度图)。
    • 关节类型(例如旋转,棱柱形,固定,球,螺钉,通用)。
    • 步骤仿真,获取/设置状态,应用输入。
  • 使用dartsim的物理插件的参考实现。
  • CompositeData结构可有效使用API​​中的本机类型。

Ignition Rendering

与Ignition Physics类似,Ignition Rendering是一个C 库,旨在为不同的渲染引擎提供抽象。它提供了用于创建3D图形应用程序的统一API,并支持基于物理的渲染(PBR)。它附带了对Ogre 1和Ogre 2引擎的支持。

Ignition GUI

Ignition GUI建立在Qt Quick之上,可为小部件提供现代的材料设计外观,这些外观在开发机器人应用程序(例如3D视图,绘图,仪表板等)时非常有用,并且可以在方便的统一界面中一起使用。

Ignition GUI附带了几个可立即使用的小部件,并提供了可用于添加自定义小部件的插件界面。

Ignition Plugin

Ignition Plugin是一个瘦库,用于注册插件库并在运行时动态加载它们。

Ignition Common

Ignition Common提供了一组涵盖许多不同用例的组件。视听库支持处理音频和视频文件,图形库可以将各种3D网格纹理文件格式加载到通用的内存表示形式中,而Ignition Common的核心库包含跨Base64编码/解码到线程池的功能。

Ignition Common包含的许多功能中的一些是:

  • AV :基于FFMpeg的音频解码器,以及视频编码器和解码器。
  • Core :Base64编码和解码,电池模型,控制台日志记录,跨平台文件系统接口,URI处理和线程池。
  • Events :鼠标和键盘事件,以及高性能的信号和回调系统。
  • Graphics :Collada,SVG,STL,OBJ和DEM加载程序。内存中的网格,图像和材质表示。动画处理和BVH加载器。
  • Profiler:通用的Profiler抽象,可用于测量和可视化各种软件的运行时间。

0 人点赞