Situation
My final year engineering capstone project was an autonomous plant watering robot for Lake Harbour offices, built alongside my teammates Benjamin Nero, Christine Vu, Louis Liu, and Luke Palandra. The project was highly interdisciplinary and tested our skills in mechanical, electrical, and software engineering. Lake Harbour’s office houses many potted plants which need to be watered regularly. The challenge thrown to us was to construct a plant watering robot that could travel to each of the plants in the office and water them all in one trip. The plants were placed at different elevations, requiring the robot to reach up and down to water certain plants. Lastly, the robot needed to complete its task autonomously, without human control or intervention.
Left: Office floor map. / Right: The plants to be watered. Some of them were on elevated shelves.
Methods Used
My role in the team was to take leadership of the overall robot design and ensure that each system was integrated coherently. I used project management practices such as setting milestones, Gantt charts for scheduling, and design phase reviews to make collective, informed decisions on our next steps. I talked to each subsystem lead to understand their requirements, and when conflicts arose I would bring people together to resolve them.
A high-level conceptual design for the robot.
Left: Assembling our watering arm. / Right: The watering arm is done!
I was fascinated by the computer vision aspect of the project and also implemented software to allow the robot to detect plant pots and measure how high they are from the ground. I took the lead in developing an April Tags detection feature using ROS2 and Python for the robot platform, for which we used the iRobot Create 3. I calibrated a desktop webcamera to discover its optic parameters, and then used an apriltags library to detect visual fiducials using a Raspberry Pi 4. I wrote a ROS2 node using Python to take detections from the webcamera and calculate their corresponding tag’s position in space. Doing so allowed the robot to measure where the plant pots were and to move into position where it could water them.
Moving the tag back and forth from the robot’s vision camera (mounted on the laptop) told it how far away it was from a plant and to approach or back away from the plant.
Outcomes
We made a custom chassis for mounting the sensors to the robot, the watering arm, and a 4L tank. An electrical system was also built to power the pump and to move the watering arm with an Arduino MC board. Our robot could travel to all the plants in the office and water them using remote control, proving the functionality of our hardware systems.
Testing our robot inside of the offices. It is able to navigate without colliding with any walls or obstacles.
Running on a Raspberry Pi 4, our autonomy stack was able to generate a map of the entire office and use it to find its location using SLAM. Our robot could also detect April Tags to measure how tall it needed to raise its watering arm and what position it needed to reach to water it.
Thanks to the efforts of my team and I, our project won 2nd place for Best Overall Capstone Project in the end of year showcase!
Our team at the Capstone showcase. Thanks to our teamwork, we achieved great results!
Future work on the project should integrate the autonomy stack with our April Tags node to allow the robot to seek out plants and water them autonomously. A user interface should be developed to make the robot intuitive to use, and the robot’s battery should be stress tested to determine how many plants it can water before it needs to recharge.
Our project poster summarizes our robot’s capabilities: Capstone Showcase Poster (PDF)
For more information, please look at our final report: Team Bloomba Capstone Final Report
We also made a repository for our software: Bloomba GitHub