OpenCV Robot Relocalization: This project utilizes OpenCV and IMU data to address the 'kidnapped robot' problem. It features two key components:
- Kidnapping Detection, which uses IMU data to identify unexpected movements suggesting the robot has been moved
- Relocalization, employing OpenCV for template matching to reorient the robot in its new environment using lidar costmaps. The approach combines threshold-based
- IMU analysis with feature detection and mapping, offering a robust solution for autonomous reorientation after displacement.
-
cd catkin_ws/src #wherever your main is
-
cd ~catkin_ws
-
rosdep install --from-paths src --ignore-src -r
-
catkin_make
- Use the correct imu topic.
- Change your map.yaml's origin to [0,0,0].
- The global costmap and local cost map should be in the same directory
- First enter the The_kidnapper_Algorithm.py and change image path and template path to your respective position
- From map class change the global cost map topic with its name and after work the system 2 times.
- After you have initial costmaps change back to local costmaps.
- You can add the kidnapper.launch to your main launch file for it to work continously.
- As long as it does not detect kidnapping, the main program will not work so CPU usage is respectively low
![Real_world_position](https://private-user-images.githubusercontent.com/112685013/293636761-9dbdffa2-be5c-41f6-a404-d8b6b5ef8e12.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjAxNTM4MzgsIm5iZiI6MTcyMDE1MzUzOCwicGF0aCI6Ii8xMTI2ODUwMTMvMjkzNjM2NzYxLTlkYmRmZmEyLWJlNWMtNDFmNi1hNDA0LWQ4YjZiNWVmOGUxMi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNzA1JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDcwNVQwNDI1MzhaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT04Y2FmYzlkMzFiMjY1NjE2MDc4MGYyM2FjM2ZmNzU1YjNkZWNhMjUyMmRmYTE4MTc3YTQ0NzE4OTg2ODE5Nzc3JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.ii4LeI_oB5pEnZ54QPHLQ4J8V8QY_2LNL7mWU1m2ngc)
The real world position
![Initial_AMCL_Position](https://private-user-images.githubusercontent.com/112685013/293636793-39691656-8e26-4f2d-ba38-d329e0c07635.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjAxNTM4MzgsIm5iZiI6MTcyMDE1MzUzOCwicGF0aCI6Ii8xMTI2ODUwMTMvMjkzNjM2NzkzLTM5NjkxNjU2LThlMjYtNGYyZC1iYTM4LWQzMjllMGMwNzYzNS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNzA1JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDcwNVQwNDI1MzhaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0yMWU4MzYzNmIxOThjOTdmNDFkODc2YmQ1YTM0MDhiMmRhYjdjNzRlZTQzNDFmNGVjYzFkNmNjZjY0YmIxNzdhJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.5LNMNqHIjry3PcWtNvlyH1fRHYs2KDGuq5wj7__JS6Q)
Rviz initial condition
The localition finder
![Relocalization](https://private-user-images.githubusercontent.com/112685013/293636886-b59f3118-2257-4ce2-bf6a-9cdede504c8e.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjAxNTM4MzgsIm5iZiI6MTcyMDE1MzUzOCwicGF0aCI6Ii8xMTI2ODUwMTMvMjkzNjM2ODg2LWI1OWYzMTE4LTIyNTctNGNlMi1iZjZhLTljZGVkZTUwNGM4ZS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNzA1JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDcwNVQwNDI1MzhaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT00ZWM0MDZhMzljNTNjODc0YzgxODA5MWU1ZDI1ZjhmY2JkYTAwNzMyYzY1NzFiOGQ1NjljNGI2YWRiZTI5Mzk4JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.JgohNWVdDFZIjJeMg_1BdUy1epWrWJ20cMD6wxwUfH4)
relocalized position