Skip to content

a ROS2- and Nav2-based software stack designed for F1TENTH autonomous vehicle development.

Notifications You must be signed in to change notification settings

ZhihaoZhang0618/PhoenixCore

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PhoenixCore

Overview

PhoenixCore is a ROS2- and Nav2-based software stack designed for F1TENTH autonomous vehicle development. It uses SmacPlannerHybrid as the global planner to compute the global path, and RegulatedPurePursuit to track the path from the vehicle's current position. Additionally, it employs slam_toolbox and robot_localization to localize the vehicle within its environment.

I hope this project becomes an easy-to-use navigation baseline for F1TENTH developers to modify and utilize in races. However, there are still some issues that need addressing. For instance, the computational performance and speed of the global planner are currently inadequate, and RegulatedPurePursuit struggles to follow the global path and avoid obstacles at high speeds.

All the code was written during my free time after work while I was a Research Assistant at ZJU FAST Lab. I am deeply grateful to the wonderful people at ZJU FAST Lab for their support and guidance. Even though this is just a small project, their assistance was invaluable.

Installation

I provide an installation guide here, for ROS2 Humble on Ubuntu 22.04.

May have some issues with the installation guide, please let me know if you have any questions.

Modification & Customization

Some Hardware Details

NUC12 (Intel i5-1240p)

Lidar: 3i-T1 or utm30lx

Camera: didn't use right now

IMU: fdilink Deta30

Remote Controller: RadioMaster Pocket ELRS version (much better than XBOX series controller)

For more details about the hardware, please contact to the KelvinLauMiau

VESC Interface

The modified VESC interface is based on the VESC interface provided by Veddar VESC Interface. The modification includes:

  • Modify the odometry computation, as the original method causes a speed delay when decelerating from high velocities to a stop.

ackermann_mux

  • Add some scripts to process msg from ELRS driver and publish to /teleop

Nav2

Main Launch Files

ros2 launch f1tenth_system base.launch.py
#for hardware driver bringup

ros2 launch f1tenth_system slam.launch.py
#for slam 

ros2 launch f1tenth_system localization_slam.launch.py
#for localization

ros2 launch f1tenth_system nav.launch.py
# nav2 wo avoidance launch file

or

ros2 launch f1tenth_system nav_avoid.launch.py
# nav2 with avoidance launch file

Results

My friends have been using this code for 19th F1TENTH Grand Prix at SM 2024. And we got the 3rd prize.

click picure to view the video

Acknowledgement

This project would not be possible without the use of multiple great open-sourced code bases as listed below:

map and nav2 config provivded by KelvinLauMiau
All the code was written at FAST Lab, Zhejiang University.

Future Work

  • compare slam_toolbox with cartographer.
  • Use global_racetrajectory_optimization to optimize a fixed global path.
  • Use MPCC to track the path.
  • Use a better simulation environment, like ISAAC Lab, Autodrive.
  • Use RL to learn Emergency Brake Assist and Auto Overtake policies.

About

a ROS2- and Nav2-based software stack designed for F1TENTH autonomous vehicle development.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published