Simulations of autonomous robot navigation, using information-theoretic metrics. For a detailed description of this work, please review the document here, which gives a brief overview of related work and presents some interesting theoretical results.
Although we hope to build exploration into a full-fledged, generic information-maximization solver for applications in robotics, we have decided to begin by tackling a toy problem inspired by radiation detection.
The radiation detection problem is contained in the radiation/
directory, and is subdivided into Python and C++ implementations. In the Python subdirectory (radiation/python/
), the source code is readily visible, unit tests are located in the radiation/python/test/
directory, and scripts are located in the radiation/python/scripts/
directory. In the C++ implementation (radiation/cpp/
), source code and header files are located in radiation/cpp/src/
and radiation/cpp/include/
, respectively. Unit tests are in radiation/cpp/test/
, and executables are in radiation/cpp/exec/
.
I may miss a few here, but for the Python implementation the dependencies are as follows:
- nose (unit testing)
- scipy (for optimization)
- numpy (for general numerics)
And for the C++ implementation:
- Google Ceres (fast nonlinear least squares solver)
- Gurobi (general commercial convex optimization solver)
- Eigen3 (header-only linear algebra library)
- Gflags (Google's command-line flag manager)
- Glog (Google's logging tool)
All of these may be installed very easily. If you run into any trouble, though, we are more than happy to help you figure out what's going on. Just post an issue on this repository and we will reply as soon as possible.
Begin by adding the directory exploration/radiation/python/
to your PYTHONPATH, e.g. by appending the following line to your ~/.bashrc
(Linux) or ~/.bash_profile
(Mac) or (sorry, Windows):
export PYTHONPATH=$PYTHONPATH:(path-to-this-repo)/exploration/radiation/python
To run unit tests, you'll need to invoke the following command from exploration/radiation/python/
:
nosetests -v
And to run any of the scripts within exploration/radiation/python/scripts/
, you'll need to run the command python (path-to-script)/(name-of-script)
, e.g. to run the LP-based explorer, you can run
python run_explorer_lp.py
from within the scripts/
directory.
You'll need to begin by building the repository. From the top directory (exploration/radiation/cpp/
), type the following sequence of commands:
mkdir bin
mkdir build
cd build
cmake ..
make -j4
This should build all tests and executables. In order to run tests, you can run the following command:
./run_tests
from within the build/
directory you just made. All the tests should pass, and none should take more than a second or so to run.
Executables are automatically placed within the bin/
directory that you created. To run them, just type ./(name-of-executable)
, e.g. to run the LP explorer:
./run_explorer_lp
To the extent that it makes sense, all parameters are accessible from the command line via Gflags. So, for example, in order to run the LP explorer for 100 iterations instead of the default 10, you could run the following:
./run_explorer_lp --num_iterations=100
We use Doxygen to auto-generate web-based documentation. Although we do not follow the Doxygen guidelines for writing comments, auto-generation still seems to do a fairly reasonable job.