Autonomous navigation system for Thymio robot using ArUco marker-based localization, Extended Kalman Filter sensor fusion, and A* path planning with obstacle avoidance.
This project implements a complete autonomous navigation pipeline for the Thymio mobile robot. The robot navigates from a start position to a goal while avoiding obstacles, using visual localization from overhead camera ArUco markers and wheel odometry fused through an Extended Kalman Filter.
- ArUco-based Global Localization: Camera-based pose estimation using ArUco markers
- Extended Kalman Filter: Sensor fusion combining vision and odometry for robust pose estimation
- A Path Planning*: Grid-based path planning with obstacle inflation and cost decay
- Pure Pursuit Path Following: Smooth trajectory tracking with lookahead distance
- ANN Obstacle Avoidance: Neural network-based reactive obstacle avoidance integrated into path following
- Finite State Machine: FSM state management (initialization, path following, goal reached)
- Real-time Visualization: Live view of map, planned path, and actual robot trajectory
main.py- Entry point for the navigation systemrobot_fsm.py- Finite state machine orchestrating robot behaviorglobal_navigation.py- ArUco detection, localization, and A* path planningglobal_localization.py- Pose calculation from ArUco markers using pixel position & trilaterationlocal_ekf.py- Extended Kalman Filter for sensor fusionpath_follower.py- Pure pursuit controller with integrated obstacle avoidancethymio_helper.py- High-level Thymio interfacethymio.py- Low-level Aseba protocol implementationdetect_aruco.py- ArUco marker detection utilitiesmath_thymio.py- Mathematical utilities for pose transformations
camera_calibrator.py- Camera calibration utilitytest_global_nav.py- Standalone testing for navigation componentsenvironment.yml- Conda environment specification
- Thymio robot
- Overhead camera (tested with 1920x1080 resolution)
- Printed ArUco markers (5x5 100 tag dictionary):
- Tags 1-4: Map corner markers
- Tag 0: Robot marker (mounted on robot)
- Tag 11: Start position marker
- Tag 12: Goal position marker
- Tag 10: Obstacle markers (multiple instances)
conda env create -f environment.yml
conda activate bomr_envGenerate calibration images:
python camera_calibrator.pypython main.py