I need a location tracking system for my office robot. Our carpet happens to have a pseudo random grid pattern of four colors. I'm creating a map of this pattern, then at runtime I fuse odometry with carpet colour (detected via camera) in a particle filter to determine and track robot location.
Initial results are looking good :)
Some links :
How I detect carpet colour: https://nbviewer.jupyter.org/github/tim-fan/carpet_color_cla...
The particle filter: https://github.com/tim-fan/carpet_localisation
ROS package with gazebo simulation : https://github.com/tim-fan/carpet_localisation_ros
Current state of my carpet map (about 1/4 of the full office): https://raw.githubusercontent.com/tim-fan/carpet_localisatio...