Giter Site home page Giter Site logo

pepper_navigation's Introduction

Pepper_navigation

This repository contains the source code accompanying our paper Image-Based Indoor Topological Navigation with Collision Avoidance for Resource-Constrained Mobile Robots.
The code is open source. The codes are provided “as-is” without any warranty.
Before using the code, you agree to use the code at your own risk. The authors are not responsible or liable for any damages incurred using this code.


Dependencies

  1. MATLAB (for mapping, has to be downloaded separately),
  2. OpenCV (available in ppa of Ubuntu or has to be built from source with extra modules),
  3. Boost (available in ppa of Ubuntu or has to be built from source),
  4. naoqi_libqi and naoqi_libqicore (ROS Packages available for Kinetic and Melodic),
  5. ARPACK++, ARPACK, BLAS, LAPACK, and SuperLU (for line segment matching, available in ppa of Ubuntu),
  6. Qt5 (Core, Widgets, Test) (for GUI, available in ppa of Ubuntu),
  7. Graphviz (GVC, CGRAPH, CDT) (for visualising topological graph, available in ppa of Ubuntu),
  8. Pepper Virtual Machine and VirtualBox (to compile binaries that can run onboard on the Pepper Robot, has to be downloaded separately),
  9. qgv and pepper_qi (custom libraries that are shipped with this repository).

Build Instructions

1. Get Source codes from the repository.

$ git clone https://github.com/qcr/pepper_navigation.git

2. Install required dependencies (if required).

$ sudo apt install libopencv-dev libopencv-contrib-dev libboost-all-dev
$ sudo apt install ros-melodic-naoqi-libqi ros-melodic-naoqi-libqicore
s sudo apt install libarpack++2-dev libarpack2-dev libblas-dev liblapack-dev libsuperlu-dev
$ sudo apt install qt5-default
$ sudo apt install libcdt5 libcgraph6 libcgv6 libgraphviz-dev

3. Build executables required for mapping.

$ cd pepper_navigation/mapping
$ ./build_linematching.sh

The above command will build executables detectinesED and matchlines in ./linematching folder and is equivalent to the following commands
$ cd linematching/Linematching_iso && mkdir build $$ cd build
$ cmake .. && make -j8

4. Build Navigation code

$ cd pepper_navigation
$ ./compile.sh

The above command will build executables in the build/ directory and is equivalent to the following commands
$ mkdir build $$ cd build
$ cmake .. && make -j8

If the CMake options and Path has to be changed from the default
$ ccmake .. or cmake-gui ..
Configure and Generate Makefile.
$ make -j8


Following executables will be built

  1. peppernav_gui => GUI version of the topological navigation of the Pepper robot. It has to be executed on the external PC connecting to the Pepper robot remotely.

  2. peppernav_inside => Topological navigation of the Pepper robot. It is capable of running onboard on the Pepper robot.

  3. peppernavigation => Navigation of the Pepper robot along a single sequence of reference images. It is capable of running onboard on the Pepper robot.

  4. peppernavigationoff => Offline localisation mode from the image sequence. It does not require a robot (Images read from the folder).

Note: To run the executables peppernav_inside and peppernavigation onboard on the Pepper robot, they must be compiled in the Pepper Virtual Machine. For details, please refer to the Reference Manual in ../docs folder.


Run Code

Example Scripts: run_onboard.sh, run_remotePC.sh, and run_offline.sh.

The navigation executables require two arguments:
     a.   Path of topological map (e.g. ../data/tmap), and
     b.   IP address of the robot (e.g. 172.19.226.236 to run online with robot) or path of the image sequence
           (e.g. ../data/offlinetest) to run offline with image sequence (localisation mode only).

For details, please refer to docs/Pepper_Navigation_Reference_Manual.pdf and README.MD at subfolders of this repository.


Related publications

Please cite these publications if you find our system useful in your work.

  1. Bista SR, Ward B, Corke P. Image-Based Indoor Topological Navigation with Collision Avoidance for Resource-Constrained Mobile Robots. Journal of Intelligent & Robotic Systems. 2021 June 3;102(3):55. http://dx.doi.org/10.1007/s10846-021-01390-6.  (PDF).
@ARTICLE{Bista_JINT_2021,  
  author={Bista, Suman Raj and Ward, Belinda and Corke, Peter},  
  journal={Journal of Intelligent {\&} Robotic Systems},   
  title={Image-Based Indoor Topological Navigation with Collision Avoidance for Resource-Constrained Mobile Robots},   
  year={2021},  
  volume={102},  
  number={3},  
  pages={55},  
  doi={10.1007/s10846-021-01390-6}
}
  1. Bista SR, Giordano PR, Chaumette F. Appearance-based indoor navigation by IBVS using line segments. IEEE Robotics and Automation Letters. 2016 Jan 26;1(1):423-30. https://doi.org/10.1109/LRA.2016.2521907.  (PDF).
@ARTICLE{Bista_RAL_2016,  
  author={Bista, Suman Raj and Giordano, Paolo Robuffo and Chaumette, François},  
  journal={IEEE Robotics and Automation Letters},   
  title={Appearance-Based Indoor Navigation by IBVS Using Line Segments},   
  year={2016},  
  volume={1},  
  number={1},  
  pages={423-430},  
  issn={1573-0409},  
  doi={10.1109/LRA.2016.2521907}
}

pepper_navigation's People

Contributors

suuman 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.