Repository Summary
Description | Large-scale, multi-robot simulation of a teeming warehouse in Open 3D Engine (O3DE), to be presented at ROSCon2023 |
Checkout URI | https://github.com/robotecai/roscon2023demo.git |
VCS Type | git |
VCS Version | development |
Last Updated | 2025-02-20 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
Name | Version |
---|---|
ur_description | 2.1.0 |
blind_path_follower | 0.0.0 |
blind_path_follower_msgs | 0.0.0 |
global_path_lock | 0.1.0 |
lane_provider_msgs | 0.0.0 |
lock_service_msgs | 0.0.0 |
otto1500_description | 0.0.0 |
otto600_description | 0.0.0 |
otto_deliberation | 0.0.0 |
otto_fleet_nav | 1.0.0 |
roscon2023_demo | 0.0.0 |
ur_palletization | 0.0.0 |
README
Robotized fulfillment center
An Open 3D Engine (O3DE) multi-robot demo.
The project
This project demonstrates O3DE use for a complex robotic simulation through integration with modern ROS 2 stacks: nav2 and MoveIt2. You can learn more about the features of O3DE for robotics and how to get started in O3DE documentation.
Levels
- DemoLevel1: 30x100 meters scene with 4 conveyor belts, and 4 robotic arms. Suitable for 4-8 AMRs.
- DemoLevel2: 90x100 meters, three times larger, and 12 robotic arms, suitable for 12-24 AMRs.
- RobotsSuperShot: a level showcasing 3D models, with several robots, a human, and a forklift. Some robots are not equipped with all components yet, but you are welcome to try and make them work!
- RobotImportLevel: a small enclosed space with a table, good for importing your own robot.
- DemoStereo: a level showcasing HIL setup with AMD KRIA and stereo cameras. Visit KRIA depth demo for more information.
Detailed description
UR20 robot arms controlled by MoveIt2 with pilz_industrial_motion_planner. Boxes are supplied by conveyor belts, which are implemented through spawning when below a certain number in an area. UR20 arms are placing boxes based on a ground truth vision system, which means they look at the scene and that there is no error in pose measurement. UR20 arms start working as soon as an immobile pallet is detected in their load area and will load a configurable number of boxes (up to 18, by default 18) on each pallet.
Pallets are moved around by robots modeled after OTTO 600. Note that these AMRs do not use the software of real OTTO 600 and do not have the same sensors. They can navigate thanks to front/back lidar sensors and operate cargo lifts. OTTO 600 robots have assigned task loops, which are loading, wrapping, and delivering cargo to the other end of the warehouse. They use a nav2 action server to realize their paths, and also a custom path follow solution for docking and unloading (for simplicity). Note that robots follow their task independently but see and avoid each other and people walking around. On the other hand, human workers don’t see robots, as they use navigation through a Gem and only consider static scene objects.
How does it look like
The project includes
- Scenery initially created using a Warehouse project template, but many new models have been added.
- Robotic Arms imported using URDF description provided by Universal Robotics for their UR20 collaborative robot. The prefabs are available in a separate Gem.
- AMRs instantiated prefabs of OTTO600 and OTTO1500 robots from OTTO Motors.
- Boxes that are transported using conveyor belts from Warehouse Automation Gem and palletized.
Requirements
Platforms
The project runs on Ubuntu 22.04 with ROS 2 Humble or ROS 2 Iron.
đź’ˇ Note: This demo is not supported on ROS 2 Jazzy! đź’ˇ Note: This demo is not supported on Windows!
Hardware
The demo is rather demanding, as it aims to show what is possible. Minimum specs are not determined, but we ran it on:
- AMD Radeon RX 6800 / NVIDIA GeForce RTX 3070 GPU (8 GB).
- AMD Ryzen 9 5900HX CPU / Intel i7-11800H.
- 64 GB RAM.
For more FPS, a larger scene, and more robots, we used:
- AMD Radeon RX 7900 XT / NVIDIA RTX 3080 Ti (or better) GPU (16 GB).
- AMD Ryzen 9 7950X / Intel i7-12900KF (24 cores) CPU.
- 64 GB RAM.
Docker container environment
Follow the instructions in ./Docker/README file to build and run the project using docker virtualization.
Project Setup
ROS 2 middleware
This project should be used with the rmw_cyclonedds_cpp
as the ROS 2 middleware.
MoveIt2 does not recommend usage of the default RMW and as it is a part of this project using the default RMW will not work.
Install the CycloneDDS RMW by installing its package:
sudo apt install ros-${ROS_DISTRO}-rmw-cyclonedds-cpp
After the installation add this command to your .bashrc
or equivalent file.
export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
This will change the default RMW implementation to CycloneDDS. Source your new configuration:
source ~/.bashrc
Note: The ROS2 daemon may need to be restarted to use the CycloneDDS RMW. Use
ros2 daemon stop
andros2 daemon start
to restart the daemon.
O3DE
- Refer to the O3DE System Requirements documentation to make sure that the system/hardware requirements are met.
- Please follow the instructions to set up O3DE from GitHub.
- This project was tested on O3DE 2409.1.
o3de
2409.1 ando3de-extras
2409.1 are recommended versions, but the newer point-releases should work.
The following commands should prepare O3DE (assuming that the project repository is cloned into ${WORKDIR}
):
```bash cd ${WORKDIR} git clone –branch 2409.1 –single-branch –depth 1 https://github.com/o3de/o3de.git cd o3de git lfs install git lfs pull python/get_python.sh
File truncated at 100 lines see the full file