- We secured 5th position in the Roboracer competition at ICRA 2025.
- One of our winning races video is here: https://youtu.be/EZ4xm3I_c7I?si=HrvqoY1bP3b0-n52
-
Clone this repo
-
This repo uses some custom message types for communication, defined here: https://github.com/vaithak/f1tenth_icra_race_msgs
git clone git@github.com:vaithak/f1tenth_icra_race_msgs.git colcon build --packages-select=f1tenth_icra_race_msgs
-
Update the
config/r3.params.yaml
file by changing the location of the waypoints file included in the repo -race3-manual-fitted.csv
-
Build the package
colcon build source install/local_setup.bash
- Launch the object and tracking subsystems
ros2 launch f1tenth_icra_race r3.oo.launch.py
- Launch the spliner and state machine
ros2 launch f1tenth_icra_race r3.ss.launch.py
- Launch the controller
ros2 launch f1tenth_icra_race r3.c.launch.py
- Opponent Detection and tracking:
- It uses a clustering method with an adaptive breakpoint algorithm to create bounding box
rectangles for obstacles. - Uses a simplified Extended Kalman Filter for Velocity tracking (assumes a single obstacle).
- Implemented in C++ for realtime performance of 50Hz.
- Reference: https://github.com/kostaskonkk/datmo
- It uses a clustering method with an adaptive breakpoint algorithm to create bounding box
- Spline-based real-time planner and state machine:
- Real-time updating of local waypoints if an obstacle is detected in front of the car.
- Decides which side to overtake from and fits a cubic spline to update the waypoints.
- State machine to decide when to trail vs when to overtake
- Reference from ForzaETH: https://arxiv.org/abs/2403.11784
- Pure Pursuit-based controller:
- Pure Pursuit controller with sector-wise adaptive lookahead and velocity mapping.