Skip to content

Commit 68fe741

Browse files
Added robot API
1 parent a5be669 commit 68fe741

File tree

3 files changed

+81
-0
lines changed

3 files changed

+81
-0
lines changed

wiki/robots/_Footer.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Antoine Richard -- University of Luxembourg -- Space Robotics Group -- 2023-24

wiki/robots/_Sidebar.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
## Table of Contents
2+
- [Previous (Mode Configurations)](https://github.com/AntoineRichard/OmniLRS/wiki/Environments)
3+
- [How to set up Robots!?](#how-to-set-up-robots)
4+
- [Robots and where to find them](#robots-and-where-to-find-them)
5+
- [Changing the default robot used when starting an environment](#changing-the-default-robot-used-when-starting-an-environment)
6+
- [Next](https://github.com/AntoineRichard/OmniLRS/wiki/Physics)
7+
- [Back to Home](https://github.com/AntoineRichard/OmniLRS/wiki/Home)

wiki/robots/robots.md

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
# How to set up Robots!?
2+
3+
In this page, we will explore how robots can be integrated to OmniLRS.
4+
5+
> [!Note](#how-to-set-up-robots)
6+
> Isaac provides many ways to import, create, or modify existing robots. This can be done through a URDF importer, a mujoco importer, or an Onshape importet. Robots can also be rigged manually from within the UI. We encourage anyone non-familiar with Isaac Sim to [take a look at Isaac's Sim comprehensive suite of tutorials for ROS/ROS2](https://docs.omniverse.nvidia.com/isaacsim/latest/installation/install_ros.html#).
7+
8+
## Robots and where to find them
9+
10+
By default, we provide two robots to be used in the simulation. These are generic non-space robots.
11+
The reasoning behind that is that Space hardware is so unique that end-users would either use generic off-the-shelf robots or highly specialized ones.
12+
Hence we settled with two popular options from [ClearPath Robotics](https://clearpathrobotics.com/) (the Husky and the Jackal), which we fitted with a basic suite of sensors.
13+
14+
Available robots & sensor payloads:
15+
- Husky:
16+
- Velodyne VLP16: `ros2_husky_PhysX_vlp16.usd`
17+
- Velodyne VLP16 + RGB + Depth + IMU: `ros2_husky_PhysX_vlp16_mono_depth_imu.usd`
18+
- Jackal:
19+
- Velodyne VLP16: `ros2_jackal_PhysX_vlp16.usd`
20+
- Velodyne VLP16 + RGB Left + RGB Right + IMU: `ros2_jackal_PhysX_vlp16_stereo.usd`
21+
22+
> [!CAUTION]
23+
> These robots are ROS2 capable only. Their omnigraphs are setup for ROS2. This makes them compatible with SpaceROS.
24+
25+
> [!NOTE]
26+
> This list will grow in the coming month as we try more robots onto it. We are planning on adding Leo Rovers and Quadrupeds in the near future.
27+
28+
## Changing the default robot used when starting an environment
29+
30+
To change the default robot used when starting an environment, you need to edit the `robot_settings` inside the environment config.
31+
The `robot_settings` who defines the set of parameters managing robots provides the following set of parameters.
32+
33+
Arguments:
34+
- `uses_nucleus`: `(str)`, whether or not the robot loader should try to find the robot on Omniverse Nucleus cloud. True means the robot is on nucleus. False the robot is local.
35+
- `is_ROS2`: `(bool)`, if the robot is ROS2 enabled. True if the robot is using ROS2.
36+
- `max_robots`: `(int)`, The maximum amount of robots in the scene.
37+
- `robots_root`: `(str)`, The path where the robots are generated in the scene.
38+
- `parameters`: `(list(RobotsParameters))`, A list of parameters defining robots.
39+
40+
> [!IMPORTANT]
41+
> Large scale environments only support one robot at a time. This is due to the type of algorithms used to render the terrain.
42+
43+
To define a robot one can use the following arguments:
44+
- `robot_name`: `(str)`, the name of the robot. It's mostly used to teleport it or reset it.
45+
- `usd_path`: `(str)`, the path of the robot on nucleus or locally.
46+
- `pose`:
47+
- `position`: `(float,float,float)` x, y, z position.
48+
- `orientation`: `(float,float,float)` w, x, y, z quaternion.
49+
- `domain_id`: `int`, The domain id of the robot. (not functional)
50+
- `target_links`: `(list(str))` The links used to compute the deformation forces when derforming terrains.
51+
52+
> [!IMPORTANT]
53+
> For the large scale environments the position and orientation of the robot is ignored and the `starting_position` parameter is used instead.
54+
> The Z position of the robot is computed automatically.
55+
56+
57+
Example:
58+
```bash
59+
robots_settings:
60+
uses_nucleus: False
61+
is_ROS2: True
62+
max_robots: 5
63+
robots_root: "/Robots"
64+
parameters:
65+
-
66+
robot_name: husky
67+
usd_path: assets/USD_Assets/robots/ros2_husky_PhysX_vlp16.usd
68+
pose:
69+
position: [5.0, 5.0, 0.5]
70+
orientation: [1, 0, 0, 0]
71+
domain_id: 0
72+
target_links: ["front_left_wheel_link", "front_right_wheel_link", "rear_left_wheel_link", "rear_right_wheel_link"]
73+
```

0 commit comments

Comments
 (0)