Pure pursuit controller for F1TENTH autonomous racing with velocity control and safety monitoring.
# Build
colcon build --packages-select controller_pkg
source install/setup.bash
# Real car
ros2 launch controller_pkg controller.launch.py
# Simulation
ros2 launch controller_pkg controller.launch.py sim_mode:=true| Parameter | Default | Description |
|---|---|---|
sim_mode |
false |
Use simulation topics if true |
/planned_waypoints- Path from lattice planner (ae_hyu_msgs/WpntArray)/pf/pose/odom(real) //ego_racecar/odom(sim) - Vehicle pose
/drive- Ackermann drive commands (ackermann_msgs/AckermannDriveStamped)
Edit config/controller_config.yaml:
# Pure Pursuit
lookahead_distance: 2.5 # Target point distance (m)
lookahead_ratio: 0.4 # Speed-dependent lookahead
min_lookahead: 0.5 # Minimum lookahead (m)
max_lookahead: 3.0 # Maximum lookahead (m)
# Vehicle
wheelbase: 0.35 # Vehicle wheelbase (m)
max_steering_angle: 0.4 # Max steering (rad)
max_steering_rate: 2.0 # Max steering rate (rad/s)
# Speed Control
target_speed: 5.0 # Default speed (m/s)
max_speed: 8.0 # Speed limit (m/s)
use_planner_velocity: true # Use waypoint speeds
velocity_scale_factor: 1.0 # Speed scaling factor- Waypoint Selection: Find target point based on lookahead distance
- Pure Pursuit: Calculate steering angle to target point
- Speed Control: Use waypoint velocities or constant speed
- Safety Limits: Apply steering and speed constraints
- Command Output: Publish Ackermann drive messages
- Lattice planner running (
/planned_waypointstopic) - Localization running (odometry)
- Vehicle hardware or simulation ready