/navbot

Using RGB Image as Visual Input for Mapless Robot Navigation

Primary LanguagePython

navbot

It's a collection for mapless robot navigation using RGB image as visual input. It contains the test 
environment and motion planners, aiming at realizing all the three levels of mapless navigation:
1. memorizing efficiently; 
2. from memorizing to reasoning; 
3. more powerful reasoning
The simulation experiment data is in the ./materials/record folder.


Environment

I built the environment for testing the algorithms.

It has the following properties:
  • Diverse complexity.
  • Gym-style Interface.

  • Support ROS.

Memorizing

VAE

Structure

Result

VAE-based Proposed Planner Compared with benchmark

  1. The proposed is blue trajectory and the benchmark is green.

  2. The success rate comparision in maze1.

From Memorizing to Reasoning

Stacked LSTM and network structure

Stacked LSTM

network structure

Result

Success rate in maze1

Install

Ddependencies

tensorflow: 1.5.0
OS: Ubuntu 16.04
Python: 2.7
ROS: Kinetic
Gazebo: 7
tensorforce: https://github.com/tensorforce/tensorforce

Run

sudo apt-get install ros-kinetic-gazebo-ros-pkgs ros-kinetic-gazebo-ros-control
sudo apt-get install ros-kinetic-turtlebot-*
sudo apt-get remove ros-kinetic-turtlebot-description
sudo apt-get install ros-kinetic-kobuki-description
# change to catkin_ws/src
git clone https://github.com/marooncn/navbot
cd ..
catkin_make
source ./devel/setup.bash
# you can change the configure in config.py
cd src/navbot/rl_nav/scripts
# run the proposed model for memorizing
python PPO.py
# run the proposed model for reasoning
python E2E_PPO_rnn.py

Details

  1. The default environment is maze1, you need to change maze_id in nav_gazebo.launch and config.py if you want change the environment.

  2. maze1 and maze2 are speeded up 10 times to train, if you want speed up other environments, just change

    <max_step_size>0.001</max_step_size>
    <real_time_factor>1</real_time_factor>
    

    to

    <max_step_size>0.01</max_step_size>
    <!-- <real_time_factor>1</real_time_factor> -->
    

    in the environment file in worlds.

  3. To reproduce the result, please change the related parameters in config.py according to config.txt.

  4. PPO is not a deterministic policy gradient algorithm, the action at every timestep is sampled according to the distribution. It can be seen as "noise" and it's useful for explorations and generalizations. If you want to use the best strategy after the model is trained, just change 'deterministic = True' in config.py and the performance will be improved.

Cite

If your find the work is helpful in your research, please cite the following papers:

Reference

tensorforce(blog)
gym_gazebo
gazebo
roslaunch python API
turtlebot_description
kobuki_description
WorldModelsExperiments(official)
WorldModels(by Applied Data Science)