Gardening Robot

August 2024 - April 2025

TLDR:

  • Led a team of 5 in designing and manufacturing an autonomous gardening robot prototype to harvest corn within a 1x1m plot, selecting a 6 DOF design similar to a claw machine

  • Created a stepper motor driven rack-and-pinion mechanism for full X-Y-Z movement across the gantry, implemented into a fully mechanized prototype with a 3 DOF arm and claw

  • Programmed control script for 3 stepper motors and 4 servos via Arduino and Raspberry Pi, enabling development of path planning during the development of a higher-fidelity prototype

The goal for my senior capstone project is to make a robot that can automatically harvest garden plants in a greenhouse environment. This project is currently ongoing.

Research:

We began by researching current technologies in the area and by interviewing professors knowledgeable about robotics or horticulture. Through our research we found that there are existing robots that can plant seeds, water gardens, and even prune plants and weed-whack. However, there was no robot that was able to harvest fruits. We decided that, due to time constraints and the potential novelty of our work, to prioritize developing harvesting capabilities for plants such as sugarcane, squash, and corn.

We began brainstorming and settled on a design utilizing a CNC-like machine that would span an entire crop bed, almost like a claw machine. Attached to this would be a 3 DOF robotic arm with a gripping tool attached as an end-effector (Imagine like your arm - the robotic arm has a shoulder, elbow, and wrist, and hand). The robot would operate semi-automatically, using computer vision to detect where plants and fruits were and using path-generating algorithms to navigate the tool to the desired location.

First Prototype:

Our design’s autonomous nature meant that our computer science teammate would have a lot of work to do. Obviously, a working mechanized prototype would be needed to develop and test the path planning and object detection. I led the team to quickly develop a prototype that would work just well enough to develop the computational side of things, no matter how shoddy.

Additionally, I led the team to rapidly prototype 3 separate ideas for the robotic arm, allowing us to get a feel for different mechanisms for an unclear part of our design. These ideas included a differential mechanism and two variations of 3-axis arms. We decided to settle on a 3-axis arm for its simplicity.

I personally developed the linear joints on the robot, including the two horizontal degrees of freedom and the vertical degree of freedom. They all used rack & pinion mechanisms, due to their simplicity and ability to quickly 3D-print with few extra parts needed.

Our first prototype had a size of 25x25x25cm. The structure of the prototype was built with aluminum extrusions. The horizontal and vertical movement was controlled by NEMA 17 stepper motors via 3D-printed rack & pinion mechanisms. Attached to the bottom of the vertical bearing was the robotic arm, which was assembled using servos. A simple gripper attachment was used as an end-effector for the arm.

Actuation & Integration:

The team was having trouble getting the our stepper motors and servos running properly before a small prototype showcase in November. I have a lot of experience with microcontrollers (such as Arduinos), so I took the responsibility of getting them to work properly although the task wasn’t originally assigned to me.

I utilized a root-cause analysis to troubleshoot the issues, which included the motors not being fed enough current and faulty programming of the motors. I rewrote the code that controlled the motors on an Arduino, allowing the motors to run perfectly. However, the issue with the current forced us to only run one of the three stepper motors during the showcase, as we had to order a power supply which didn’t come in on time.

The Arduino receives commands from a Raspberry Pi, on which I made a simple program that controls the movement of the robot with keyboard buttons. Additionally, our computer science teammate wrote a program that makes the robot track a red box, which is the demonstration we used in the showcase.

Final Prototype:

At the start of the spring semester we began working on our second prototype, which would end up being our final prototype. This prototype would be 1x1x1 meter in size, higher-fidelity, and designed to actually be able to handle cutting an ear of corn and transporting it to a collection box.

I designed the structure of the gantry. Given the load requirements of not only the corn, but the weight of the cutter and ‘wrist’ assembly, it had to be made exclusively out of metal. Given the cost effectiveness, I chose to use exclusively aluminum extrusions as the structural materials. The joints were made up of aluminum plates with castors, which roll along in the extrusion’s groove, acting as a linear rail without needing to purchase the estimated $2,000 linear rails to cover each joint.

Although I believe that using a leadscrew would have been a better solution for the linear actuation (especially for the vertical joint), due to cost constraints I decided to use rack-and-pinion mechanism for each joint, similarly to the first prototype. I was able to find over 3 meters of identical toothed racks, which left only the gears and stepper motors to need purchasing.

Attached to the bottom of the vertical joint was a 3 DOF ‘wrist’ using a differential mechanism and a gripper/cutter end-effector, which allowed us more freedom to approach an ear of corn from different angles. On the side of the structure was a depth-sensing camera, which allowed for us to detect where the corn is within our workspace.

Reflection:

In the end, we were this close to getting it to autonomously harvest corn, but we ended up with just teleoperation of the robot. We cut it too close to the deadline and ended up not giving our computer science teammate enough time to fully flesh out his programming.

I think that given the time and money constraints, we did a pretty good job. We may have not reached the final goal, but any robotics project is difficult and even seeing it out through to being able to fully teleoperate the robot is impressive.

I think that my design of the structure could have been better. It ended up having a lot of vibration due to the thin legs and lack of smooth motion control (which we had to abandon due to the requirements of the path-planning algorithm). Looking back I would’ve changed the design to be more rigid, maybe by using a cheaper but bulkier material such as wood for the legs.

I learned a lot about project management during this project as well, such as keeping people productive and on task and differentiating different kinds of work and how they progress. For example, our teammate who was tasked with designing the gripper and cutter had to do a lot of R&D as there were basically no previous solutions to his problem, which ended up being

First prototype, quickly made to let the computational aspects to be developed as a higher fidelity prototype is designed

Full operation of the 1st prototype

The vertical joint, actuated by a stepper motor at the pinion

3-axis arm design, actuated by servos