Gardening Robot

August 2024 - Present

TLDR:

  • Led a team of 5 in rapidly prototyping an autonomous robotic gardening system capable of planting, tending, and harvesting 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 other members’ servo driven arm joints

  • 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 we had a lot of computational work to do, such as developing path planning and grasp generation. Obviously, a working mechanized prototype would be needed to develop and test these requirements. 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 has 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.

Moving Forward:

We completely finished the prototype right at the end of the fall semester. Now that the computational aspect is able to be developed and tested on the first prototype, we will be moving forward and developing a higher-fidelity prototype using metal components and better motors.

Although our first prototype was shoddy, we learned a lot from the experience of making it so quickly. For example, we weren’t expecting wiring to be such a huge problem and we were unsatisfied with our clunky 3-axis arm design.

On our next prototype, we will be switching to a differential design for the arm and I will be ensuring that the wiring is compact, clean, and out of the way using drag chains. My main task, however, is to develop a higher-fidelity CNC mechanism for the robot.

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