Git Product home page Git Product logo

bht-ams-playerstage's Introduction

AMS exploration with Player/Stage

A homework solution for the Autonomous Mobile Systems class at Beuth Hochschule für Technik, Berlin with Prof. Dr. Volker Sommer. Runs a simulation of a VolksBot with (error-free) laser rangers.

How to compile the code

To compile and run the code, the following requirements must be fulfilled:

  • OpenCV (libopencv-dev)
  • OpenCV highgui (libopencv-highgui-dev)
  • Player ~ 3.0.2
  • Stage ~ 4.0.0

The easiest way to compile and start the code is to use Vagrant. After installing, simply run

$ vagrant up

in the project directory to bootstrap a virtual machine that is preconfigured with Player/Stage. The VM will be downloaded if it doesn't already exist your local machine (which is likely if you run the command the first time).

Next, connect to the VM using:

$ vagrant ssh

To build the project, do the following:

$ cd /vagrant
$ make

To power down the VM, issue:

$ vagrant halt

You can then vagrant up it again later. To permanently remove it, type:

$ vagrant destroy
$ vagrant box remove sunside/playerstage

which will delete the VM, as well as the base image.

How to run the code

To run the code, you basically

  • start player pstlab.cfg
  • then start ./simple localhost

Note that player and ./simple both require an X11 display. On Linux, you may try passing your $DISPLAY environment when connecting via ssh. The easiest way is to connect to a terminal with X forwarding enabled, using

vagrant ssh -- -X xterm

and then, within the VM, type

cd /vagrant
make
player pstlab.cfg &
./simple localhost
Integrated VNC with browser frontend

For convenience, a dummy Xorg with fluxbox, as well as a noVNC server is started when the VM boots up. In your browser, you may go to http://localhost:6080/vnc.html to connect. Leave the password box empty.

Should you close the Xterm window, try right-clicking the desktop.

About the project

Approach to exploration

This implements a simple approach using meshed P controllers for forward and angular velocity in dependance of the distance to the next obstacle.

You can watch a demo video here.

Exploration Demo Video

Stage / robot setup

The robot is modeled without slippage and measurement errors and sports a differential drive with v-omega control.

Stage

Robot Map window

The Robot Map shows the map created by the robot, as well as the past trajectory. The yellow vectors points at the nearest unexplored boundary, using a Manhattan distance measure without paying attention to obstacles. As such, it is measured in air distance, which might be used as a heuristic for A* later on.

Map

Frontiers and algorithm termination

This program implements a frontier-based approach to exploration. A queue-linear flood fill algorithm is used to determine knowledge boundaries (white), i.e. areas that have not been scanned by the robot. The exploration algorithm terminates if no frontiers are left, meaning that the whole terrain has been explored.

Frontiers

More on frontier-based exploration can be found in e.g. A Frontier-Based Approach for Autonomous Exploration by Brian Yamauchi (http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.121.2826)

@INPROCEEDINGS{Yamauchi97afrontier-based,
    author = {Brian Yamauchi},
    title = {A frontier-based approach for autonomous exploration},
    booktitle = {In Proceedings of the IEEE International Symposium on Computational Intelligence, Robotics and Automation},
    year = {1997},
    pages = {146--151}
}

bht-ams-playerstage's People

Contributors

sunsided 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

Watchers

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