Mars Rover Team
Skills Used: ROS, Python, Linux, Qt, Localization, GPS, Computer Vision, Nvidia Jetson, team management, testing, documentation
I worked on BYU's Mars Rover Team for close to two years. The first year we were not able to participate in the competition due to COVID.
Both years I worked as a member of the Autonomy team, where we focused on the Autonomy Task portion of the competition. I developed on the Nvidia Jetson for our onboard computer, using a ZED 2.0 for vision and magnetometer data. We also had RTK GPS units to perform localization with respect to target coordinates.
For background, the autonomous competition task consisted of 7 legs:
Legs 1-3: Autonomously navigate within 3 m of a given GPS coordinate, increasingly further away from the starting position
Legs 4:6: Autonomously find and navigate within 3 m of an AR Tag that is a certain distance (5, 10, 15-20 m) away from a given GPS coordinate
Leg 7: Autonomously navigate between two AR tags (called a "gate") that are 3 m apart, given a GPS coordinate near the tags
The first year I worked on the Mars Rover team, I was a volunteer helping other students on their capstone project. I was first assigned to work on AR tag detection capabilities. We used an open source library (aruco_detect) to find AR tags and determine the Euclidean distance. We achieved a distance of 8 m to reliably detect AR tags in several lighting conditions. I programmed a simple algorithm that would navigate to the given GPS coordinate and then perform a box search to find the AR tag for legs 4-6 (see image). This gave a tunable way to find the AR tag in a robust manner.
My second year working on the team, it was my capstone project. My main contributions this year were:
Rework GUI interface for a more user-friendly experience, while making it more effective for competition
Extensive repository clean-up (over 200 different files with several outdated packages) making it significantly easier to develop without accidentaly using out-dated code
Implementation of PID controller for autonomous waypoint navigation
Validation of Autonomous Waypoint navigation (see above video, navigating to wooden board in 4x speed)
Refining of search pattern algorithm, resulting quicker navigation to detected AR Tags
I also had the chance to be the Team Lead for the Autonomy team during the second portion of the school year. This was a unique experience because it was the semester before the competition and we had a lot of work to do in order to bring our best rover. Some things I learned:
How to focus on key objectives: It was my job to identify the biggest challenges we faced in scoring the most amount of points possible. There were a lot of things that we could do, but I had to decide what the team members would focus on in order to better our chances of winning the competition
How to delegate and manage a team: I was over a team of 7 other engineering students with differing backgrounds. I was responsible for making sure each team member had a positive experience on the team while balancing the best outcome in terms of competition placement. This meant putting together sub-teams that worked well together and could accomplish the necessary tasks.
Manage testing and documentation: As the team lead I was also responsible for ensuring that our team created and followed appropriate testing procedures, as well as writing useful documentation for next years team. We spent a significant amount of time doing this and I saw a big improvement in performance on testing days.