Giter Site home page Giter Site logo

daviddeer2 / underwater-obstacle-avoidance Goto Github PK

View Code? Open in Web Editor NEW

This project forked from pengzhi1998/underwater-obstacle-avoidance

0.0 0.0 0.0 4.91 MB

The underwater robot obstacle avoidance project with the method of deep reinforcement learning

Home Page: https://github.com/2590477658/Underwater-obstacle-avoidance

Python 99.50% MATLAB 0.50%

underwater-obstacle-avoidance's Introduction

Underwater-obstacle-avoidance

Hello everyone, welcome to this repository. This project is mainly about underwater vehicles' obstacle avoidance with neural networks as well as the method based on the single beam distance detection. The project mainly refers to the following projects:https://github.com/xie9187/Monocular-Obstacle-Avoidance, https://github.com/XPFly1989/FCRN as well as https://github.com/iro-cp/FCRN-DepthPrediction.

contents

  1. Introduction
  2. Guide

1. Introduction

Nowadays, the AUVs (autonomous underwater vehichles) are widely used in underwater projects (underwater environment detection, cultural relic salvage, underwater rescues and etc). And in order to improve their efficiency, a great sense of obstacle avoidance of the robots is indispensable. But because of the rather complex underwater light conditions including light attenuation, dimmer environment, reflection, refraction along with the more complicated kinematics situation including caparicious current and more resistance, it is much harder for the robots to work well underwater. So we developed an ad-hoc methods to deal with that.

In the first part, we implemented a FCRN (fully convolutional residual network) to predict RGBD from the front monocular camera. To train the network, we used the NYU dataset, the images pairs from which have been preprocessed according to the underwater environment. In the second part, we applied the DDDQN to control the robot in "POSHOLD" mode with the topic of "/rc/override". We trained this DDDQN in a well-designed Gazebo world. At last, we combined the two neural networks with the method based on the single beam echo sounder to make the robot, BlueROV2 to avoid obstacles. The senario is designed as follows (needs further tests and experiments):

  1. Set a goal point for the robot.
  2. The robot spins toward the goal, then moves forward.
  3. When the echo sounder detects obstacles right in front of it (the distance is less than .8 meters), the robot will be controlled by the neural networks based on the front monocular camera until it successfully avoid the object.
  4. Repeat 2 and 3 until it reaches the goal point.

2. Guide

  1. Clone the repository into a directory.
  2. Download the NYU Depth Dataset V2 Labelled Dataset as well as the pre-trained TensorFlow weights as a .npy file for a part of the model from Laina et al. into the folder of FCRN_train:
    http://horatio.cs.nyu.edu/mit/silberman/nyu_depth_v2/nyu_depth_v2_labeled.mat;
    http://campar.in.tum.de/files/rupprecht/depthpred/NYU_ResNet-UpProj.npy
  3. Open the create_underwater.m file, and change the three parameters (Red_attenuation, Green_attenuation along with Blue_attenuation) to fit the environment where you'd like to test the performance. Then run it to process the NYU dataset. It will generate a "test.mat" in the same directory.
  4. Run train.py in FCRN_train to train the FCRN network which is for the RGBD prediction. After 30 epochs, the performance is relatively good. The parameters of the model will be stored into the checkpoint.pth.tar.
  5. To train the DDDQN network, do the following things:
    (1) Move the world file turtlebot3_bighouse.world into the turtlebot3_gazebo world file folder of turtlebot3 in your work space. And move the launch file turtlebot3_bighouse.launch into the turtlebot3_gazebo launch file folder. Then launch the designed world with the command:
    roslaunch turtlebot3_gazebo turtlebot3_bighouse.launch
    (2) Adjust the uri of the turtlebot3 model into your path of the turtlebot3_description. Meanwhile, to make the training in simulation suitable for your robot in the real world, adjust the parameters like field of view, image size, depth image noise and so forth.
    (3) Run the DDDQN.py at the same time in another terminal. The training begins. You could find the robot moves aimlessly at first, but starts to show the ability of avoiding the obstacles after around 200 episodes. The average reward for each 50 episodes could be seen from the graph drew by visdom.
    We set the max episode number to be 100000. Nevertheless, when the performance is good enough, it is fine to terminate the process. The networks will be saved into online_with_noise.pth.tar as well as target_with_noise.pth.tar.
  6. Copy the checkpoint.pth.tar from FCRN_train and online_with_noise.pth.tar from DDDQN_train into the folder, Test_on_robots. Then test on the ground robots or underwater robots.
    ping_echo_sounder.launch and pingmessage.py are helping to open the single beam echo sounder to detect the distance between the robot and the object right in front of the echo sounder.

underwater-obstacle-avoidance's People

Contributors

pengzhi1998 avatar

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.