Project idea - Computer vision weed sprayer

I have a project idea and would like some guidence as to its feasibility with Arduino.

I have a development robot basically a wheelchair motor attached to a rear motorbike wheel for drive and two fixed wheels at the front to create a stable platform. The robot has a camera looking down at a patch of grass. I need to take a picture of the grass and then break that picture down into a 3*3 array for example and then classify if that square has a weed in the grass or not. This will be done on a laptop or similar.

To tell how far the robot has moved forward there is an optical encoder in the drive system.

I need to move the robot over the real world space that relates to the picture and apply selective herbacide to the areas that the laptop has classified as having a weed present. The encoder can be used to relate forward position y-axis and three spray heads take care of the x-axis

Could I use Arduino to control the relays of the individual spray heads when they are above a weed? It would also need to control the drive motor and read the encoder position.

Thanks Gavin


the Arduino can control a 'driver' that powers the motor. the driver is a device that takes high power and feeds it to the motor. the Arduino does not have power outputs, only logic I/O. Common application for an Arduino.

the spray heads might be solenoids. they can be powered and controlled with relays. like a driver, the relay takes the high power but is controlled by a low power logic signals. Also a common application for an Arduino.

I do not understand how you drive in a straight line, but an encoder can be used to show rotation, with the diameter of the wheel being known, each angle of rotation would equal some distancea simple ceiling mounted IR beam/break should work.. the encoder is also well suited to be used with an Arduino.

the pictures, as you said, are to be done with a different device. a laptop or some such. the photo evaluation is beyond the abilities of the basic Arduinos currently used. the Raspbury Pi has a lot of development in that area.

it would seem the only need is to have the Arduino tell the cart to move based on the lap-top and then to control the solenoids, again, based on signals from the laptop.

seems like your project is workable as you laid it out.

Thanks Dave-in-nj,

This is going to be my first real programming project and I am maybe biting of more than I can chew but I find it is always good to start with something hard as the challenge can be a good motivator.

Im going to break it down into smaller steps and think Im going to try and get python on the pc sending data to the Arudino in the form of a array. I want python to send the pin state for each solenoid in the form of an array. It might be quite a long array as the machine now has 8 solenoid heads and 8 forward steps so 64 states.

When sending an array do you need to loop over the array to send each value to its corresponding address or can you send a whole array as a comma separated string?

Here is a video of my machine so far.

Hi, This may be of interest.

Tom... :)

Thanks Tom, yes there are lots of teams over the world trying to do this. My project is an open source version im trying to design the hardware so the whole project will cost less than £2000 and be buildable by anyone who wants to.