This is an O3DE project to demonstrate the usage of Simulation Interfaces, a common simulation standard developed by Robotec AI and Open Robotics to enable interoperability between different robotic simulators. This project was used during the ROSCon 2025 talk TODO: Add talk title and link.
Additionally, the project contains two standard O3DE robotic templates: Ros2ProjectTemplate and Ros2RoboticManipulationTemplate, which can be used for other experiments.
Note: This project runs on Linux only, as O3DE ROS 2 integration is currently supported only on Linux.
The repository is organized as follows:
Examples: contains sample ROS 2 scripts to interact with the simulation.Gems: placeholder for O3DE Gems pulled as submodules.Project: contains the O3DE project files.ros2_ws: contains a ROS 2 workspace with some additional packages.Scripts: placeholder for the script used during the ROSCon talk pulled as a submodule. TODO: add submodule when ready
Follow the instructions in INSTALL.md to set up and build the project.
You can find the instructions to run the project in different scenarios and configuration in RUN.md.
The O3DE project was generated using the Ros2RoboticManipulationTemplate template using O3DE 25.05.1. Next, the project was modified as follows:
- The Warehouse level based on the Isaac Sim assets (
warehouse_with_forklifts.usd) was added as the main scene. - The Dingo D robot was imported from the Dingo ROS 2 Description package.
- The Lidar sensor was added to the Dingo D robot to make it usable in navigation scenarios; lights were added to the robot for better look.
- The content of
Ros2ProjectTemplatewas merged into the project to add another demonstrator scene (3 scenes in total). - The UR10 robot was added to the simulation; the robot was modified to include a gripper from Panda Franka Emika robot.
The project started with a Warehouse scene from Isaac Sim already in GLB format. The following steps were taken to import the scene into O3DE:
- The GLB files were converted to GLTF format using
gltf-pipelinetool (O3DE does not support GLB textures import natively). - The GLTF files were imported into Blender for adjustments of materials.
- The adjusted GLTF files were imported into O3DE Editor and native O3DE material files were created manually.
- (optional) The colliders were added manually in O3DE Editor.
- (optional) Additional entity to fix the pivot point position (located outside the objects in the original files) was added.
- The scene/objects was saved in O3DE native format.
The Dingo D assets can be directly imported into O3DE from the URDF files using the O3DE ROS 2 Robot Importer tool. The only modification made to the original files was the addition of native O3DE materials to improve the appearance of the robot. The visual quality of the imported robot is not as good as the Warehouse scene, as the original assets are low-poly and do not contain high-quality textures.
The workspace is build based on existing resources with some modifications to add a gripper to the UR robot and to make Dingo package work with ROS2 Humble. In particular:
- Universal_Robots_ROS2_Description fork used in ROSCon2023Demo repository was used as a base (commit
8569a675). The following modifications were made to add the gripper:- The gripper assets were added.
- The urdf/ur_macro.xacro file was modified adding the gripper.
- Universal_Robots_ROS2_Driver repository was used as a base (commit
f06092e4). The following modifications were made to add the gripper:- All packages except
ur_moveit_configwere removed. - The config/controllers.yaml file was modified adding the gripper.
- The srdf/ur_macro.srdf.xacro file was modified including appropriate collision disables.
- All packages except
- Dingo repository was used as a base (commit
68806fd) for the Dingo robot. The following modifications were made to make the robot usable without gazebo in ROS 2 Humble:- All packages except
dingo_descriptionwere removed. - The
dingo_descriptionpackage was modified to remove all references to gazebo and accessories. The files modified are urdf/dingo-d.urdf.xacro and urdf/dingo-o.urdf.xacro. - The
dingo_descriptionpackage was modified to work with ROS 2 Humble
- All packages except
Note: the
dingo_descriptionpackage was used to import the robot into O3DE, and it was stored in the native format after the import was completed. The package is not needed anymore. It is a part of the workspace to allow tracking of changes made to the original files.
