Roadmap and Implementation Phases
There are a lot of concepts for me to learn here. I also need to determine where functionality resides (Pi or Arduino) and create communication mechanisms between the processors. This is potentially a complex build and integration so I intend to implement in small phases, each building on the previous phase.This may mean reworking and/or rewiring things as we move forward.
Some phases are purely research and will not move Kupe forward, but the knowledged gained will be useful in subsequent phases. As I look further forward, the details of phases becomeless detailed but that will be fleshed out as I learn more.
Phase 1: Traversing a Virtual Map
This involves using a virtual map and creating a "traversal path".This is CPP.
- Represent lawn as a virtual map
- Consider map representatiion (cartesian,compass, python)
- Ideally, use real measurements and scale for grid granularity (different sized robots)
- Simple Grid CPP - extend to accommodate obstacles leaving holes in the pattern
- Display CPP visually
- Get this working on the Pi
Phase 2: Add Obstacle Avoidance
Augment Phase1 to navigate around obstacles and continue CPP. This aims to give full coverage
- Add A-Star (or similar) search algorithm
- Package/Modularize python code and algorithms
- Add tests
- Display visually to monitor how we cover the whole area
- Get this running on the Pi
- Merge CPP and A-Star to give full coverage
Phase 3: Experiment with OpenCV - Camera
I worked with openCV on moana but hat was on a Pi 3 using older OpenCV software. I need to familiarize myself with any new APIs etc
- Load up Pi with openCV and get it working.
- Use a Pi camera to take images
- Install Pi on kupe
- Loom wiring from power to Pi
- Physically install Camera on Kupe
- Wire camera into Pi
Phase 4: Using April Tags
- Research different April Tags. Size, type etc
- Create some April Tags
- Use Camera with OpenCv to recognize April Tags.
- Determine what data we can obtain from the April Tags
- Determine if we need to custom configure OpenCV for the camera type to improve accurracy
Phase 5: Real world map to virtual map and vice-versa
- Investigate map representation. Cartesian vs Compass vs Relative
- See how recognition of an April Tag data can be integrated into the virtual map
- Determine which map representaion to store and various conversions between other types.
- Localization between April Tag and Virtual Map representaion
Phase 6: Interfacing Pi with Arduino
- Serial UART mechanism
- Determine baud rate. I suspect it needs to be high
- Create a communication protocol, primarily from Pi->Arduino but maybe two way
- Physically wire this up on kupe
- Pi should send steerage commands to Arduino
- Compass readings
- Where to interface the compass (Pi or Arduino)
- Get it working on kupe
Phase 7: Monocular Odometry
- Research into how to do this with openCV
- Camera configuration adjustments
- Determine what data we can glean from this mechanism
- What are the limitations and what is missing
- Do we need compass and consider how we can merge this sensor data
Phase 8: Compass - planning and correction
Phase 9: Sensor Merging - Kalman filtering
Phase 10: Monocular Visual Odometry, April Tags and Compass
Phase 11: Stereo Visual Odometry
Phase 12: Reworking the compass - move to arduino
Phase 13: Monocular to Stereo Visual Odometry
Phase 14: Merging Stereo Visual Odemtry with April Tags and Compass
Phase 15: Generating the map - SLAM research
Phase 16: Visual SLAM vs LIDAR
April 2026
|