Skip to content

Latest commit

 

History

History
47 lines (34 loc) · 3.28 KB

README.md

File metadata and controls

47 lines (34 loc) · 3.28 KB

isaac_underwater

Overview

readme_top

  • This repository contains study examples of my water and underwater simulations utilizing NVIDIA Isaac Sim. These examples include a floating box simulation on the water surface and an ROV (Remotely Operated Vehicle) simulation, controlled using a PS4 controller. It is important to note that these examples are not 100% physically accurate yet.

Keywords: simulation, Isaac, underwater, robotics

License

Author: Leonardo Lima ([email protected])

Instalation

To utilize this package, simply clone the repository and install all necessary dependencies.

Dependencies

The isaac_underwater package has been created and tested under Ubuntu 22.04. This is research code, expect that it changes often and any fitness for a particular purpose is disclaimed.

OS Isaac Sim ROS 2
Ubuntu 22.04 2022.2.1 Humble

Examples

Floating cube

box

This example features a cube floating on water and represents my initial test with Isaac Sim. It is a basic simulation where the cube floats due to buoyancy forces, which are calculated by a script named buoyancy_forces.py, located in the scripts folder. There is also an associated damping.py script to resist movement and create a sense of drag, while this feature has not yet been fully implemented in the example. A current was simulated using the gravity property in Isaac Sim.

ROV simulation

rov

In this example, I attempted a more complex task by integrating the box code with an ROV controlled by a gamepad. I applied the same logic to the floating mechanism of the ROV and introduced forces based on the buttons pressed on the gamepad. The rotation matrix for buoyancy forces has not yet been implemented in this version.

How to control the ROV

Use the PS4 controller's left and right sticks to maneuver and rotate the ROV, and press the R2 button to submerge.

Scripts

buoyancy_forces.py

This code is used to calculate the buoyancy force acting on an object submerged in water. The buoyancy force is based on the amount of the object that is submerged, the density of the water, and the gravitational force.

buoyancy_control.py

This follows the same principles as buoyancy_forces.py, but it does not yet incorporate rotational forces. The implementation remains purely linear to simplify control and movement via the PS4 controller. Further improvements are required.

damping.py

This script calculates the damping forces acting on an object based on its position. Damping forces resist motion and are typically used in simulations to reduce velocity over time, either linearly or rotationally (angular damping). Further improvements are required.

quat_to_euler.py

This code is used to convert an orientation represented by a quaternion into Euler angles (roll, pitch, and yaw), which are more intuitive for humans to understand and are commonly used to represent rotation along three axes: roll (tilting), pitch (forward and backward tilting), and yaw (horizontal rotation).