This Gem enables users to develop robotic simulations through ROS2 tools and components.
To be determined: supported versions
- O3DE
- ROS2 Galactic (not tested but could also work with Foxy and Humble).
- Ubuntu 20.04.
- Direct and natural support of ROS2 ecosystem:
- No bridges. Your simulation node will function as any other ROS2 node.
- This is also good for performance
- Easy way to include ROS2 dependencies.
- No bridges. Your simulation node will function as any other ROS2 node.
- Sensors:
- Sensor Component serving as a handy abstraction.
- Example implementations of Lidar, Camera, IMU sensors.
- Including a few Assets and prefabs which are ready to use.
- Automated handling of:
- Simulation time, publishing
/clock
supporting non-real time. - Publishing of transformation frames (
/tf
,/tf_static
). - Validation for topic and namespace names.
- Simulation time, publishing
- Robot Control Component:
- A quick to use method of controlling your robot with Twist messages.
- Can be used with custom LUA scripting.
For a "feel" of these features, see an example project which uses this Gem to run navigation stack.
The Gem is built through building a project which uses it. Make sure to source your ros2 workspace before building.
To use this Gem in your project, you need to register the Gem with O3DE. First, clone this repository. Then, in o3de folder:
scripts/o3de.sh register --gem-path <PATH_TO_CLONED_ROS2_GEM>
scripts/o3de.sh enable-gem -gn ROS2 -pp <PATH_TO_YOUR_PROJECT>
You can test O3DE ROS2 Gem with this project. It will allow you to run robot navigation. All necessary assets are included.
This section is to be detailed.
Once you are set up and familiar with the example project, consider the following steps:
- Create a new O3DE project with this Gem enabled.
- Create or import Assets for your robots and environment.
- You can use formats supported by O3DE.
- It will be possible to import your robot from URDF in the future. The work is ongoing.
- Determine which sensors you need to simulate.
- Some sensors are already implemented in this Gem.
- They might require specialization (implementation specific for particular models).
- You might want to consider tradeoffs between performance and realism in each case.
- Use ROS2SensorComponent as a base class if you are implementing a new sensor.
- Some sensors are already implemented in this Gem.
- Develop necessary sensors and their prefabs.
- Consider developing additional abstraction to handle spawning and despawning robots.
- This would also be a valuable contribution to the Gem.
- Develop your scene and simulation scenario, placing Assets and configuring Components.
Enjoy simulation with some of many ROS2 packages and projects in ROS2 ecosystem.