Agricultural Rover project

I agree that moving a sprayer with long booms around to get the perimeter waypoints would be a little cumbersome, but it only has to be done once. You can keep those points in a file for use in the future.

I have also thought about building a handheld unit running Ardupilot that I can take around and store these waypoints. That way I don’t have to take the real vehicle. I would have to allow for the boom length in where I capture the waypoints, but I think it could work. It would just take an autopilot module such as a Pixhawk with an RTK GPS in rover mode, and a computer, I think.

If you’re near buildings or trees, you may consider a L1/L2 GPS unit. They’re more expensive, but they’re more accurate when GPS signals start bouncing around. L1-only units like the Here+ and Emlid Reach M+ will only get you so far.

Hi Nathan, thanks for your post.

At the moment I’m using a low cost ublox sensor M8T, with RTKlib application… I have to say that, It works pretty well in fields were you have open sky condition (ant this is true for the most of casea on lands). Once you get a fix , It remain stable for ours. Off course I’ll consider a double frequency GPS for the future just because It should get a fix quickly than my single frequency M8T.

If somebody is interested to low cost L1/L2 receiver:


Regarding the precise boundary definition, I have to say it is a mandatory prerequisite for me so I’ll deep analyze the possibility to use another vehicle for quick and precise mapping of the field… I’ll let you know about my progress.
Coming back to our Rover, I don’t understand why we should need an hydraulic sistem… I mean, if we have two Electric motors each one with a proper encoder, and each one driving a track, it should be enough for driving the Rover straigh on the lane. How is your badboy actuated?

Nathan (@Naterater), Thanks for mentioning the L1/L2 systems. I really didn’t know how much they would help me because at the moment, like Domenico, the single frequency RTK has worked well for me as I am very much in the open. I have my eyes on the ZED-F9P that Domenico mentioned, though, for the future. I am currently using the Ublox M8P.

My concern is that the electric motors (and of course the supporting electrical system) would have to be pretty big. I have not tried to figure out how much horsepower (or kW) would be required for a sprayer with perhaps 100 gallons of water (378 kilograms). I would think we want it to move at least at 3 mph (~5 kph). Have you determined what size motor would be required?

The Bad Boy mower has hydraulic motors. The particular one I converted has a combination pump and motor at each wheel. The larger units have separate pumps and motors. To actuate it, I am using a linear actuator that attaches down inside the engine compartment to the levers that an operator would normally move by hand. I posted a picture here: Skid Steer Mower Overshooting pivot turns. You might enjoy reading through that long thread but be aware that since most of that was written, there have been improvements to the software so some of the issues mentioned there have been resolved.

1 Like

A low pressure pump (up to 10 bar) with a flow rate of 80 liters per minute (similar to my convencional sprayer) Is operated with 1.2-1.3 kW. If we consider 1kw per track, that will be enough to power a 0.6 tons vehicle at a working Speed of 10km/your, a 4.5 kW Electric generator should be ok assurding a good power reserve.

It’s still a rough estimation but it gives an idea of our possibilities.

By the way, I would like to experiment with a scaled down vehicle in order to test the ardupilot compatibility of my project and to allow me to learn something more on it.

Do you know where I can start from to build a small tracked Rover (let say a 60 x 60 cm big)?
I mean, which motor, controller, radio ecc. Do INeed?

1 Like

Thanks for those calculations of power required. I had not tried (and didn’t know where to get the info to calculate that.) For my FIRST (because I know I will want to improve!) sprayer, I am considering using a Bad Boy mower. I figure if I remove the mowing deck and the seat and the operator, that the weight of the liquid and other equipment will not be way more than it was designed to handle and if the engineers were conservative, it might work. I am thinking I will use a small boom on that one. Yes, it will take longer to spray but I’ll be sitting in the air conditioning while it does it!

I have seen several electric rovers of the size you are talking about on this forum but right now I can’t put my eyes on them. I know that some people have experimented with an electric wheel chair. If you could find a used one of those, you would have a good start.

This person has several videos on his automation of an electric wheel chair:

And this person has some cool videos of his rover but it is standard Ackerman steering, not skid-steer:

One more: They are a little old, but you might glean something from them.

I do not know much about the speed controllers for the motors, either. Sorry! Perhaps someone is following and can comment. I have seen posts on the forum about them. I just haven’t been in tune to that! (Brain overload!)

