Giter Club home page Giter Club logo

unav-sim's Introduction

πŸŒŠπŸ€– Introducing UNav-Sim: The Ultimate Underwater Robotics Simulator! πŸš€

UNavSim_logo

UNav-Sim is an open-source cutting-edge underwater robotics simulator tool that leverages the power of Unreal Engine 5 (UE5) and AirSim to provide highly detailed rendering and simulation capabilities. Whether you're a researcher, developer, or robotics enthusiast, UNav-Sim offers a platform for you to dive deep into the world of underwater robotics.

Key Features:

  • Open-source βœ”οΈ
  • High-fidelity rendering using Unreal Engine 5 βœ”οΈ
  • Underwater physics and robot models βœ”οΈ
  • Works on Linux and Windows OS βœ”οΈ
  • ROS1 and ROS2 support βœ”οΈ

Index

1. Installation

2. Running the simulation

3. UNav-Sim ros navigation stack

4. UNav-Sim documentation

1. Installation Instructions (for Ubuntu OS)

UNav-Sim relies in Unreal Engine 5 for generating realistic renderings. First, install UE5 and then proceed to install UNav-Sim

1.1. UE5

  • Make sure you are registered with Epic Games. This is required to get source code access for Unreal Engine.

  • Clone Unreal 5.1 in your favorite folder and build it (this may take a while!)

# go to the folder where you clone GitHub projects
git clone -b 5.1 [email protected]:EpicGames/UnrealEngine.git
cd UnrealEngine
./Setup.sh
./GenerateProjectFiles.sh
make

1.2. UNav-Sim

Clone this repo in your favourite folder:

git clone [email protected]:open-airlab/UNav-Sim.git
cd UNav-Sim

We provide you scripts to automatically setup and build UNav-Sim:

./setup.sh
./build.sh
# use ./build.sh --debug to build in debug mode

Troubleshooting: If you're installing UNav-Sim from Ubuntu 22, then instead of vulkan-utils you will need to install vulkan-tools:

sudo apt update
sudo apt install vulkan-tools

1.3. Setting up the UE5 environment

cd ~/UNav-Sim/Unreal/Environments/Blocks
right-click on Blocks.uproject, select Unreal Engine Generate Project Files

2. Running the simulation

  • Add the settings.json file to C:\Users[username]\Documents\AirSim
- open the project using your IDE 
- Run and debug using Launch BlocksEditor(DebugGame)

3. UNav-Sim ros navigation stack

The UNav-Sim ROS navigation stack, as detailed in the paper, encompasses various components essential for underwater vehicle navigation. It integrates a Nonlinear Model Predictive Controller (NMPC) tailored for the BlueROV2 Heavy model and a pipe-following path planner. Additionally, the stack incorporates several Visual Simultaneous Localization and Mapping (VSLAM) algorithms.

Components:

  1. NMPC for BlueROV2 Heavy Model
    Located in the ROS 1 repository, this component provides a Nonlinear Model Predictive Controller (NMPC) specifically designed for the BlueROV2 Heavy model. The controller facilitates precise and dynamic control of the underwater vehicle.
    Repository Path: \UNav-Sim\ros\src\UNav-Sim_NMPC

  2. Pipe Following Path Planner
    The stack includes a path planner neural network trained for pipe-following task, essential for various underwater inspection and maintenance missions.

  3. Visual Simultaneous Localization and Mapping (VSLAM) Algorithms
    The UNav-Sim ROS navigation stack incorporates several Visual Simultaneous Localization and Mapping (VSLAM) algorithms. These algorithms enable the vehicle to localize itself in its environment while simultaneously mapping the surroundings using visual sensor data.
    Repository Path for ROS 2: \UNav-Sim\ros2\src\robot_visual_localization

4. UNav-Sim documentation

Link to paper

Citation

If you use this framework in your work, please cite the following paper:Link to paper

