- Open 3D Engine - an open-source game & simulation engine. O3DE is extendable through modules called Gems. This is one of such Gems.
- Robot Operating System (ROS) - an open-source middleware and, de facto, standard for robotics.
- ROS2 Gem - an open-source module for O3DE that enables simulation for robotics using modern ROS.
Please refer to O3DE documentation to learn more about Gems and about registering Gems in the system and O3DE projects.
- Any O3DE project with the O3DE ROS2 Gem enabled.
This gem contains animated human worker assets that can be easily imported into an O3DE project. The human worker can navigate between the waypoints in the scene and is visible to any robots that maneuver in the same area.
In particular, this gem contains the following components:
- Human worker mesh with textures
- Mesh animations of human standing
- Mesh animations of human walking
- O3DE components for basic navigation of the human worker in a scene
Human worker objects are delivered as O3DE prefabs, containing visual models and physics, along with the required O3DE components. Four prefabs are provided within the gem. The simplest one, HumanWorkerStatic.prefab
, is a prefab combining mesh and textures. It can be used as a decoration in the scene. HumanWorker.prefab
is additionally extended by animations. It does not contain any navigation-related components, therefore only idle animation is used in this case. HumanWorkerRobot.prefab
is a prefab that can be used as a base for the fully functional non-player character (NPC) after adding the description of the scene (waypoints, etc.). HumanWorkerNavigation.prefab
is an extension with placeholders for such descriptions that should be used in projects.
NavigationExample.prefab
prefab contains all the necessities to run the NPC in the scene. In particular, it consists of the animated mesh with textures, and the scene description in the format used by NPC navigation components. The scene description is added to HumanWorkerNavigation.prefab
using O3DE prefab overrides.
HumanWorkerRobot
is a human worker prefab with some navigational components included. The prefab is modified with the overrides to correctly link with the scene description.Endpoints
is a scene descriptor consisting of the ground truth positions used to build the path for the NPC. Two points are included in this example, but the number of points can be increased. All points need to be added to theHumanWorkerRobot
prefabNpc Navigator
component to correctly build the path.HumanWorkerNavigationMesh
is a scene descriptor component presenting the mesh where the NPC can move based on its movement capabilities and the scene itself. Please check Recast framework documentation for more details. Tunable parameters include the size of the bounding box for mesh calculation and NPC characteristics. Please note, that allEndpoints
need to be within the bounding box.DetourNavigation
is a scene descriptor component for finding the path between theEndpoints
within the navigation mesh.
This work is licensed under Apache License, Version 2.0. You may elect at your option to use the MIT License instead. Contributions must be made under both licenses.