Skip to content

bkuangs/donkey_ros2

Repository files navigation

Dynamic Target Intercept using Monocular Visual-Inertial Odometry

Description:

Using IMU and camera, implement a lightweight SLAM or VIO package (like RTAB-Map or a scaled-down ORB-SLAM) to fuse camera and IMU data. Use the ROS 2 Nav2 stack to command the vehicle to drive to arbitrary coordinates in its mapped environment.

Program the car to identify, lock onto, and physically intercept a moving target (e.g., another RC car, a rolling ball, or a person walking). Use classical computer vision (optical flow) or a lightweight object detector to find the target. Pass the bounding box data into an Extended Kalman Filter (EKF) to estimate the target's velocity and trajectory. Finally, use a pure pursuit algorithm to generate steering commands to intercept it.

Stack: C++, ROS 2, OpenCV, OpenVINS, Nav2, EKF

Concepts: Sensor fusion, applied linear algebra, predictive modeling, real-time control

Architecture:

  • _localization: VIO, EKF, odometry, TF (OpenVINS)
  • _perception: Target detection from images (OpenCV)
  • _tracking: Target state estimatation (EKF)
  • _control: Pure pursuit, PID controller
  • _navigation: Decides where the vehicle should go (/nav/path + /nav/goal)

Stage 1: Naive point-to-path EKF target estimate → generate short /nav/path → pure pursuit.

Stage 2: Tracking pose generator EKF target estimate → compute following pose → generate straight/simple path → pure pursuit.

Stage 3: Hybrid A* EKF target estimate → following pose → Hybrid A* → /nav/path → pure pursuit.

Stage 4: Nav2-style EKF target estimate → dynamic Nav2 goal → SmacPlannerHybrid → Nav2 controller or your pure pursuit.

About

Dynamic target detection and tracking for an autonomous vehicle using CV, VIO, EKFs

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors