GolfRobot Project: A Computer Vision and Robotics System
the 2nd of July, 2024
Introduction
As part of my software engineering degree, I participated in a team-based CDIO (Conceive, Design, Implement, Operate) project, where we designed and built an autonomous robot capable of collecting golf balls on a course using advanced image detection technology. This project spanned the entire system development lifecycle, requiring both hardware and software integration to solve real-world engineering challenges. We successfully developed the system, and the project was awarded top marks for its innovative design and technical execution.
Project Scope and Objective
The task was to design a fully autonomous robot prototype capable of efficiently navigating a mock driving range and collecting as many golf balls as possible in the shortest amount of time. The robot used image detection to identify white balls, obstacles (such as walls), and special target objects, which were table tennis balls in this prototype. A critical part of the task was ensuring that the robot could handle dynamic, real-world challenges like varying light conditions and irregular object placement.
My Contributions
- System Architecture & Software Development: My primary role was in the software development and architecture design. Using OpenCV, I helped implemented real-time image detection to allow the robot to accurately locate balls, avoid obstacles, and navigate the field autonomously. The software was designed to convert image data into actionable navigation decisions, ensuring that the robot could adjust its path dynamically based on the positions of objects.
- Robot Control and Navigation: I helped developed the pathfinding logic for the robot, which calculated optimal routes for collecting balls and avoiding obstacles. By integrating ultrasonic sensors for proximity detection and creating a custom coordinate system, we were able to precisely measure distances and angles, allowing for fine-grained control of the robot’s movements. This required the development of advanced control algorithms to ensure accuracy, especially when the robot approached balls near the edges or corners of the field.
- Agile Project Management: Working as part of a team, we utilized Agile methodologies like Scrum to manage the project’s timeline and deliverables. I was involved in sprint planning, daily stand-ups, and task prioritization. Through continuous iterations and feedback loops, we were able to adapt to challenges, such as unexpected issues in sensor calibration or lighting conditions, and optimize the robot’s performance over time.
- Problem Solving & Iterative Design: Throughout the project, we faced several complex engineering challenges. One key issue was adjusting the robot’s image detection algorithms to function reliably under different lighting conditions. To solve this, we refine our detection techniques, applying color masking and contour analysis to ensure that the system could accurately identify objects even when the environment changed. Additionally, we iterated on the physical design of the robot’s ball-collection mechanism to handle edge cases, such as balls stuck in corners, enhancing its ability to gather all balls on the course.
- Precision Engineering & Hardware-Software Integration: My focus was also on the integration between hardware and software components. Using a combination of ultrasonic sensors and motor calibration, we ensured precise control over the robot's movements, especially for critical tasks like aligning with the balls and scoring them into a designated goal. The robot had to navigate the course autonomously, requiring continuous communication between the image detection system and the robot’s motor controllers, which I was responsible for developing.
- Testing & Validation: We performed extensive testing in both controlled and real-world environments to refine the robot’s performance. This included unit testing the individual software components, such as object detection and pathfinding algorithms, and full system integration tests where the robot was evaluated on its ability to collect balls and avoid obstacles. Our test framework ensured that the robot could function reliably even under unpredictable conditions.
Key Achievements
- Autonomous Navigation & Object Detection: The robot was able to autonomously detect and collect over 90% of the balls in our test environments, even in complex scenarios involving corner cases and varying lighting conditions.
- Real-Time Problem Solving: Our approach allowed the robot to dynamically re-plan its route in response to unexpected obstacles, utilizing a combination of image recognition and sensor data.
- System Robustness: By developing robust error-handling mechanisms, such as fallback strategies in case of sensor or image detection failures, the robot was able to continue operating even in suboptimal conditions.
Final Outcome and Reflection
The project was a significant success, with our robot performing effectively during competition day. Although we encountered unforeseen edge cases, such as difficulties in detecting specific objects under certain lighting conditions, we adapted quickly and developed workarounds to ensure the robot could still complete its objectives. Our final report received high praise for its technical depth, and we were awarded top marks for both our teamwork and our ability to deliver a well-rounded and innovative solution.
Through this project, I gained extensive hands-on experience in software development, system integration, and robotics, honing my ability to solve complex engineering problems and work efficiently within a team environment. This project is a testament to my capability to manage the entire product development cycle and deliver high-quality engineering solutions.