diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..ce76f0f --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +docs/resources/* filter=lfs diff=lfs merge=lfs -text +assets/* 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..8805122 --- /dev/null +++ b/docs/assets/environments.md @@ -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). diff --git a/docs/assets/robots.md b/docs/assets/robots.md new file mode 100644 index 0000000..71bfa4c --- /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](../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) | 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/Screenshot from 2024-09-02 12-14-09.png b/docs/resources/images/Screenshot from 2024-09-02 12-14-09.png new file mode 100644 index 0000000..3b980fc Binary files /dev/null and b/docs/resources/images/Screenshot from 2024-09-02 12-14-09.png differ 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-simple.png b/docs/resources/images/ingenuity-helicopter-simple.png new file mode 100644 index 0000000..1b9cfd5 Binary files /dev/null and b/docs/resources/images/ingenuity-helicopter-simple.png differ diff --git a/docs/resources/images/ingenuity-helicopter.png b/docs/resources/images/ingenuity-helicopter.png new file mode 100644 index 0000000..d250648 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..5d761d9 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..1db699e 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-upperbody.png b/docs/resources/images/robonaut-upperbody.png new file mode 100644 index 0000000..c904dce Binary files /dev/null and b/docs/resources/images/robonaut-upperbody.png differ diff --git a/docs/resources/images/robonaut.png b/docs/resources/images/robonaut.png new file mode 100644 index 0000000..4318fd8 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/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/robots/canadarm2.md b/docs/robots/canadarm2.md new file mode 100644 index 0000000..4b318b9 --- /dev/null +++ b/docs/robots/canadarm2.md @@ -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) \ No newline at end of file diff --git a/docs/robots/ingenuity-helicopter.md b/docs/robots/ingenuity-helicopter.md new file mode 100644 index 0000000..e96f40a --- /dev/null +++ b/docs/robots/ingenuity-helicopter.md @@ -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. diff --git a/docs/robots/robonaut2.md b/docs/robots/robonaut2.md new file mode 100644 index 0000000..0982fce --- /dev/null +++ b/docs/robots/robonaut2.md @@ -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) 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.