Skip to content

Commit

Permalink
Merge branch 'o3de:stabilization/2310' into stabilization/2310
Browse files Browse the repository at this point in the history
  • Loading branch information
RoddieKieley committed Oct 9, 2023
2 parents a68dad4 + f2354d2 commit b3377c8
Show file tree
Hide file tree
Showing 16 changed files with 101 additions and 87 deletions.
18 changes: 9 additions & 9 deletions content/docs/user-guide/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,15 @@ Welcome to the O3DE User Guide! This documentation contains information and guid

Read about [the features provided by Open 3D Engine](/docs/welcome-guide/features-intro).

| Documentation | Details |
|--------------------------------------|---------|
| [Assets](assets/) | Learn about O3DE's asset management tools and pipeline. |
| [Build](build/) | Learn how to use the CMake generator with O3DE projects to generate IDE projects and build them. |
| [Components](components/) | Learn about the components that add functionality to your entities in O3DE. |
| [Editor](editor/) | Learn how to use the O3DE Editor. |
| [Settings Registry](settings/) | Learn how to use the Settings Registry to maintain settings and configurations for O3DE applications and tools. |
| [Gems](gems/) | Learn about the Gems that extend O3DE.|
| [Interactivity](interactivity/) | Learn how to implement player navigation controls and other world interaction methods. |
| Documentation | Details |
|--------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------|
| [Assets](assets/) | Learn about O3DE's asset management tools and pipeline. |
| [Build](build/) | Learn how to use the CMake generator with O3DE projects to generate IDE projects and build them. |
| [Components](components/) | Learn about the components that add functionality to your entities in O3DE. |
| [Editor](editor/) | Learn how to use the O3DE Editor. |
| [Settings Registry](settings/) | Learn how to use the Settings Registry to maintain settings and configurations for O3DE applications and tools. |
| [Gems](gems/) | Learn about the Gems that extend O3DE. |
| [Interactivity](interactivity/) | Learn how to simulate robots, implement player navigation controls and other world interaction methods. |
| [Networking](networking/) | Learn about the low-level networking stack in O3DE and the multiplayer framework that uses it to provide multiplayer features in games and simulations. |
| [Optimization](optimization/) | Learn how to optimize your O3DE project. |
| [Packaging](packaging/) | Learn how to package your O3DE-based product for release. |
Expand Down
16 changes: 11 additions & 5 deletions content/docs/user-guide/gems/reference/robotics/ros2.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ description: The ROS 2 Gem helps build robotic simulations with Robot Operating
toc: true
---

<!-- # O3DE ROS2 Gem -->
<!-- # O3DE ROS 2 Gem -->

