Bachelor's Thesis β€’ 2023

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

Autonomous Robot Operation Behavior Trees Collision Avoidance Collision Detection Finite-state Machines Road Crossing ROS

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.

1

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.

2

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.

3

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:

BibTeX
@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

5Scenarios
8Simulation runs
4Vehicles (max)
0.52 mTightest clearance
1Safety abort

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.

Scenario 1

Three-lane traffic

15.3 s 3 vehicles 0.54 m min 186 holds
Scenario 1 trajectory animation
Trajectory
Scenario 1 velocity profile
Velocity
Scenario 1 clearance to vehicles
Clearance to vehicles

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.

Scenario 2 Β· run 1

No safe gap

Safety stop β€” 2 vehicles 1.74 m min 511 holds
Scenario 2 Β· run 1 trajectory animation
Trajectory
Scenario 2 Β· run 1 velocity profile
Velocity
Scenario 2 Β· run 1 clearance to vehicles
Clearance to vehicles

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.

Scenario 2 Β· run 2

Tight gap

6.9 s 2 vehicles 1.00 m min 101 holds
Scenario 2 Β· run 2 trajectory animation
Trajectory
Scenario 2 Β· run 2 velocity profile
Velocity
Scenario 2 Β· run 2 clearance to vehicles
Clearance to vehicles

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).

Scenario 2 Β· run 3

Clear road

4.3 s 2 vehicles 0.63 m min 0 holds
Scenario 2 Β· run 3 trajectory animation
Trajectory
Scenario 2 Β· run 3 velocity profile
Velocity
Scenario 2 Β· run 3 clearance to vehicles
Clearance to vehicles

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).

Scenario 3

Crossing traffic

9.4 s 2 vehicles 1.01 m min 185 holds
Scenario 3 trajectory animation
Trajectory
Scenario 3 velocity profile
Velocity
Scenario 3 clearance to vehicles
Clearance to vehicles

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).

Scenario 4 Β· run 1

Three vehicles

13.4 s 3 vehicles 0.74 m min 68 holds
Scenario 4 Β· run 1 trajectory animation
Trajectory
Scenario 4 Β· run 1 velocity profile
Velocity
Scenario 4 Β· run 1 clearance to vehicles
Clearance to 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).

Scenario 4 Β· run 2

Heavy waiting

26.1 s 3 vehicles 0.52 m min 659 holds
Scenario 4 Β· run 2 trajectory animation
Trajectory
Scenario 4 Β· run 2 velocity profile
Velocity
Scenario 4 Β· run 2 clearance to vehicles
Clearance to vehicles

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.

Scenario 5

Four vehicles

13.5 s 4 vehicles 0.85 m min 101 holds
Scenario 5 trajectory animation
Trajectory
Scenario 5 velocity profile
Velocity
Scenario 5 clearance to vehicles
Clearance to 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.

ScenarioCrossedMin clearanceΞ”tMin TTC
1 β€” Three-lane trafficβœ“0.54 m0.661.16 s
2.1 β€” No safe gapβœ—1.74 mβ€”β€”
2.2 β€” Tight gapβœ“1.00 m0.591.14 s
2.3 β€” Clear roadβœ“0.63 m0.94β€”
3 β€” Crossing trafficβœ“1.01 m0.421.47 s
4.1 β€” Three vehicles (low margin)βœ“0.74 m0.751.24 s
4.2 β€” Heavy waiting (high margin)βœ“0.52 m0.381.17 s
5 β€” Four vehicles + noiseβœ“0.85 m0.850.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.

On-board recording of the real crossing
Recorded trajectory of the real-world crossing
Recorded trajectory of the real crossing