Autonomous Road Crossing with a Mobile Robot
CTU Digital Library β’ Jan Vlk
- Overview & Citation Overview
- Results Results
Abstract
This work proposes, implements and evaluates a control algorithm for safe road crossing with a mobile robot. The algorithm is based on a behavior tree architecture and takes into consideration the positions of vehicles in the robotβs surroundings. The robot uses the detected vehicles to decide when it is safe to cross the road. The algorithm is implemented in a simulation environment and evaluated on a real robot. The results show that the robot is able to cross the road safely in most cases.
Keywords
How it works
Perceive
The robot tracks the position and motion of every vehicle around it, projecting where each one will be over the next few seconds.
Decide
A behavior tree continuously evaluates whether moving forward would risk a collision. If so, it holds the robot in place and re-checks.
Cross
Once a sufficient gap appears, the robot commits and crosses at up to 1 m/s, keeping a safe clearance to every vehicle.
Algorithm design
After evaluating monolithic, FSM, and behavior tree approaches, a behavior tree was chosen for its modularity, reactivity, and scalability. The algorithm is structured as three sequentially executed sub-trees, each handling a distinct phase of the crossing.
Init
Checks that the robot is close enough to the correct road, evaluates suitability of the crossing location, and β if needed β navigates to a better spot using OSM map data.
Perpendicular
Uses GPS and magnetometer to orient the robot perpendicular to the road, minimising crossing distance. Each orientation step retries up to 10 times; if the robot drifts onto the road during rotation, a fallback moves it back to the kerb.
Crossing
The core decision loop, re-evaluated every tick. Computes the velocity range that would cause a collision with each detected vehicle, then cascades: move forward at full speed if no risk β move at a safe velocity if one is available β hold if stopping is safe β retreat if a gap is behind β stop as last resort.
Citation
BibTeX Citation
If you use this work, please cite the following:
@mastersthesis{Vlk2023RoadCrossing,
title={Autonomous Road Crossing with a Mobile Robot},
author={Jan Vlk},
school={Czech Technical University in Prague},
type={Bachelor's Thesis},
year={2023},
url={http://hdl.handle.net/10467/109306}
}
Published in:
CTU Digital Library
Simulation results
Each run shows the trajectory (robot in magenta, vehicles in other colours), the velocity profile, and the clearance to each vehicle over time. The minimum clearance is marked on the distance plot.
Three-lane traffic
Tests optimal velocity calculation with three vehicles in a line. The robot holds while all three pass, then crosses. Min clearance 0.54 m; efficiency ratio Ξt = 0.66.
No safe gap
Tests trajectory prediction β vehicle decelerates to a stop inside the robot's path. No safe gap exists; controller correctly refuses to advance (511 safety holds) and never crosses. Min clearance 1.74 m.
Tight gap
Vehicle decelerates to a stop just past the robot's path, opening a gap. Robot accepts it and crosses in 6.9 s with a 1.0 m margin (Ξt = 0.59).
Clear road
Vehicle decelerates to a stop before crossing the robot's path β road is clear from the start. No holds triggered; robot crosses immediately (Ξt = 0.94).
Crossing traffic
Multiple vehicles starting at greater distance and higher velocity, testing inter-vehicle gap handling. Robot waits for a safe window, then commits with a 1.0 m margin (Ξt = 0.42).
Three vehicles
Tests velocity margin impact (margin = 0.15 m/s). Robot threads a gap in front of the closer vehicle, crossing with a 0.74 m clearance (Ξt = 0.75).
Heavy waiting
Higher velocity margin (0.25 m/s) raises the safety threshold β robot judges the gap too tight and waits for both vehicles to clear, resulting in 659 holds across 26 s. Demonstrates the direct impact of the safety margin on conservatism.
Four vehicles
Tests robustness against random positional detection noise injected across all four vehicles. Despite the jerky motion noise causes, the robot maintains a safe 0.85 m clearance (Ξt = 0.85).
Evaluation summary
Ξt = empty-road time / actual crossing time (higher = more efficient). Min TTC = minimum time-to-contact assuming the vehicle stops and the robot maintains its current trajectory.
| Scenario | Crossed | Min clearance | Ξt | Min TTC |
|---|---|---|---|---|
| 1 β Three-lane traffic | β | 0.54 m | 0.66 | 1.16 s |
| 2.1 β No safe gap | β | 1.74 m | β | β |
| 2.2 β Tight gap | β | 1.00 m | 0.59 | 1.14 s |
| 2.3 β Clear road | β | 0.63 m | 0.94 | β |
| 3 β Crossing traffic | β | 1.01 m | 0.42 | 1.47 s |
| 4.1 β Three vehicles (low margin) | β | 0.74 m | 0.75 | 1.24 s |
| 4.2 β Heavy waiting (high margin) | β | 0.52 m | 0.38 | 1.17 s |
| 5 β Four vehicles + noise | β | 0.85 m | 0.85 | 0.88 s |
All minimum clearances β₯ 0.52 m. All minimum TTC values > 0.8 s β well above the ~0.2 s detection latency, giving the algorithm sufficient reaction time in every scenario.
Real-world validation
The same controller was deployed on Boston Dynamics Spot in the CTU FEE courtyard. Since the vehicle detection node was developed separately and not yet complete, vehicle presence was simulated via AprilTag fiducial markers carried by the supervisor alongside the road. The robot successfully used GPS and magnetometer to orient itself perpendicular to the road, waited for a safe gap, and completed the crossing autonomously.