Robot demo with three plants
How to use: Use the app to make the map of the field, let the robot go to each position, dig holes for plants at each stop, and let the robot cycle through them.
APP
I used python for the algorithm, and the pygame library for the UI. To upload info from the app to the robot, I used the subprocess library to connect to the port of the arduino. Additionally, the robot has arduino code that interprets the app info and runs the robot's motors and such.
Download app to try it for yourself (.exe)
Link to app (source code)


In this app, the user inputs the dimensions of their plot of land. Each circle represents the seed spacing of each plant. The algorithm uses a hexagonal circle-packing algorithm to fill the plot (minimizing potential for water runoff by maximizing root zone space). After, the user can pick three plants in the plant menu, which guides them to select ones that are biologically compatible on a farm.
Once selected, the app distributes them across the plot such that there is maximum nutrient exchange (maximizing biodiversity and reducing the need for pesticides and fertilizer). Finally, the user plugs in the robot to the computer and presses upload. Now, the robot knows each plant position and its type, allowing it to give specific amounts of water to different plants.
ROBOT

The maximum plant diameter for the robot is 190mm. Each tank carries 1.5L, so 3L total. I aimed to maximize the space in the center by making the planetary gears and wheels as thin as possible while retaining strength.
I had weak motors so I designed 3D printed gears. Planetary gears worked well because they stacked torque exponentially. I created 4 stages, where each stage connects to the next to multiply the torque by 5, resulting in a torque factor of 625.



The robot uses an arduino, 4 dc motors, a gyroscope, and 2 water pumps. It interprets the app's directions through this arduino C++ code: Arduino Code
The robot directions look like this: "a-900f1000a450b1500", where the letter says what kind of movement and the number after it says how much. For example, "a-900" means turn 90 degrees to the left.
CURRENT ISSUES I'M SOLVING
- The gyroscope is still really inaccurate even though I used filter algorithms, which is why I can only do three plants before the movement become inaccurate and my plants get run over. I'm using an MPU6050 which might be outdated.
- I want more width in the center for plants to pass through, but I can only do that if the planetary gears are thinner. If I buy stronger motors and attempt to flip the motor upwards, I can save space. I attempted to do this but there is too much friction with the bevel gears for the robot to move:

Let me know what you think!
Yasser
matthewhallberg
LOFI Robot
RobotCing