Learning from Previous Attempts
Previous team's approaches relied heavily on either wifi-localization or odometry accuracy. We saw that each had their own flaws, whether it was speed or accuracy. The best approach in our eyes was to create a dual solution to this conundrum. Wifi trianglulation took too long while odometry proves to have its own accuray flaws. We found that both systems were good in their own ways, so it seems most logical to have them interact with the system in their own ways. Since wifi-localization takes more time to accomplish, we decided to use it whenever the other is unsure of its location. All other times, we found that Create3 Robot odomety in combination with multiple sensors maintained location accuracy at a proficient enough level.
Our Approach - Dual Solution
Monte Carlo Localization
Wifi-localization
With our two forms of localization, we must ensure that they determine what happens inside of navigation accordingly, as you can see above. Monte Carlo localization compares a pregenerated map in comparison to the real-time environment and its current odometry measurements. With the use of the Nav2, we can easily accomplish this. Wifi-localization initializes the robots position on start up, so it will always know where it is at, no matter where you want to begin a task. This however is a more complicated task, especially in environments with hundreds of nearby routers. What we do to improve this idea from a previous project, was to limit our results of adjacent routers to only the top 8. In various locations we can use these top 8 routers that we collected to compare with a list of prerecorded locations. When we see resemblances in our current location, and that of known locations, we can easily navigate to that point and know exactly where we are! There is much more that happens under the hood of these three key modules, but high level design is maintained throughout the software development process.
Implementing
As you can see, we created 4 modules in this project that all interact with each other in differnt ways. Safety, takes priority over navigation whenever we detect a ledge. We also see that map generation utilizes safety. Moving onto map generation, we see that it hands information into our navigation module. Navigation is in charge of object avoidance and route planning, so it obviously serves as the heart of the system. Wifi-localization initializes the robots location, and hands this information to navigation, so we can see just how important the integration of all of these moving pieces is to the integrity of the software.
Future Potential
We are very proud of the work we've accomplished here, and we hope we've made this software modular and robust enough for future projects to have as much fun as we did. There is a lot of potential that stems from this softwares back-bone, and we are confident that students around the world can benefit from the open source software. Here is a few potential projects or courses that potentially spawn from this point on.
-
Full building/campus tours
- Multiple floors/environments
- GPS Integration for full campus tours
-
Additional Payloads
- Robotic Arms
- Additional Sensors
- Multiples Networked Robots
-
Future Courses
- Embedded Systems Machine Learning
- Object Avoidance Algorithms
- Wifi-localization Techniques
- ROS2 specific
- Behavior Trees and Node Control