Skip to content

Commit 00181e4

Browse files
Update robotics content
Signed-off-by: Jan Hanca <jan.hanca@robotec.ai>
1 parent 5b848c9 commit 00181e4

14 files changed

+70
-64
lines changed

content/docs/user-guide/interactivity/robotics/_index.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,12 @@ These Gems provide various O3DE components such as sensors, robot control and st
1313
| [ROS 2 Project Configuration](project-configuration.md) | Learn how to configure, build and run a project with the ROS 2 Gem. |
1414
| [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. |
1515
| [Creating robotic simulation](creating-robotic-simulation.md) | High-level steps to create a robotic simulation with O3DE. |
16-
| [Importing robots](importing-robot.md) | Learn how to import robots using Robot Importer. |
17-
| [Grippers](grippers.md) | Documentation of robotic grippers feature. |
18-
| [Joints Manipulation](joints-manipulation.md) | Joints manipulation, such as with robotic manipulator arms. |
1916
| [Deploying simulation](deploying-simulation.md) | Building standalone simulation. |
17+
| [Vehicle Dynamics](vehicle-dynamics.md) | Drive your robot with skid steering or Ackermann drive models. |
18+
| [Joints Manipulation](joints-manipulation.md) | Control robotic manipulators and joints. |
19+
| [Grippers](grippers.md) | Documentation of robotic grippers feature. |
2020
| [Georeference](georeference.md) | Link your scene with the existing location. |
21+
| [Importing robots](importing-robot.md) | Learn how to import robots using Robot Importer. |
2122
| [Troubleshooting the simulation](troubleshooting.md) | Helpful solutions to some of the most common issues with ROS 2. |
2223

2324

@@ -26,7 +27,6 @@ These Gems provide various O3DE components such as sensors, robot control and st
2627
| Topic | Description |
2728
| -------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- |
2829
| [ROS 2 Gem reference](/docs/user-guide/gems/reference/robotics/ros2) | Gem reference documentation for ROS 2 Gem. |
29-
| [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. |
3030
| [Open 3D Engine Contributor guide](/docs/contributing) | Read this guide if you wish to contribute to the ROS 2 Gem. |
3131

3232

content/docs/user-guide/interactivity/robotics/concepts-and-components-overview.md

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
linkTitle: Concepts and Structure
33
title: ROS 2 Concepts and Structure
44
description: Understanding basic concepts and structure of the ROS 2 Gem in Open 3D Engine (O3DE).
5-
weight: 300
5+
weight: 120
66
toc: true
77
---
88

@@ -22,7 +22,7 @@ Note that the simulation node is handled through `ROS2SystemComponent` - a singl
2222
Typically, you will be creating publishers and subscriptions in order to communicate with the ROS 2 ecosystem using common topics.
2323
This is done through [rclcpp API](https://docs.ros.org/en/humble/p/rclcpp/generated/classrclcpp_1_1Node.html#classrclcpp_1_1Node). Example:
2424

25-
```
25+
```cpp
2626
auto ros2Node = ROS2Interface::Get()->GetNode();
2727
AZStd::string fullTopic = ROS2Names::GetNamespacedName(GetNamespace(), m_MyTopic);
2828
m_myPublisher = ros2Node->create_publisher<sensor_msgs::msg::PointCloud2>(fullTopic.data(), QoS());
@@ -131,39 +131,43 @@ See the [Vehicle Dynamics](vehicle-dynamics.md) section.
131131
Before the simulation, you must set up as the component's available spawnables and define the named spawn points in the component's properties via the **O3DE Editor**.
132132
This can be done by adding `ROS2SpawnPointComponent` to a child entity of an entity with `ROS2SpawnerComponent`.
133133
During the simulation you can access the names of available spawnables and request spawning by using ROS 2 services.
134-
The names of services are `/get_available_spawnable_names` and `/spawn_entity` respectivly.
134+
The names of services are `/get_available_spawnable_names` and `/spawn_entity` respectively.
135135
_GetWorldProperties.srv_ and _SpawnEntity.srv_ types are used to handle these features.
136136
In order to request the defined spawn point names, you can use the `/get_spawn_points_names` service with the `GetWorldProperties.srv` type.
137137
Detailed information about specific spawn point, such as pose, can be accessed using the `/get_spawn_point_info` service with the `GetModelState.srv` type.
138138
All used services types are defined in the **gazebo_msgs** package.
139139

140140
- **Spawning**: To spawn, you must pass in the spawnable name into `request.name` and the position of entity into `request.initial_pose`.
141141
- Example call:
142-
```
142+
```shell
143143
ros2 service call /spawn_entity gazebo_msgs/srv/SpawnEntity "{name: 'robot', initial_pose: {position:{ x: 4.0, y: 4.0, z: 0.2 }, orientation: { x: 0.0, y: 0.0, z: 0.0, w: 0.0 } } }"
144144
```
145145
- **Spawning in defined spawn point**: Pass in a spawnable into `request.name` and the name of the spawn point into `request.xml`.
146146
- Example call:
147-
```
147+
```shell
148148
ros2 service call /spawn_entity gazebo_msgs/srv/SpawnEntity "{name: 'robot', xml: 'spawn_spot'}"
149149
```
150150
- **Spawning using WGS84 coordinates**: You can also spawn objects using geographical location when [Georeference component](georeference.md) is enabled. Set the `reference_frame` to _wgs84_ and provide the coordinates.
151151
- Example call spawning at 52°14′22″N, 21°02′44″E:
152-
```
152+
```shell
153153
ros2 service call /spawn_entity gazebo_msgs/srv/SpawnEntity "{name: 'robot', initial_pose: { position: { x: 52.2406855386909, y: 21.04264386637526, z: 0.0 }, orientation: { x: 0.0, y: 0.0, z: 0.0, w: 0.0 } }, reference_frame: 'wgs84'}"
154154
```
155155
- **Available spawnable names access**: Send the names of available spawnables into `response.model_names`.
156156
- Example call:
157-
```
157+
```shell
158158
ros2 service call /get_available_spawnable_names gazebo_msgs/srv/GetWorldProperties
159159
```
160160
- **Defined spawn points' names access**: Send the names of defined points into `response.model_names`
161161
- Example call:
162-
```
162+
```shell
163163
ros2 service call /get_spawn_points_names gazebo_msgs/srv/GetWorldProperties
164164
```
165165
- **Detailed spawn point info access**: Pass in the spawn point name into `request.model_name` and the defined pose into `response.pose`.
166166
- Example call:
167-
```
167+
```shell
168168
ros2 service call /get_spawn_point_info gazebo_msgs/srv/GetModelState "{model_name: 'spawn_spot'}"
169169
```
170+
171+
{{<note>}}
172+
The `ROS2ContactSensorComponent`, `ROS2SpawnerComponent`, and `ROS2SpawnComopnent` depend on `gazebo_msg` ROS 2 package that was marked deprecated in ROS 2 _Jazzy_ and will not be available as of ROS 2 _Kilted_. The components are disabled automatically if the package is not available in O3DE 25.05.0.
173+
{{</note>}}

content/docs/user-guide/interactivity/robotics/creating-robotic-simulation.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
linkTitle: Creating a Robotic Simulation
33
title: Creating a Robotic Simulation
44
description: A step-by-step process on how to create a robotic simulation using the ROS 2 Gem in Open 3D Engine (O3DE).
5-
weight: 400
5+
weight: 130
66
toc: true
77
---
88

@@ -19,7 +19,7 @@ toc: true
1919
Once you are set up and familiar with the [example project](/docs/user-guide/interactivity/robotics/overview/#demos), consider the following steps:
2020
1. [Create a new O3DE project](/docs/welcome-guide/create/)
2121
1. It is best to use one of [Project Templates](/docs/user-guide/interactivity/robotics/overview/#templates) for robotics to start quickly.
22-
2. [Registering ROS2 Gem for your Project](/docs/user-guide/project-config/register-gems/) guide.
22+
2. [Register ROS2 Gem for your Project](/docs/user-guide/project-config/register-gems/)
2323
3. Create or import Assets for your robots and environment.
2424
1. You can use formats supported by O3DE.
2525
2. You can [import your robot from URDF/XACRO](/docs/user-guide/interactivity/robotics/importing-robot).
@@ -28,7 +28,7 @@ Once you are set up and familiar with the [example project](/docs/user-guide/int
2828
4. Determine which sensors you need to simulate.
2929
1. Some sensors are already implemented in this Gem.
3030
1. They might require specialization (implementation specific for particular models).
31-
2. You might like to consider tradeoffs between performance and realism in each case.
31+
2. You might like to consider trade-offs between performance and realism in each case.
3232
2. Use `ROS2SensorComponent` as a base class if you are implementing a new sensor.
3333
5. Develop necessary sensors and their prefabs.
3434
7. Develop your scene and simulation scenario, placing Assets and configuring components.

content/docs/user-guide/interactivity/robotics/deploying-simulation.md

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ linkTitle: Deploying Simulation
33
title: Deploying Simulation
44
description: Deploying a headless test tool with O3DE.
55
toc: true
6-
weight: 520
6+
weight: 140
77
---
88

99
## Overview
@@ -17,22 +17,22 @@ For detailed instructions, please refer to the [Packaging and Release](docs/user
1717
## Step-by-Step Project Template Release Example
1818

1919
This is an example of how to build a standalone package that can be run without the need for installing O3DE.
20-
We will use one of [project templates](/docs/user-guide/interactivity/robotics/overview/#templates) to create a new project that will be build as monohlitic GameLauncher.
20+
We will use one of [project templates](/docs/user-guide/interactivity/robotics/overview/#templates) to create a new project that will be build as monohlitic _GameLauncher_.
2121
This is a step-by-step example of a minimal use case.
2222
You can use different project names and modify the process (e.g., by bundling assets).
2323
Note that several prerequisites are required:
2424

2525
- O3DE setup from source
2626
- [ROS2](https://github.com/o3de/o3de-extras/tree/development/Gems/ROS2) Gem registered
27-
- [WarehouseSample](https://github.com/o3de/o3de-extras/tree/development/Gems/WarehouseSample) Gem registered
28-
- [RosRobotSample](https://github.com/o3de/o3de-extras/tree/development/Gems/RosRobotSample) Gem registered
27+
- [WarehouseAssets](https://github.com/o3de/o3de-extras/tree/development/Gems/WarehousAssets) Gem registered
28+
- [ROS2SampleRobots](https://github.com/o3de/o3de-extras/tree/development/Gems/ROS2SampleRobots) Gem registered
2929

3030
Ensure that other Gems are enabled if you intend to build other project templates.
3131

3232
### Creating a Project
3333

3434
Export variables pointing to the necessary paths:
35-
```bash
35+
```shell
3636
export O3DE_HOME=/home/User/github/o3de/
3737
export O3DE_EXTRAS_HOME=/home/User/github/o3de-extras/
3838
export PROJECT_NAME=Ros2Project
@@ -43,20 +43,20 @@ Adjust the locations for the variables `O3DE_HOME` and `O3DE_EXTRAS_HOME` to mat
4343
If you are deploying an existing project, adjust `PROJECT_NAME` to the project's name and `PROJECT_PATH` to the project's location.
4444

4545
Create a project from a template:
46-
```bash
46+
```shell
4747
${O3DE_HOME}/scripts/o3de.sh create-project --project-path $PROJECT_PATH --template-path ${O3DE_EXTRAS_HOME}/Templates/Ros2ProjectTemplate -f
4848
```
4949

5050
## Toolset build
5151

5252
Build the toolset to process all necessary assets:
53-
```bash
53+
```shell
5454
cd ${PROJECT_PATH}
5555
cmake -B build/linux -G "Ninja Multi-Config" -DLY_DISABLE_TEST_MODULES=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DLY_STRIP_DEBUG_SYMBOLS=ON
56-
cmake --build build/linux --config profile --target ${PROJECT_NAME} ${PROJECT_NAME}.Assets
56+
cmake --build build/linux --config profile --target ${PROJECT_NAME} ${PROJECT_NAME}.Assets ${PROJECT_NAME}.GameLauncher
5757
```
5858

59-
In the command above, you are instructed to build the `${PROJECT_NAME}.Assets` target, triggering the processing of all assets during the build. In larger projects, it is recommended to run the AssetProcessor directly. Refer to the [Process assets](docs/user-guide/packaging/windows-release-builds/#process-assets) section to learn more. Note that you can re-use your development build.
59+
In the command above, you are instructed to build the `${PROJECT_NAME}.Assets` target, triggering the processing of all assets during the build. In larger projects, it is recommended to run the _AssetProcessor_ directly. Refer to the [Process assets](docs/user-guide/packaging/windows-release-builds/#process-assets) section to learn more. Note that you can re-use your development build.
6060
Note that you can re-use your development build.
6161
In that case, you need to run Asset Processor and verify if all assets were built (without any errors).
6262

@@ -67,14 +67,14 @@ It also excludes large editor-only frameworks like Qt.
6767
Refer to [Create a project game release layout](docs/user-guide/packaging/windows-release-builds/#create-a-project-game-release-layout) to learn more.
6868

6969
To perform a monolithic build, use the `install` target:
70-
```bash
70+
```shell
7171
cmake -B build/linux_mono -S . -G "Ninja Multi-Config" -DLY_MONOLITHIC_GAME=1
7272
cmake --build build/linux_mono --target install --config release
7373
```
7474

75-
In the install directory `${PROJECT_PATH}/install/bin/Linux/release/Monolithic/`, you can find a package containing all necessary binaries and archives to run your simulation in the cloud or on another computer.
75+
In the installation directory `${PROJECT_PATH}/install/bin/Linux/release/Monolithic/`, you can find a package containing all necessary binaries and archives to run your simulation in the cloud or on another computer.
7676

77-
```
77+
```shell
7878
# tree ${PROJECT_PATH}/install/bin/Linux/release/Monolithic/
7979
.
8080
├── Cache
@@ -90,14 +90,14 @@ In the install directory `${PROJECT_PATH}/install/bin/Linux/release/Monolithic/`
9090
# Headless simulation
9191

9292
Often simulation needs to be run headless (e.g., as a part of CI/CD pipeline).
93-
This can be achieved by disabling RHI in the GameLauncher.
93+
This can be achieved by disabling RHI in the _GameLauncher_.
9494
To run headless, start with `-NullRenderer -rhi=null`.
95-
```bash
95+
```shell
9696
./Ros2Project.GameLauncher -NullRenderer -rhi=null
9797
```
9898
The above command should work for environments that have no GPU.
9999
If your simulation relies on the ROS 2 Camera component, you will need RHI.
100100
In such cases, it can be simulated with `console-mode` switch:
101-
```bash
101+
```shell
102102
./Ros2Project.GameLauncher -console-mode
103103
```

content/docs/user-guide/interactivity/robotics/georeference.md

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,12 @@ linkTitle: Georeference
33
title: Georeference
44
description: Applying georeference for O3DE level
55
toc: true
6-
weight: 520
6+
weight: 300
77
---
88

99
## Overview
1010

11-
Robotics simulations often need to work with geographical locations,
12-
in order to simulate behavior and data streams of robots that use global positioning devices and geo-reference APIs.
13-
Georeference Component will allow you to work with such data.
14-
11+
Robotics simulations often need to work with geographical locations, in order to simulate behavior and data streams of robots that use global positioning devices and geo-reference APIs. Georeference Component will allow you to work with such data.
1512

1613
### How to setup a simulated geographical location
1714

@@ -27,7 +24,6 @@ Good candidates for such a place include characteristic locations such as inters
2724

2825
Now, all that is left is to set this entity in configuration of **Georeference Editor Level Component** alongside WGS-84 coordinates.
2926

30-
3127
## Usage
3228

3329
With the Georeference Editor Level Component setup correctly, you can use:
@@ -41,7 +37,7 @@ This texture was imported into O3DE and applied as texture to a plane primitive
4137
The next plane was scaled according to the scale and resolution of the downloaded map.
4238

4339
Next in knowing the location (for example city hall) was placed ENU entity with WGS-84 coordinates:
44-
```
40+
```code
4541
50.06175556 North
4642
19.93727500 East
4743
```
@@ -54,7 +50,7 @@ Georeference Editor Level Component can be added only to the level entity.
5450

5551

5652
The used ortophotomap has following geographical directions:
57-
```
53+
```code
5854
North - up
5955
East - left
6056
```

content/docs/user-guide/interactivity/robotics/grippers.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@ linkTitle: Grippers
33
title: Grippers
44
description: Simulating robotic grippers with ROS 2 Gem Open 3D Engine (O3DE).
55
toc: true
6-
weight: 520
6+
weight: 220
77
---
88

99
## Overview
1010

1111
Grippers are one of the most widely used effectors in robotic manipulation.
12-
The simulated robotic grippers are controlled by ROS 2 action servers that allow the user to track the current status of the gipping operation.
12+
The simulated robotic grippers are controlled by ROS 2 action servers that allow the user to track the current status of the gripping operation.
1313
The API to control the gripper through an action server is available in [control_msgs](https://github.com/ros-controls/control_msgs/blob/master/control_msgs/action/GripperCommand.action).
1414
### Supported features
1515

content/docs/user-guide/interactivity/robotics/importing-robot.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
linkTitle: Importing robot
33
title: Importing robots
44
description: Importing robots from description file with ROS 2 Gem in Open 3D Engine (O3DE).
5-
weight: 450
5+
weight: 400
66
toc: true
77
---
88

content/docs/user-guide/interactivity/robotics/importing-robot/importing-turtlebot4.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
linkTitle: Importing Turtlebot 4
33
title: Importing Turtlebot 4
44
description: Robot Importer example - importing Turtlebot 4
5-
weight: 100
5+
weight: 460
66
---
77

88
## Introduction

content/docs/user-guide/interactivity/robotics/importing-robot/sdformat-plugins.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
linkTitle: SDFormat plugins
33
title: SDFormat plugins
44
description: Detailed description of support of SDFormat plugins in Robot Importer.
5-
weight: 100
5+
weight: 470
66
---
77

88
## Introduction

content/docs/user-guide/interactivity/robotics/importing-robot/sdformat-sensors.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
linkTitle: SDFormat sensors
33
title: SDFormat sensors
44
description: Detailed description of support of SDFormat sensors in Robot Importer.
5-
weight: 100
5+
weight: 480
66
---
77

88
## Introduction

0 commit comments

Comments
 (0)