@inproceedings{amer2023unav,
  title={UNav-Sim: A Visually Realistic Underwater Robotics Simulator and Synthetic Data-generation Framework},
  author={Amer, Abdelhakim and {\'A}lvarez-Tu{\~n}{\'o}n, Olaya and U{\u{g}}urlu, Halil {\.I}brahim and Sejersen, Jonas Le Fevre and Brodskiy, Yury and Kayacan, Erdal},
  booktitle={2023 21st International Conference on Advanced Robotics (ICAR)},
  pages={570--576},
  year={2023},
  organization={IEEE}
}

⭐ Please star this repository if you find it useful! ⭐

Thank you for using this project! 🌟

unav-sim's People

Contributors

8w9ag avatar abdelhakim96 avatar aburgm avatar ahmed-elsaharti avatar alonfaraj avatar ashkapoor avatar billyfrcs avatar bkueng avatar bmalhigh avatar clovett avatar euboon1601 avatar forresttrepte avatar gimpelzhang avatar jonymarino avatar kemen209 avatar kissslorinc avatar laurelkeys avatar lovettchris avatar madratman avatar msb336 avatar patrickelectric avatar ppueyor avatar rajat2004 avatar saihv avatar songxiaocheng avatar sytelus avatar thias15 avatar xxeod2242 avatar ykeuter avatar zimmy87 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

unav-sim's Issues

Error when installing vulkan-utils in Ubuntu 22

  • sudo apt-get -y install --no-install-recommends lsb-release rsync software-properties-common wget libvulkan1 vulkan-utils
    Reading package lists... Done
    Building dependency tree... Done
    Reading state information... Done
    E: Unable to locate package vulkan-utils

Is there a sample project?

Smaller Details:

I don’t know how to set up an underwater environment with this simulator. After I built a project, i can’t control the rov, which is suspended in mid air.

Some Platforms were skipped due to invalid SDK setup: Android.

When following these instructions:
cd ~/UNav-Sim/Unreal/Environments/Blocks
right-click on Blocks.uproject, select Unreal Engine Generate Project Files

I get the following error:

Discovering modules, targets and source code for project...
Unhandled exception: System.UnauthorizedAccessException: Access to the path '/home/freyja/Underwater_Simulator/UNav-Sim/Unreal/Environments/Blocks/Plugins/UNav-Sim/Content/VehicleAdv/SUV/AutomotiveMaterials/Textures' is denied.
 ---> System.IO.IOException: Permission denied
   --- End of inner exception stack trace ---
   at System.IO.FileStatus.ThrowOnCacheInitializationError(ReadOnlySpan`1 path)

It seems like it needs sudo permissions for accessing that folder

Issue with setup.sh

Bug report

  • AirSim Version/#commit:
  • UE/Unity version: Unreal Engine 5
  • autopilot version: N/A
  • OS Version: Windows 10

What's the issue you encountered?

Followed the attached steps for installation of unavsim but build.sh continually throws errors relating to rpclib 2.3.0. When trying to install this rpclib version, am unable to find this specific rpclib version. Continuing to get errors even though I have the latest rpclib version.

image

Settings

How can the issue be reproduced?

  1. Followed the installation instructions provided by the unavsim team, up until the unavsim setup part.

Include full error message in text form

echo 'ERROR: new version of AirSim requires newer rpclib.'
ERROR: new version of AirSim requires newer rpclib.

What's better than filing an issue? Filing a pull request :).

build.sh building succesfully, throwing some errors after build

There are still some removal of folders for "Airsim" (as it is the baseline plugin for UNavSim), but they dont exist because of the new naming of the plugin. The error message:

[100%] Linking CXX executable ../output/bin/AirLibUnitTests
[100%] Built target AirLibUnitTests
+ popd
+ mkdir -p AirLib/lib/x64/Release
+ mkdir -p AirLib/deps/rpclib/lib
+ mkdir -p AirLib/deps/MavLinkCom/lib
+ cp build_release/output/lib/libAirLib.a AirLib/lib
+ cp build_release/output/lib/libMavLinkCom.a AirLib/deps/MavLinkCom/lib
+ cp build_release/output/lib/librpc.a AirLib/deps/rpclib/lib/librpc.a
+ rsync -a --delete build_release/output/lib/ AirLib/lib/x64/Release
+ rsync -a --delete external/rpclib/rpclib-2.3.0/include AirLib/deps/rpclib
+ rsync -a --delete MavLinkCom/include AirLib/deps/MavLinkCom
+ rsync -a --delete AirLib Unreal/Plugins/AirSim/Source
+ rm -rf Unreal/Plugins/AirSim/Source/AirLib/src
+ for d in Unreal/Environments/*
+ '[' -L Unreal/Environments/Blocks ']'
+ Unreal/Environments/Blocks/clean.sh
+ rm -rf Binaries
+ rm -rf Intermediate
+ rm -rf Saved
+ rm -rf Plugins/AirSim/Binaries
+ rm -rf Plugins/AirSim/Intermediate
+ rm -rf Plugins/AirSim/Saved
+ rm -f CMakeLists.txt
+ rm -f Makefile
+ popd
+ mkdir -p Unreal/Environments/Blocks/Plugins
+ rsync -a --delete Unreal/Plugins/AirSim Unreal/Environments/Blocks/Plugins
rsync: readlink_stat("/home/freyja/Underwater_Simulator/UNav-Sim/Unreal/Plugins/AirSim/Content/VehicleAdv/SUV/AutomotiveMaterials/Textures") failed: Permission denied (13)
rsync: readlink_stat("/home/freyja/Underwater_Simulator/UNav-Sim/Unreal/Plugins/AirSim/Content/VehicleAdv/SUV/AutomotiveMaterials/Materials") failed: Permission denied (13)
IO error encountered -- skipping file deletion
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1207) [sender=3.1.3]

Motor Control

Question

What's your question?

When controlling the motion of the ROV using API(moveByMotorPWMsAsync) to manipulate the PWM of the motors, how should I reverse the motors to control the descent of the ROV?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.