Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

sub-page describing SDFormat sensor importer #2515

Merged
merged 4 commits into from
Mar 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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. |
| [Packaging](packaging/) | Learn how to package your O3DE-based product for release. |
| [Programming](programming/) | Learn about core engine programming concepts in O3DE. |
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. |
6 changes: 3 additions & 3 deletions content/docs/user-guide/interactivity/robotics/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@ description: Learn how to create robotics simulation in Open 3D Engine (O3DE) wi
These Gems provide various O3DE components such as sensors, robot control and steering, manipulator arms, and support for importing robots from common formats.

| Topic | Description |
|---------------------------------------------------------------------|-----------------------------------------------------------------------------------------------|
| ------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
| [Overview](overview.md) | Overview of Gems, Templates and demos for robotics in O3DE. |
| [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) | 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. |
| [Deploying simulation](deploying-simulation.md) | Building standalone simulation. |
Expand All @@ -23,7 +23,7 @@ These Gems provide various O3DE components such as sensors, robot control and st
## Related topics

| Topic | Description |
|----------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------|
| -------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- |
| [ROS 2 Gem reference](/docs/user-guide/gems/reference/robotics/ros2) | Gem reference documentation for ROS 2 Gem. |
| [Setting up CLion IDE](https://github.com/o3de/o3de-extras/blob/development/Gems/ROS2/docs/guides/development_in_clion.md) | CLion IDE project setup to support the ROS 2 Gem. |
| [Open 3D Engine Contributor guide](/docs/contributing) | Read this guide if you wish to contribute to the ROS 2 Gem. |
jhanca-robotecai marked this conversation as resolved.
Show resolved Hide resolved
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