After successfully building my autonomous delivery robot a few years back, I wanted to dive deeper into the mathematical foundations and compare different algorithmic approaches to navigation planning.
While my delivery robot used a working navigation stack, I was curious about implementing and comparing the core algorithms from scratch - understanding their trade-offs, performance characteristics, and seeing how different approaches handle the same planning problems.
This repo is my deep dive into the algorithmic side of robot navigation, implementing PRM, RRT, and TEB controllers to really understand their strengths and weaknesses in different scenarios.
Having built a working autonomous system, I wanted to explore:
- How do different global planning algorithms compare in terms of speed vs optimality?
- What are the practical differences between sampling-based planners like PRM and RRT?
- How does parameter tuning affect algorithm performance in real scenarios?
- What makes TEB controllers so effective for local trajectory optimization?
Basically, I wanted to move beyond "it works" to "I understand exactly why and how it works."
The systematic approach. I implemented this to understand how pre-computed roadmaps can accelerate path queries. The algorithm builds a graph of valid configurations that can be reused for multiple planning requests.
Key insights from implementation:
- Roadmap quality heavily depends on sampling density and connection radius
- Great for repeated queries in the same environment (like my delivery robot's scenario)
- Connection strategy significantly impacts path quality
The exploration-focused approach. Built this to compare against PRM and understand how tree-based exploration handles complex environments differently.
What I discovered:
- Much more responsive to single-query problems
- Tree growth patterns reveal algorithm biases
- Randomness provides both strengths (exploration) and weaknesses (inconsistency)
The trajectory optimizer. This was the piece I wanted to understand most - how raw geometric paths become smooth, executable trajectories that respect robot kinematics.
Implementation revelations:
- The "elastic band" concept is elegant - stretching paths while respecting constraints
- Real-time performance requires careful parameter tuning
- The bridge between high-level planning and low-level control
Testing both planners on identical scenarios revealed interesting patterns:
% My experimental setup
environments = ["narrow_corridors", "open_spaces", "cluttered_areas"];
planners = ["PRM", "RRT"];
for env in environments
for planner in planners
[performance_metrics] = run_analysis(env, planner);
end
endPerformance Characteristics:
| Scenario | PRM Advantages | RRT Advantages |
|---|---|---|
| Repeated Queries | Amortized planning time | Fresh approach each time |
| Narrow Passages | Systematic coverage | Targeted exploration |
| Dynamic Updates | Roadmap updates | Natural adaptability |
TEB Optimization Results:
- Reduced path execution time by 30-40% through velocity profiling
- Eliminated kinematically infeasible commands
- Smooth trajectories that actual robots can follow
Parameter Sensitivity Analysis: I systematically varied key parameters to understand their impact:
MaxConnectionDistancein PRM: Sweet spot around 1.0-2.0 for lab environmentsMaxIterationsin RRT: Diminishing returns after ~500 iterations- TEB
ObstacleSafetyMargin: Critical for real-world deployment
Computational Complexity:
- PRM: High upfront cost, low query cost
- RRT: Consistent per-query cost
- TEB: Real-time optimization overhead
This theoretical exploration enhanced my understanding of what was happening in my delivery robot:
- The navigation stack I used was likely running RRT* for global planning
- TEB was handling the smooth motion I observed
- Parameter choices in my original implementation now made more sense
Key insight: Understanding algorithmic foundations makes you a better robotics engineer, not just a better implementer.
Based on this analysis, here's what I learned about when to use what:
Choose PRM when:
- Multiple robots share the same environment
- Repeated planning queries in static environments
- You can afford upfront computation time
Choose RRT when:
- Single-shot planning problems
- Environments change frequently
- You need fast initial solutions
Always use TEB when:
- Working with real robots (not simulations)
- Smooth motion is required
- You have kinematic constraints
Environment: RST lab map from TU Dortmund (realistic indoor scenario) Tools: MATLAB Robotics Toolbox for consistent implementation Metrics: Planning time, path length, smoothness, success rate Validation: Compared against established benchmarks
This research directly informed improvements to navigation systems:
- Better algorithm selection based on use case
- More informed parameter tuning
- Understanding of failure modes and limitations
- Hybrid planners combining PRM and RRT strengths
- Machine learning for adaptive parameter tuning
- Multi-robot coordination with these foundational algorithms
- Extension to 3D planning problems
MATLAB Robotics-Toolbox Algorithm-Analysis PRM RRT TEB-Controller Path-Planning-Research Navigation-Theory
Built to understand the science behind the engineering
This project reinforced that great robotics engineers don't just implement working solutions - they understand the fundamental algorithms well enough to choose the right tool for each problem and tune them effectively.