diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..25fc4ba --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +docs/resources/* filter=lfs diff=lfs merge=lfs -text diff --git a/README.md b/README.md new file mode 100644 index 0000000..84cabac --- /dev/null +++ b/README.md @@ -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 + + +### 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) \ No newline at end of file diff --git a/docs/assets/environments.md b/docs/assets/environments.md new file mode 100644 index 0000000..62d00fc --- /dev/null +++ b/docs/assets/environments.md @@ -0,0 +1,21 @@ +# 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) | + +## 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). diff --git a/docs/assets/robots.md b/docs/assets/robots.md new file mode 100644 index 0000000..0427e81 --- /dev/null +++ b/docs/assets/robots.md @@ -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 | 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) | +| Space Robot Manipulator | Space Robot Manipulator 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 | 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 | 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/robonaut2-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 | 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) | diff --git a/docs/assets/scenes.md b/docs/assets/scenes.md new file mode 100644 index 0000000..da1459b --- /dev/null +++ b/docs/assets/scenes.md @@ -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. diff --git a/docs/resources/images/canadarm2-17dof.png b/docs/resources/images/canadarm2-17dof.png new file mode 100644 index 0000000..afffeb9 Binary files /dev/null and b/docs/resources/images/canadarm2-17dof.png differ diff --git a/docs/resources/images/canadarm2-iss.png b/docs/resources/images/canadarm2-iss.png new file mode 100644 index 0000000..83d363d Binary files /dev/null and b/docs/resources/images/canadarm2-iss.png differ diff --git a/docs/resources/images/canadarm2.png b/docs/resources/images/canadarm2.png new file mode 100644 index 0000000..39afbe7 Binary files /dev/null and b/docs/resources/images/canadarm2.png differ diff --git a/docs/resources/images/curiosity-rover.png b/docs/resources/images/curiosity-rover.png new file mode 100644 index 0000000..118cb01 Binary files /dev/null and b/docs/resources/images/curiosity-rover.png differ diff --git a/docs/resources/images/ingenuity-helicopter.png b/docs/resources/images/ingenuity-helicopter.png new file mode 100644 index 0000000..6ec75a9 Binary files /dev/null and b/docs/resources/images/ingenuity-helicopter.png differ diff --git a/docs/resources/images/interior-of-international-space-station.png b/docs/resources/images/interior-of-international-space-station.png new file mode 100644 index 0000000..92d7e5f Binary files /dev/null and b/docs/resources/images/interior-of-international-space-station.png differ diff --git a/docs/resources/images/international-space-station.png b/docs/resources/images/international-space-station.png new file mode 100644 index 0000000..a7b6662 Binary files /dev/null and b/docs/resources/images/international-space-station.png differ diff --git a/docs/resources/images/mars-environment-curiosity-rover.png b/docs/resources/images/mars-environment-curiosity-rover.png new file mode 100644 index 0000000..f3b3aa7 Binary files /dev/null and b/docs/resources/images/mars-environment-curiosity-rover.png differ diff --git a/docs/resources/images/moon-environment.png b/docs/resources/images/moon-environment.png new file mode 100644 index 0000000..0448b7a Binary files /dev/null and b/docs/resources/images/moon-environment.png differ diff --git a/docs/resources/images/perseverance-rover.png b/docs/resources/images/perseverance-rover.png new file mode 100644 index 0000000..bba9c4a Binary files /dev/null and b/docs/resources/images/perseverance-rover.png differ diff --git a/docs/resources/images/robonaut.png b/docs/resources/images/robonaut.png new file mode 100644 index 0000000..38206ca Binary files /dev/null and b/docs/resources/images/robonaut.png differ diff --git a/docs/resources/images/robonaut2-chessboard-manipulation.png b/docs/resources/images/robonaut2-chessboard-manipulation.png new file mode 100644 index 0000000..f604d7b Binary files /dev/null and b/docs/resources/images/robonaut2-chessboard-manipulation.png differ diff --git a/docs/resources/images/robonaut2-upperbody.png b/docs/resources/images/robonaut2-upperbody.png new file mode 100644 index 0000000..d8b765a Binary files /dev/null and b/docs/resources/images/robonaut2-upperbody.png differ diff --git a/docs/resources/images/space-station-robotic-arm.png b/docs/resources/images/space-station-robotic-arm.png new file mode 100644 index 0000000..663393c Binary files /dev/null and b/docs/resources/images/space-station-robotic-arm.png differ diff --git a/docs/ros2.md b/docs/ros2.md new file mode 100644 index 0000000..be58d21 --- /dev/null +++ b/docs/ros2.md @@ -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.