SourceForge.net Logo Homepage Index
about E*
building and running
documentation

Quick Links
NEW wiki and E* devkit
project summary
browse sources
browse documentation
download
mailing lists

E* Interpolated Graph Replanner

The E* algorithm is a path planner for (mobile) robotics. Unlike A*, which constrains movements to graph edges, it produces smooth trajectories by interpolating between edges. Like D*, it supports dynamic replanning after local path cost changes. E* was originally developed for a PhD thesis (chapter 4) at the Autonomous Systems Lab of the Swiss Federal Institute of Technology in Zürich (formerly at its sister institution EPFL in Lausanne). It is written in C++ and provides a C wrapper for easier interfacing with other systems.

----------------------------------------------------------------------
Copyright (C) 2004, 2005 Swiss Federal Institute of Technology, Lausanne
Copyright (C) 2005, 2006,2007 Roland Philippsen <roland dot philippsen at gmx net>
Released under the GNU General Public License, version 2.
----------------------------------------------------------------------

Building and Running E*

NEW: Try the E* Development Kit!

Go to the estar-devkit page on the NEW Wiki and try that. Otherwise, keep reading...

0. Get all Required Dependencies

  • Boost smart pointers and graph library (download at Sourceforge)
  • Building from SVN requires GNU Automake, Autoconf, and Libtool. If you build a downloaded tarball, you do not need this.
  • Optionally (for the test programs) an OpenGL implementation. The configure script should detect this automatically.
  • Optionally Doxygen for generating the documentation.

1. Get the Source Code

You can get the cutting-edge version from the repository, in which case you need GNU Automake, Autoconf, and Libtool (see dependencies above). Or just grab a release tarball from the download page.

This project uses the Subversion revision control system. The repository can be browsed online on Sourceforge. Be sure to only take the trunk/estar part if you're only interested in the most recent sources, like this:

$ svn co https://estar.svn.sourceforge.net/svnroot/estar/trunk/estar

For more information on working with the Subversion repository, look at the online documentation available on Sourceforge.

2. Build

The easiest way build is with the build-stage.sh script. If you do not have GNU Automake + Autoconf + Libtool, you need to pass it the '-s' option to skip recreating build files. otherwise, just go ahead:

$ cd estar
$ ./build-stage.sh

Which will "install" everything underneath the stage/ directory. Otherwise, if you want to install into /path/to/somewhere you can use:

$ cd estar
$ ./build-stage.sh -p /path/to/somewhere

See the output of ./build-stage.sh -h for more options. If you want to, the documentation can be generated with Doxygen, but if you downloaded one of the estar-with-doc-* packages you won't need this.

$ cd estar/build
$ doxygen Doxyfile

Then simply point your favorite browser to html/index.html

3. Test

After building and installing, test programs will be either in estar/stage/bin/ (if you built using build-stage.sh) or in /path/to/somewhere/bin/ (if you configured and installed manually).

The graphical programs are controlled using the keyboard:

  • SPACE: Compute one propagation step.
  • c : Continuous propagation, plot each step.
  • f : Flush - Propagate all cells, then plot.
  • q : Quit (and optionally write to file)

Main E* Test: test_estar_gfx

This program is a graphical test of E*. It expects the name of a grid config file and runs the E* algorithm using the goal and robot positions (indices) defined therein. You can use the -t option to disable graphical output, in which case it makes sense to also define an output file using -o filename in order to capture the result (it simply writes resulting cell values in ASCII).

In the misc/ directory there are some grid config files that can be used for test_estar_gfx:

  • grid-nhp-*.txt are grid definitions created by Akin Sisbot at LAAS-CNRS for testing E* on his PhD results for a human-aware motion planner.
  • grid-small.txt is a small hand-crafted grid
  • grid-hex-small.txt is a trial triangular mesh grid... this is work in progress, triangular meshes are not yet working reliably

Main PNF Test: test_pnf_gfx

With this program you can test the PNF algorithm, which is a planner that takes into account dynamic obstacles and relies on E* to create smooth navigation functions. See the documentation section for more information about PNF.

test_pnf_gfx expects the name of a config file. If you specify the string "paper" as second argument, then the plots will be in greyscale and with a different layout (supposedly better for inclusion in publications).

In the misc/ directory there are some grid config files that can be used for test_pnf_gfx:

  • pnf-static-impulse.pnf A setup with a single wall between the robot and the goal.
  • pnf-dynamic-impulse.pnf A setup with a single dynamic object between the robot and the goal in an otherwise empty environment.
  • pnf-setup-iros06-*.pnf Setups for the IROS'06 paper (see documentation below), not all were used though.
  • pnf-setup-star06-*.pnf Setups for the STAR paper (see documentation below).

There are also two utility scripts for creating vector-format figures of PNF plots. plot_pnf.sh uses gnuplot to create a contour plot of PNF values in XFig format. pnf_3d_riskplot.sh uses gnuplot and fig2dev to create a 3D plot of PNF risk data in PDF format. You can tweak those scripts in order to plot other data.

Other Programs

  • test_estar_replan_gfx: Program for comparing two instances of E*, with the goal of checking that dynamic replanning produces the same results as re-initializing and replanning from scratch. You can use the mouse to add and remove obstacles.
  • test_dbg_opt: Small test for checking whether debug messages get pruned properly (they do).
  • test_estar: An old text-only test program for E*. See the source-code for options.
  • test_estar_cwrap: A text-only program to check whether the C-wrapper code works.
  • test_estar_queue: Text-only debugging of the E* queue-ing mechanism. Will still be useful one day when work on triangular meshes is taken up again...
  • test_fake_os: Totally simple compile-test to see whether the rudimentary estar::fake_os class behaves correctly.
  • test_pnf_cooc and test_pnf_cooc3d: Old test programs for verifying the co-occurrence probability computations of PNF (which was ported from Matlab code that was written by Björn Jensen at ASL-EPFL back in 2002 or 2003).
  • test_pnf_riskmap: Checks if pnf::PNFRiskMap does wht it should.
  • test_shape: Tests the estar::Sprite class.

Documentation

The online documentation was generated using Doxygen. Each release can also be downloaded with documentation, simply choose one of the tarballs tagged with-doc on the download page. There are also some papers available here:

  • E* poster at IROS 2007 (and the corresponding flyer) presented during the Workshop on Algorithmic Motion Planning for Autonomous Robots in Challenging Environments.
  • E* at ICRA 2005 (PDF, old formulation, but gives basic insights)
     @INPROCEEDINGS{philippsen:2005,
      author    = {Roland Philippsen and Roland Siegwart},
      title     = {An Interpolated Dynamic Navigation Function},
      booktitle = {Proceedings of the IEEE International Conference
                   on Robotics and Automation (ICRA)},
      year      = 2005
     }
  • Technical Report on "light" E* 2006 (PDF, the formulation which is implemented on Sourceforge).
     @TECHREPORT{philippsen:2006a,
      author      = {Roland Philippsen},
      title       = {A Light Formulation of the E* Interpolated Path Replanner},
      institution = {Autonomous Systems Lab,
                     Ecole Polytechnique Federale de Lausanne},
      year        = 2006
     }
  • PNF in STAR 2006 (zipped PDF).
     @INBOOK{philippsen:2006b,
      author       = {Philippsen, R. and Jensen, B. and Siegwart, R.},
      editor       = {Laugier, C. and Chatila, R.},
      chapter      = {Towards Real-Time Sensor-Based Path Planning
                      in Highly Dynamic Environments},
      title        = {Autonomous Navigation in Dynamic Environments},
      publisher    = {Springer Tracts on Advanced Robotics},
      year         = 2006
     }