# My F1TENTH Journey — Lab 2, Automatic Emergency Braking

**This series of blogs marks the journey of my F1/10 Autonomous Racing Cars.**

**All my source codes can be accessed here.**

**Previous post:**

## Overview

This lab focuses on implementing an AEB (Automatic Emergency Braking) in ROS node for F1/10 racing cars. AEB is widely used in autonomous vehicles as a basic safety guarantee to avoid collisions with objects.

The lab materials can be accessed here. A PDF version is also attached here.

The lab was built on the *F1Tenth Simulator*, which can be accessed here.

## Demo

## Time-To-Collision

TTC (Time-To-Collision) is the time it would take for the vehicle to collide with an obstacle given its current heading and velocity. TTC can be calculated with the following format:
$$
TTC = \frac{r}{[-\dot{r}]*+}
$$
where $r$ is the distance between vehicle and obstacle, $\dot{r}$ is its 1st derivative with respect to time, and the symbol $[x]*+$ denotes $\max(0,x)$.

In practice, we use LiDAR results to calculate TTC for each beam. Specifically, we project the current vehicle velocity onto the direction of each beam as $\dot{r}$, namely $\dot{r}=v\cos(\theta)$.

`sensor_msgs/LaserScan`

provides us with LiDAR beams in all directions. In each `LaserScan`

message, we have `angle_min`

, `angle_max`

and `angle_increment`

, which corresponds to the *starting angle*, the *ending angle*, and the *step angle* between two adjacent laser beams. All the angles are given in the local coordinate frame (positive $x$ direction is the vehicle’s heading) and positive $x$ direction is marked as angle value $0$.

We also have `float32[] ranges`

in each `LaserScan`

message, which gives us the distance to obstacle in the corresponding direction angle. Namely, `ranges[i] <--> angle_min + i * angle_increment`

.

Given the above information, it is not difficult for us to write our AEB ROS node.

## References

F1/10 Autonomous Racing Lecture recordings: