Steve Pham 3db6b363bc Cherry pick fix for engine version dependencies update (#727) преди 1 година
..
Assets 701d5f4c37 remove unknown assets преди 1 година
Code 2f9a8a71fa Update PhysX5 references for robots related files (#665) преди 1 година
Registry fc0e50e7a4 Warehouse automation gem (#440) преди 1 година
docs 650bfa1440 Update documentation in gems (#633) преди 1 година
.clang-format fc0e50e7a4 Warehouse automation gem (#440) преди 1 година
CMakeLists.txt fc0e50e7a4 Warehouse automation gem (#440) преди 1 година
README.md 650bfa1440 Update documentation in gems (#633) преди 1 година
gem.json 3db6b363bc Cherry pick fix for engine version dependencies update (#727) преди 1 година
preview.png fc0e50e7a4 Warehouse automation gem (#440) преди 1 година

README.md

Apache License, Version 2.0

Warehouse Automation Gem for Open 3D Engine (O3DE)

Requirements

  • Any O3DE project with the ROS 2 Gem enabled.

Please refer to O3DE documentation to learn more about Gems and about registering Gems in the system and O3DE projects.

Description

This Gem contains a set of models and prefabs with underlying O3DE components that can be used to create a warehouse simulation scene. It includes a conveyor belt with visuals and physical simulation as well as a proximity sensor that can be used to stop the belt, such as when transported goods reach a certain position. The conveyor belt is built from smaller pieces that can be put together in any configuration, allowing for twists and turns. Additionally, this Gem includes a sample palletizer configuration, in which one conveyor belt splits and feeds into two pick-up stations for robotic arms, and an extra roller conveyor for putting aside goods.

The following assets are available in the Gem as O3DE prefabs:

  • ./Assets/Factory/ConveyorLine.prefab - a sample palletizer configuration
  • ./Assets/Factory/ConveyorElements/ConveyorSegments_Turnout.prefab - conveyor belt's element that splits into two and allows for goods distribution using a mechanized flap
  • ./Assets/Factory/ConveyorElements/ConveyorSegments_Straight.prefab - conveyor belt's straight element
  • ./Assets/Factory/ConveyorElements/ConveyorSegments_Turn_90.prefab - conveyor belt's turn element (90 degrees)
  • ./Assets/Factory/ConveyorElements/ConveyorSegments_End.prefab - conveyor belt's end element with an extra flap to keep transported goods positioned

Images of all prefabs are given in the next section.

The proximity sensor is an O3DE component with no corresponding visualization. It uses AzPhysics::RayCastRequest to check for collisions in its range and returns continuously the result of this test via ProximitySensorNotificationBus. Any O3DE component can connect to this bus and react to certain events. The sensor and the bus are also available for scripting in ScriptCanvas. It is possible to set the frequency and the range of the sensor. The visualization beam can be disabled.

The Gem was implemented primarily for ROSCon2023Demo project. An example of its use can be also found in ROS 2 Project Template.

Screenshots

Conveyor belt parts

From left: ConveyorSegments_End.prefab, ConveyorSegments_Turn_90.prefab, ConveyorSegments_Turnout.prefab, and ConveyorSegments_Straight.prefab

Sample palletizer configuration

Sample palletizer configuration with conveyor belt split into two pick-up stations (no robotic arms available in this Gem) and a roller conveyor for pallets.

Proximity sensor

Three instances of proximity sensors with a cube mesh primitive used for visualization. Note different range configurations between the left and the middle sensors. The beam of the right sensor is green due to the detection of a sample box.

Acknowledgments

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.