For my remote control radio, I have used the RadioLink T8FB ( since the beginning. The range is about 1500 feet or so. I see a lot of people using Taranis brand remote controls. I believe they are a good bit more expensive but have better range and features. I am experimenting now with a new remote from China, the Skydroid M12L. It has much better range and features but also costs more. But for initial work, the $50 T8FB kit is hard to beat I think. For telemetry, I use a 3DR 433 MHz kit (

ALL the parts I started with, including links to where I bought them, are in the comments of this video: BUT, beware that I have changed several things related to the RTK communication between the GPS base and rover. Otherwise, the parts there are what I am currently using. I need to create an updated video!

1 Like

Hello everibody,

Thanks to the community and in particular to kenny for his support, I’m going to begin the construction of my Rover. It will be just a bit more of a Toy but I need it to experiment the system before to scale up it to the final real dimension. Again my goal is to build an autonomous sprayer able to spray hectars of lands.
Even if the project is almost there in my mind,there’s still a problem I have.
Kenny explained me how the Rover follows a route using waypoint setted in Mission planer. At the beginning I thought it is a good strategy but today I Have to come back on my steps.
The tractor autosteering system I built a year ago use a different strategy and in my opinion it’s the best for this kind of application where a very good pass to pass accuracy is mandatory.
It use a program called Cerea autosteer and when you start, you need to define 2 points, A and B taken at the beginning and at the end of the first path line. They define the heading of all the parallel paths. The programm shows on the screen the path line nearest to the rover GPS position and drive it closest to the line continuously.
This is a video tutorial of cerea autosteer, it’s only in deutch, unfortunatly

As you can see the result is perfect.

The most important thing is that the program drives the rover through the nearest point of the teorical path and it do it indipendently from the waypoint at the end of the line. It’s like a mission planer mission made with infinite numer of waypoints or a huge number at least that are the points of the line to be followed.
Do you understand the difference? The pass to pass accuracy of Mission planer depends by the starting point of the rover. If the rover Path starts with a meter error from the teoretical starting position of the Path line, it will reduce to zero this error only at the ending waypoint. The problem is that we will have a coverage gap since the last two path lines will not be parallel.

I hope somebody understand my explanation written with my orribile english… in case I’ll try to do better…

At the end,my question is: is it possibile to adopt or develop a similar path following strategy such as Cerea in ardupilot rover?

I followed Cerea at begining in Agroterra forum :slight_smile: , if you draw poligons in same direction than you want to go why you say is different? The only difference is that you have to set home point and them draw the survey instead to set point B. You can set lines orientation too if you need

If I well understood, with Mission planer, you have per each line just two waypoints, one is the starting point and the other the arrival… What happen if in the middle of the Path, the rover turn right due to gps signal loss and goes fair from the path line? When the signal come back, the rover will correct the heading pointing to the arrival point, but the new headings will be not parallel to the previous path, right?
Cerea corrects the headings so the Rover is driven not to the ending point but to the closest one on the previous path after few foots the rover is again on the right parallel.

If you are following a survey I understand that does as cerea, return to the path line, figure if you are mapping and not follow the path, the map is impossible to do.
Im curious why you prefer rover than Cerea, I didn,t follow Cerea with autosteer anymore.

Domenico, Ardurover DOES navigate by trying to keep the rover on the line between the previous and next waypoints. It does not simply aim toward the next waypoint. There is the concept of Cross Track error. There is a parameter NAVL1_XTRACK_I that is the gain that is applied to the cross track error to ensure it converges to 0. Smaller values converge slower. Larger values converge faster but can cause oscillation. has a section entitled “L1 Controller Background and Description”. Within that section there is a link to this page which has a description of the algorithm including some diagrams.

I am not familiar with Cerea, but it may be better suited for what we want to do. AgOpenGPS ( is also a possibility. BUT, I think that the method of navigation to follow the line to the next waypoint is the same. That is my understanding, anyway. I think I can find a screenshot of my machine navigation in Mission Planner that will demonstrate this.

Here is a screen shot of a path I was following while tuning my steering, throttle and navigation. Notice how I did not have the turns working well, BUT that after each turn, the rover moved back to the line, NOT directly to the next waypoint.

I should be able to work with the parameters, especially the NAVL1_XTRACK_I to cause it to converge quicker onto the line.

1 Like

Ok kenny, you are right, having a look to your picture, it’s clear that the rover try to stay on the line in any point of the path. I’ll have a look to the algoritm, thanks for the link, I would never have found it by myself!.

Cerea is from my point of view the best autosteering porogram, it’s even better than AgOpenGPS, since as opposed to Cerea, this needs an heading sensor to drive the tractor on the line. Cerea has a very powerfull and effective algoritm that drive the tractor on the line with only the GPS data.

The only problem is that for my goals it should be modified, it’s not thinked for aoutonomous vehicle and you cannot “plan” a mission or having the rover going back to home when necessary.
Since Cerea is not an opensource program, it’s proprietary one, nothing can be done.
I’m quite disappoined of it since it was developed also with the help of a community :frowning:!

1 Like

Yes, at begining was open, every one test and discuss but them become close and paid. Thanks for your experienced opinion.
I hope its only uses gps by what you comment about isnt designed for completly autonomous vehicle were you need more sensors.

1 Like

I do not really know the code of Ardurover, and so, the github program linked above may not be what is running in Ardurover, but the link did come from Ardupilot docs. And my experience has been that the rover does try to get back to the line.

I will add that tuning is very hard. You have to tune: speed, steering, pivot turns, and overall navigation systems. There are interdependencies. The control loops are not simple PID loops. Some of them have a feed forward term. There are additional terms, etc.

I may be wrong but I think that the control system could be simplified for a Rover. The complexity may be necessary for a flying vehicle. BUT, keeping as much of the code as common as possible between the different versions is an overarching goal, I am sure. So, no complaints from me! Hats off to all those who have built this great system!

Lowering your L1 period might also get you back on the line faster.

1 Like

I also found this wiki page by @rmackay9 that is an overview of the L1 navigation:

As a side note, Leonard has a design for a new navigation controller for Rover. I think it will be better in many ways but in particular it will calculate both the desired speed and turn rate (the current L1 controller only calculates the turn rate). It will also build up a path so that corners are handled better. We are just getting started so it will probably be a couple of months before it’s ready for beta testing. We will push out Rover-3.5 without this new navigation controller.