Git Product home page Git Product logo

roblearn's Introduction

Roblearn

Deep learning of a mobile robot equipped with a laser scanner and a RGB-D camera to navigated in unknown environments.

Alt text

Deep Reinforcement Learning has been successfully applied in various computer games. But it is still rarely used in real world applications especially for the navigation and continuous control of real mobile robots. Previous approaches lack of safety and robustness and/or need environmental interventions. In this project, we present our proof of concept to learn robot navigation in an unknown environment for a real robot without a map or planer. The input for the robot is only the fused data from a 2D laser scanner and a RGB-D camera as well as the orientation to the goal. The map of the environment is unknown. The output actions of an Asynchronous Advantage Actor-Critic network (GA3C) are the linear and angular velocities for the robot. The navigator/controller network is pretrained in a very fast, parallel, self implemented simulation environment to speed up the learning process and then deployed to the real robot. To avoid over fitting we train relative small networks, and we add random Gaussian noise to the input laser data. The sensor data fusion with the RGB-D camera allows the robot to navigate in real environments with real 3D obstacle avoidance and without environmental interventions. To further increase the robustness we use different levels of difficulties of the environment and train 32 of them simultaneously.

Video

Youtube https://www.youtube.com/watch?v=KyA2uTIQfxw, https://www.youtube.com/watch?v=skpUU6ggbCo

Paper (PDF)

https://arxiv.org/abs/2005.13857

Installation

The software was developed under Ubuntu 16.04 with tensorflow (GPU and CPU works)

clone the Repo

git clone https://github.com/RoblabWh/RobLearn

and install dependencies

sudo apt-get install libeigen3-dev libboost-python-dev libboost-system-dev python3-dev inkscape python3-pip gnuplot-qt

For the 2D simulation do

cd NeuronalNetwork 
bash build.sh
(or bash build_avx.sh if our processor support AVX)

For the installation of Cuda 9.0 see also cuda developer + libcudnn -> nvidia

sudo dpkg -i libcudnn7_7.3.1.20-1+cuda9.0_amd64.deb
sudo dpkg -i libcudnn7-dev_7.3.1.20-1+cuda9.0_amd64.deb 
sudo -H pip3 install tensorflow-gpu keras numpy

If you can run example_dqn.py it works!!!

python3 example_dqn.py

Hint: Start the programm in a terminal since gnuplot blocked the desktop.

Training

./_ga3c_clean.sh &&
./_ga3c_train.sh

The repository contains also some intermediate step with different architectures and simulation environements (Gazebo, torse). Developers can check the directories. The directory ROS contains the software to run the trained network at a real robot e.g. turtle bot 2.

Dependencies

  • tensorflow
  • keras
  • gnuplot-x11 (Visualierung)

Alt text

LEVEL Modus

The modes control different environments. See worlds for details.

  • "test" --> set_mode(Mode.ALL_COMBINATION, terminate_at_end=True) (easy) -- Must work
  • "diff_forms" --> set_mode(Mode.PAIR_COMBINATION, terminate_at_end=True)(easy) -- Must work
  • "roblab" --> set_mode(Mode.ALL_COMBINATION, terminate_at_end=True) (medium) -- Start is hard
  • "room" --> set_mode(Mode.ALL_RANDOM, terminate_at_end=False) (hard) -- Success would be very nice
  • "four_rooms" --> set_mode(Mode.ALL_RANDOM, terminate_at_end=False) (very hard) -- Challenger

Issues:

  • For ubuntu 18.04 change python 3.5 to 3.6 and (python-py35 -> python.py36) in Simulation2d/CMakeLists.txt
  • On some laptops sometimes gnuplot crashed (rarly).

Citation

https://arxiv.org/abs/2005.13857

Credits

Nvidia for GA3C, Google for tensorflow, Keras, Gnuplot, Ubuntu

roblearn's People

Contributors

azuros avatar elhadjhoussem avatar franzi233 avatar hsurmann avatar ma92592 avatar roblab2011 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  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  avatar  avatar  avatar

roblearn's Issues

Training: Robot still rotates at one position

Hi! I have configured my running environment successfully. And run example ### example_dqn.py successfully!
But when I follow the guide to start training program (training can running normally), robot will constantly rotate at same position very...very long time. Could you please help me to solve the question?

How to make map file?

Hello, I'm using Ubuntu 16.04 and python-3.5.

Your learning environment is being a great help to me; I'm recently testing many different algorithms in your learning framework, pysim2d.

However, I have no idea how to make a map field. (I mean the 2D learning environment field.)

Would you please let me know how to make the new map?

Thanks in advance. :)

bash build.sh error

When i run
bash build.sh or bash build_avx.sh
for the 2D simulation, the following error occurs.

CMake Warning at /usr/share/cmake-3.5/Modules/FindBoost.cmake:725 (message):
  Imported targets not available for Boost version 106700
Call Stack (most recent call first):
  /usr/share/cmake-3.5/Modules/FindBoost.cmake:763 (_Boost_COMPONENT_DEPENDENCIES)
  /usr/share/cmake-3.5/Modules/FindBoost.cmake:1332 (_Boost_MISSING_DEPENDENCIES)
  CMakeLists.txt:19 (find_package)


CMake Error at /usr/share/cmake-3.5/Modules/FindBoost.cmake:1677 (message):
  Unable to find the requested Boost libraries.

  Boost version: 1.67.0

  Boost include path: /home/heegu/anaconda2/envs/keras-py3/include

  Could not find the following Boost libraries:

          boost_python-py36

  Some (but not all) of the required Boost libraries were found.  You may
  need to install these additional Boost libraries.  Alternatively, set
  BOOST_LIBRARYDIR to the directory containing Boost libraries or BOOST_ROOT
  to the location of Boost.
Call Stack (most recent call first):
  CMakeLists.txt:19 (find_package)


-- Configuring incomplete, errors occurred!`

So i installed Boost 1,67.0 version with boost_1_67_0.tar.bz2, and compiled but the same error is repeated.

I also set the directory of BOOST_ROOT and BOOST_LIBRARYDIR in ~/.bashrc, but the same error... How could i solve this kind of issue?

How does the robot get the goal point with map?

Hello, recently I read your paper and repository wrt this not bad package. :)

You mentioned the mobile robot should do navigate to the goal point without known-map,
and you wrote about it in here,

**def _callback_goal(self, data):
    """
    Callback of the goal subscriber from rviz,
    :param data: PoseWithCovarianceStamped.
    :return:
    """
    self._pose_goal = data**

What does it mean? How can I get the goal point from rviz, without known-map?

I have a feeling that it would be a great help to my works if I know how to do that. :)
Would you please teach me?

Thanks in advance. :)

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.