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抽象,可用于测量和可视化各种软件的运行时间。