Rigorous benchmarking for Bayesian Optimization Approach to Windowing Motion Planning
BOW Benchmark provides comprehensive performance comparisons between BOW (Bayesian Optimization Approach to Windowing Motion Planning) and state-of-the-art motion planning algorithms.
| Language | Planner | Description |
|---|---|---|
| C++ | BOW | Bayesian Optimization Approach to Windowing Motion Planning |
| RRT | Rapidly-exploring Random Trees (OMPL) | |
| HRVO | Hybrid Reciprocal Velocity Obstacles | |
| DWA | Dynamic Window Approach | |
| Python | MPPI | Model Predictive Path Integral |
| CBF | Control Barrier Functions |
First you have to install and setup the environment and then run.
# Install dependencies
sudo apt update
sudo apt install build-essential cmake git pkg-config \
libnlopt-dev libnlopt-cxx-dev libfcl-dev libompl-dev \
libboost-all-dev libyaml-cpp-dev
# Clone and build
git clone <repo>
cd BOW
mkdir build && cd build
cmake ..
make -j$(nproc)# Setup conda environment
conda create -n bow python=3.10
conda activate bow
pip install -r requirements.txtIf you have Anaconda installed, add this to your ~/.bashrc:
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH# Run benchmarks
./build/benchmark/BowBenchmark
# Google Benchmark tests with custom options
./build/benchmark/BowBenchmark --benchmark_filter=BOW --benchmark_repetitions=10# Activate environment
conda activate bow
# Complete benchmark suite
./run_py.sh
# Custom experiments (edit config/main.yaml first)
python main.py| Library | Purpose | Installation |
|---|---|---|
| NLopt | Nonlinear optimization | sudo apt install libnlopt-dev libnlopt-cxx-dev |
| FCL | Collision detection | sudo apt install libfcl-dev |
| OMPL | Motion planning | sudo apt install libompl-dev |
| Boost | C++ utilities | sudo apt install libboost-all-dev |
| YAML-CPP | Configuration parsing | sudo apt install libyaml-cpp-dev |
pip install -r requirements.txtBOW/
├── 📂 algos/ # Python algorithm implementations
├── 📂 benchmark/ # C++ benchmark implementations
│ ├── 📂 include/ # Algorithm headers (dwa, hrvo, ompl)
│ └── 📂 src/ # Benchmark source code
├── 📂 bow/ # BOW planner implementation
│ └── 📂 bow++/ # C++ BOW implementation
├── 📂 build/ # C++ build directory
├── 📂 config/ # Configuration files
│ ├── 📂 planner/ # Planner configurations
│ └── 📂 test/ # Test configurations
├── 📂 include/ # C++ headers
│ ├── 📂 bow/ # BOW headers
│ └── 📂 limbo/ # Bayesian optimization library
├── 📂 results/ # Benchmark results
├── 📂 result_analysis_cpp/ # C++ result analysis
├── 📂 result_analysis_py/ # Python result analysis
├── 📂 scripts/ # Utility scripts
├── 📂 src/ # Additional source implementations
└── 📂 test/ # Test files
Check your installation:
# C++ dependencies
pkg-config --exists nlopt && echo "NLopt ✅" || echo "NLopt ❌"
find /usr -name "fcl" -type d 2>/dev/null | head -1 && echo "FCL ✅" || echo "FCL ❌"
find /usr -name "ompl" -type d 2>/dev/null | head -1 && echo "OMPL ✅" || echo "OMPL ❌"
# Python environment
conda activate bow
python -c "import numpy, matplotlib; print('Python environment ✅')"GLIBCXX Version Mismatch (Anaconda)
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATHCMake Configuration Issues
rm -rf build/ && mkdir build && cd build && cmake ..Missing Headers
sudo apt install libnlopt-dev libfcl-dev libompl-dev libboost-all-dev libyaml-cpp-devFedora/RHEL/CentOS:
sudo dnf install nlopt-devel fcl-devel ompl-devel boost-devel yaml-cpp-develmacOS (Homebrew):
brew install nlopt fcl ompl boost yaml-cppVisit our project website for detailed experimental results and publications:
We welcome contributions! Please ensure:
- C++ code follows project standards
- Python compatibility with 3.10+
- Proper benchmark integration
- Updated documentation
[Add your license information here]
If you use this benchmark in your research, please cite our work:
[Add your citation information here]🌐 Project Website • 📧 Support • 🐛 Issues