Skip to content

Commit

Permalink
Update README.md and documentation for Isaac Sim Extension Module
Browse files Browse the repository at this point in the history
Related to #18
 - Add documentation for Isaac Sim Extension Module
 - Add images for Isaac Sim Extension Module documentation
 - Update README.md with information about Isaac Sim Extension Module
 - Add .gitattributes file to handle large files
 - Add current list of features available in robots
  • Loading branch information
franklinselva committed Sep 2, 2024
1 parent 1db6977 commit f9699c4
Show file tree
Hide file tree
Showing 25 changed files with 181 additions and 0 deletions.
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
docs/resources/* filter=lfs diff=lfs merge=lfs -text
assets/* filter=lfs diff=lfs merge=lfs -text
28 changes: 28 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Space ROS IsaacSim Extension Package

This repository is an extension module for Nvidia's IsaacSim. It provides the following features:

- Simulation Assets for Space Robotics
- ROS2 Interface for Space Robotics
- Extenstions for IsaacSim for Space Robotics

### Prerequisites

| Dependency | Version | Description |
| ---------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| IsaacSim | >=4.0.0 | Nvidia's IsaacSim. You can setup the simulation from official website. Instrcutions [here](https://docs.omniverse.nvidia.com/isaacsim/latest/installation/install_workstation.html) |
| ROS2 | ==Humble | ROS2 Humble acts as a middle layer. This will be soon ported to the native project |

### Installation

1. Clone the repository to your local machine
<!-- TODO: Complete the installation instructions -->

### Documentation

1. Simulation Assets
- [Space Robotics Environments](docs/assets//environments.md)
- [Space Robotics Robots](docs/assets/robots.md)
- [Space Robotics Scenes](docs/assets/scenes.md)
2. ROS2 Interface
- [ROS2 Interface](docs/ros2.md)
22 changes: 22 additions & 0 deletions docs/assets/environments.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Space ROS Environments

At the moment, we only provide the support for environments focusing on International Space Station (ISS), Mars surface ans Lunar surface.

You can find the assets in the directory `./assets/Environments`. These environments are simulation ready and can be used in the IsaacSim.

## List of Environments

| Environment | Description | Preview |
| ------------ | --------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
| ISS | International Space Station | ![ISS](../resources/images/international-space-station.png) |
| ISS Interior | International Space Station Interior for Astrobee and Robonaut2 | ![ISS Interior](../resources/images/interior-of-international-space-station.png) |
| Mars | Mars Surface of size 800 sq.m for extraction and exploration related tasks | ![Mars](../resources/images/mars-environment-curiosity-rover.png) |
| Moon | Lunar Surface of size 800 sq.m for extraction and exploration related tasks | ![Moon](../resources/images/moon-environment.png) |
| Robotnaut2 | Robotnaut2 in Manipulation Room | ![Robotnaut2](../resources/images/robonaut2-chessboard-manipulation.png) |
| Ingenuity Rover Simple Scene | Simple scene with Ingenuity Helicopter for Visual Odometry and Navigation | ![Ingenuity Rover Simple Scene](../resources/images/ingenuity-helicopter-simple.png) |

## Usage

You can use the environments in your simulation by importing the assets in the IsaacSim. The assets are provided in the `./assets/Environments` directory.

You will need to create scenes in the IsaacSim and import the assets in the scene. The scenes can be created using either IsaacSim's Omniverse Kit or Omniverse Create. More information on creating scenes can be found in the [documentation](./scenes.md).
16 changes: 16 additions & 0 deletions docs/assets/robots.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Robot Assets

The robot assets are the models of the robots that can be used in the IsaacSim simulation environment. The robot assets are available in the `./assets/Robots` directory.

## List of Robots

| Robot Name | Description | Preview |
| --------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- |
| [Canadarm2](../robots/canadarm2.md) | Canadarm2 is a robotic arm used on the International Space Station (ISS) for various tasks like capturing and docking spacecraft, moving equipment, etc. | ![Canadarm2](../resources/images/canadarm2.png) |
| Canadarm2 17DoFs | Canadarm2 with 17 Degrees of Freedom (DoFs) | ![Canadarm2 17DoFs](../resources/images/canadarm2-17dof.png) |
| Canadarm1 | Canadarm1 is a robotic arm used for manipulation tasks in space. It is designed for tasks like capturing and docking spacecraft, moving equipment, etc. | ![Space Robot Manipulator](../resources/images/space-station-robotic-arm.png) |
| [Robotnaut2](../robots/robonaut2.md) | Robotnaut2 is a humanoid robot designed for space exploration. It is equipped with a manipulator arm and a camera for performing tasks in space. | ![Robotnaut2](../resources/images/robonaut.png) |
| [Robonaut2 Upper Body](../robots/robonaut2.md) | Robonaut2 Upper Body is the upper part of the Robonaut2 humanoid robot. It is equipped with a manipulator arm and a camera for performing tasks in space. | ![Robonaut2 Upper Body](../resources/images/robonaut-upperbody.png) |
| Curiosity Rover | Curiosity Rover is a Mars rover designed for exploration tasks on the Mars surface. It is equipped with a manipulator arm and a camera for performing tasks. | ![Curiosity Rover](../resources/images/curiosity-rover.png) |
| Perseverance Rover | Perseverance Rover is a Mars rover designed for exploration tasks on the Mars surface. It is equipped with a manipulator arm and a camera for performing tasks. | ![Perseverance Rover](../resources/images/perseverance-rover.png) |
| [Ingenuity Helicopter](../robots/ingenuity-helicopter.md) | Ingenuity Helicopter is a Mars helicopter designed for aerial exploration tasks on the Mars surface. It is equipped with a camera for performing tasks. | ![Ingenuity Helicopter](../resources/images/ingenuity-helicopter.png) |
35 changes: 35 additions & 0 deletions docs/assets/scenes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Working with IsaacSim Scenes

Scenes are the core of the IsaacSim simulation environment. They are the virtual world where you can place robots, objects, and other assets to simulate various scenarios. This document provides an overview of how to work with scenes in IsaacSim.

You are already provided with a set of scenes in the IsaacSim. You can find the scenes in the directory `./assets/Scenes`. These scenes are simulation ready and can be used in the IsaacSim.


## List of Scenes

| Scene Name | Description | Preview |
| ----------------------- | --------------------------------------------------------------- | ------------------------------------------------------------------------ |
| ISS | International Space Station | ![ISS](../resources/images/canadarm2-iss.png) |
| Robotnaut2 | Robotnaut2 in Manipulation Room | ![Robotnaut2](../resources/images/robonaut2-chessboard-manipulation.png) |
| Curiosity Rover in Mars | Mars Surface with Curiosity Rover for exploration related tasks | ![Mars](../resources/images/mars-environment-curiosity-rover.png) |


## Custom Scenes

You can create your own custom scenes using the IsaacSim Scene Editor. The Scene Editor allows you to create a new scene from scratch or modify an existing scene. You can add robots, objects, and other assets to the scene and configure their properties. The Scene Editor provides a visual interface to place and configure assets in the scene. The assets can be imported from the Asset Browser or created using the Asset Builder.

The available assets are listed here:
- `./assets/Robots` - Contains robot models like Canadarm2, Robotnaut2, etc.
- `./assets/Props` - Contains objects like earth, etc.
- `./assets/Environments` - Contains environment models like Mars, ISS, etc.
- `./assets/Scenes` - Contains the scenes that are simulation ready.

To creaste a custom scene, the simulation environment should have three components:

1. **Environment**: The environment is the background of the scene. It can be a room, a building, a planet, etc. The environment provides the context for the scene. You can choose from the available environment models or create a custom environment using the Asset Builder.
2. **Robot**: The robot is the main actor in the scene. It can be a robot arm, a mobile robot, a humanoid robot, etc. You can choose from the available robot models or create a custom robot using the Asset Builder.
3. **Physics**: The physics engine simulates the physical interactions between the objects in the scene. You can configure the physics properties like gravity, friction, etc. to simulate the real-world physics.
1. **Gravity**: The gravity in the scene can be set to simulate the real-world gravity. You can set the gravity in the scene using the Scene Editor.
2. **Friction**: The friction in the scene can be set to simulate the real-world friction. You can set the friction in the scene using the Scene Editor.
3. **Collision**: The collision properties in the scene can be set to simulate the real-world collisions. You can set the collision properties in the scene using the Scene Editor.
4. **Dynamics**: The dynamics properties in the scene can be set to simulate the real-world dynamics. You can set the dynamics properties in the scene using the Scene Editor.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/resources/images/canadarm2-17dof.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/resources/images/canadarm2-iss.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/resources/images/canadarm2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/resources/images/curiosity-rover.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/resources/images/moon-environment.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/resources/images/perseverance-rover.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/resources/images/robonaut-upperbody.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/resources/images/robonaut.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
19 changes: 19 additions & 0 deletions docs/robots/canadarm2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
## SSRMS Canadarm2

The Space Station Remote Manipulator System (SSRMS) is a robotic system used to move equipment and supplies around the International Space Station (ISS). The SSRMS is also known as Canadarm2, because it was built by the Canadian Space Agency.

The Canadarm2 is a large robotic arm that is attached to the ISS. It is used to move cargo, equipment, and astronauts around the station. The arm is controlled by astronauts inside the station, who use joysticks and computer screens to operate it.

### Features

> NOTE: The features are under development and will be updated soon.
1. **End Effector**: The Canadarm2 is equipped with a special tool called an end effector, which is used to grab onto objects and move them around. The end effector has a set of jaws that can be opened and closed to grip objects of different sizes and shapes.

### Usage

1. The Canadarm2 is available in the IsaacSim as a simulation asset. You can import the robot in your scene and use it for various tasks such as moving objects, inspecting equipment, and performing maintenance tasks. The robot can be found at a location `./assets/Robots/SSRMS_Canadarm2`.

A visual representation of the SSRMS Canadarm2 is shown below:

![SSRMS Canadarm2](./../resources/images/canadarm2-iss.png)
24 changes: 24 additions & 0 deletions docs/robots/ingenuity-helicopter.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
## Ingenuity Helicopter

The Ingenuity Helicopter is a small robotic helicopter that is part of the Mars 2020 mission. It is designed to demonstrate the technology of powered flight in the thin atmosphere of Mars. The helicopter is equipped with a camera and other sensors to help it navigate and explore the Martian surface.

The robot is available in the IsaacSim as a simulation asset. You can import the robot in your scene and use it for various tasks such as visual odometry, navigation, and exploration. The robot can be found at a location `./assets/Robots/Ingenuity_Helicopter`.

### Features

> NOTE: The features are under development and will be updated soon.
1. **Sensors**: The robot is equipped with a camera and other sensors to help it navigate and explore the Martian surface.
1. IMU Sensor
2. Downward Facing Camera for Visual Odometry


### Usage

1. The robot can be imported into the IsaacSim scene by adding the robot asset from the `./assets/Robots/Ingenuity_Helicopter` location. There is already a sample scene available in the IsaacSim that demonstrates the usage of the robot. The scene can be found at `./assets/Scenes/SimpleIngenuityHelicopterScene.usd`.

A visual representation of the Ingenuity Helicopter is shown below:

![Ingenuity Helicopter](./../resources/images/ingenuity-helicopter-simple.png)

The scene is a simple environment with the Ingenuity Helicopter placed on the ground. The robot is equipped with a downward-facing camera that can be used for visual odometry and navigation tasks.
26 changes: 26 additions & 0 deletions docs/robots/robonaut2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
## Robonaut 2

The Robonaut 2 is a humanoid robot developed by NASA and General Motors. It is designed to assist astronauts with various tasks on the International Space Station (ISS). The robot is equipped with a variety of sensors and tools to help it perform tasks such as maintenance, repairs, and experiments.

There are two versions of the Robonaut 2: R2A and R2B. The R2A version was sent to the ISS in 2011 and was used for various experiments and demonstrations. The R2B version is a ground-based version of the robot that is used for research and development.

### Features

> NOTE: The features are under development and will be updated soon.
1. **Sensors**: The robot is equipped with a variety of sensors to help it navigate and interact with its environment.
1. Cameras
2. Force/Torque Sensors
3. Joint Position Sensors
4. IMU Sensor

2. **End Effectors**: The robot is equipped with a variety of tools and end effectors to help it perform tasks such as grasping objects, turning valves, and operating tools.


### Usage

1. The Robonaut 2 is available in the IsaacSim as a simulation asset. You can import the robot in your scene and use it for various tasks such as manipulation, inspection, and maintenance. The robot can be found at a location `./assets/Robots/Robonaut2`.

A visual representation of the Robonaut 2 is shown below:

![Robonaut 2](./../resources/images/robonaut2-chessboard-manipulation.png)
9 changes: 9 additions & 0 deletions docs/ros2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# ROS Bridge for IsaacSim

This document provides an overview of the ROS2 interface for the IsaacSim simulation environment. The ROS2 interface allows you to communicate with the IsaacSim simulation environment using ROS2 messages and services. You can use the ROS2 interface to send commands to the robots, receive sensor data, and interact with the simulation environment.

## Overview

You can refer to the official documentation for the ROS2 interface [here](https://docs.omniverse.nvidia.com/isaacsim/latest/features/external_communication/ext_omni_isaac_ros_bridge.html).

More information will be added soon.

0 comments on commit f9699c4

Please sign in to comment.