The **ROS 2 Gem** uses the [Robot Operating System (ROS)](https://docs.ros.org/en/rolling/index.html) to enable
robotic simulation in **Open 3D Engine (O3DE)**. The ROS 2 Gem has the following features:
Expand All @@ -14,10 +14,11 @@ robotic simulation in **Open 3D Engine (O3DE)**. The ROS 2 Gem has the following
* Does not use any bridges to communicate between ROS and O3DE. A simulation node will function as any other ROS 2 node.
* Enables you to directly include ROS 2 headers and write ROS 2 code in O3DE.
* Having no bridge improves communication performance.
* Custom messages, services, and actions just work!
* Provides an easy way to include ROS 2 dependencies.
* Sensors:
* Are abstracted through the Sensor Component, which takes care of the publishing of sensor data and common settings such as frequency.
* Features several types of configurable, extendable sensors such as Lidar, Camera (including Depth channel), IMU, and GNSS.
* Are abstracted through the Sensor Component Base, which takes care of the publishing of sensor data and common settings such as frequency.
* Features several types of configurable, extendable sensors such as Lidar (3D and 2D), Camera (including Depth channel), IMU, Odometry, GNSS, and Contact.
* Utilities for automated handling of:
* Simulation time: - publishing `/clock`, with support for non-real time.
* Computing and publishing of transformation frames (`/tf`, `/tf_static`).
Expand All @@ -27,11 +28,16 @@ robotic simulation in **Open 3D Engine (O3DE)**. The ROS 2 Gem has the following
* Robot Control Component:
* Provides a quick-to-use method of controlling your robot.
* Includes support for Twist and AckermannDrive message interfaces.
* Manipulation and Grippers:
* Support for robot arms and other joint systems.
* Configurable components, easy to integrate with MoveIt2.
* Finger and vacuum gripper.
* Vehicle dynamics:
* Ackermann Steering subscribes to the message of type [AckermannDrive](http://docs.ros.org/en/api/ackermann_msgs/html/msg/AckermannDrive.html).
* Differential drive subscribes to the message of type [Twist](http://docs.ros.org/en/noetic/api/geometry_msgs/html/msg/Twist.html).
* URDF/XACRO (experimental).
* Allows robot imports from the URDF format.
* Robot Importer
* Allows robot imports from the URDF, SDFormat and XACRO.
* Supports sensor plugins, creating sensor components in O3DE on import.

## Related topics

Expand Down
17 changes: 9 additions & 8 deletions content/docs/user-guide/interactivity/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@ title: Interactivity and simulation
weight: 800
---

| Topic | Description |
| - | - |
| [Physics](physics) | Simulate physics interactions in O3DE using NVIDIA PhysX for collisions and rigid bodies, <!--NVIDIA Blast to simulate destruction, -->and NVIDIA Cloth to simulate cloth. |
| [Prefabs](prefabs) | Learn about O3DE's prefab system. |
| [Audio](audio) | Control audio and sound effects in your game. |
| [Input](input) | Allow player input such as key presses and mouse clicks, to create an interactive experience in O3DE. |
| [User interface](user-interface) | Create a user interface in your game such as with images, text, buttons, menus, scroll boxes, and heads-up displays (HUDs). |
| [Navigation and pathfinding](navigation-and-pathfinding) | Create a navigation mesh and find walkable paths between entities and positions. |
| Topic | Description |
|----------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [Physics](physics) | Simulate physics interactions in O3DE using NVIDIA PhysX for collisions and rigid bodies, <!--NVIDIA Blast to simulate destruction, -->and NVIDIA Cloth to simulate cloth. |
| [Robotics](robotics) | Create robotic simulations integrated with Robot Operating System (ROS) 2 in O3DE. |
| [Prefabs](prefabs) | Learn about O3DE's prefab system. |
| [Audio](audio) | Control audio and sound effects in your game. |
| [Input](input) | Allow player input such as key presses and mouse clicks, to create an interactive experience in O3DE. |
| [User interface](user-interface) | Create a user interface in your game such as with images, text, buttons, menus, scroll boxes, and heads-up displays (HUDs). |
| [Navigation and pathfinding](navigation-and-pathfinding) | Create a navigation mesh and find walkable paths between entities and positions. |
2 changes: 1 addition & 1 deletion content/docs/user-guide/interactivity/robotics/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ These Gems provide various O3DE components such as sensors, robot control and st
| [ROS 2 Project Configuration](project-configuration.md) | Learn how to configure, build and run a project with the ROS 2 Gem. |
| [ROS 2 Concepts and Structure](concepts-and-components-overview.md) | Overview of concepts and structure of the ROS 2 Gem, including an overview of its components. |
| [Creating robotic simulation](creating-robotic-simulation.md) | High-level steps to create a robotic simulation with O3DE. |
| [Importing robots](importing-robot.md) | Learn how to import robots using URDF/XACRO importer. |
| [Importing robots](importing-robot.md) | Learn how to import robots using Robot Importer. |
| [Grippers](grippers.md) | Documentation of robotic grippers feature. |
| [Joints Manipulation](joints-manipulation.md) | Joints manipulation, such as with robotic manipulator arms. |
| [Troubleshooting the simulation](troubleshooting.md) | Helpful solutions to some of the most common issues with ROS 2. |
Expand Down
13 changes: 0 additions & 13 deletions content/docs/user-guide/interactivity/robotics/class-diagram.md

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,9 @@ Note that QoS class is a simple wrapper to [`rclcpp::QoS`](https://docs.ros.org/
- `ROS2GNSSSensorComponent`
- `ROS2IMUSensorComponent`
- `ROS2LidarSensorComponent`
- `ROS2Lidar2DSensorComponent`
- `ROS2OdometrySensorComponent`
- `ROS2ContactSensorComponent`
- __Robot control__
- `AckermannControlComponent`
- `RigidBodyTwistControlComponent`
Expand All @@ -62,8 +64,6 @@ Note that QoS class is a simple wrapper to [`rclcpp::QoS`](https://docs.ros.org/
- `JointsArticulationControllerComponent`
- `JointsPIDControllerComponent`

See the [class diagram](/docs/user-guide/interactivity/robotics/class-diagram/) to understand how components are connected.

### Frames

`ROS2FrameComponent` is a representation of an interesting physical part of the robot. It handles the spatio-temporal relationship between this part and other frames of reference. It also encapsulates namespaces, which help to distinguish between different robots and different parts of the robot, such as in the case of multiple identical sensors on one robot.
Expand All @@ -72,13 +72,13 @@ All Sensors and the Robot Control components require `ROS2FrameComponent`.

### Sensors

Sensors acquire data from the simulated environment and publish it to ROS 2 domain. Sensor components derive from `ROS2SensorComponent`.
Sensors acquire data from the simulated environment and publish it to ROS 2 domain. Sensor components derive from `ROS2SensorComponentBase`.

- Each sensor has a configuration, including one or more Publishers.
- Sensors publish at a given rate (frequency).
- Sensors publish at a given rate (frequency), using one of two event sources: frame update or physics scene simulation events.
- Some sensors can be visualized.

If your sensor is not supported by the provided sensor components, you will most likely need to create a new component deriving from `ROS2SensorComponent`.
If your sensor is not supported by the provided sensor components, you will most likely need to create a new component deriving from `ROS2SensorComponentBase`.
When developing a new sensor, it is useful to look at how sensors that are already provided within the ROS2 Gem are implemented.
Consider adding your new sensor as a separate Gem. A good example of such sensor Gem is the [RGL Gem](https://github.com/RobotecAI/o3de-rgl-gem).

Expand Down Expand Up @@ -162,13 +162,3 @@ All used services types are defined in the **gazebo_msgs** package.
```
ros2 service call /get_spawn_point_info gazebo_msgs/srv/GetModelState '{model_name: 'spawn_spot'}'
```

## Related topics

| Topic | Description |
|-----------------------------------------------|----------------------------------|
| [ROS 2 Gem class diagram](class-diagram.md) | Class diagram for the ROS 2 Gem. |




Loading

0 comments on commit b3377c8

Please sign in to comment.