Just wondering, as version 4 gets more specialized for a particular type of farming, or groups of farming, would it be possible to post some of the other types of farming or etc. that you have currently hacked version 3 or earlier to do. We spray hay fields with ours, so we added job log, acres per tank, and other features that we need. I’m not suggesting that these be implemented in the master AOG. Actually, I’m stating just the opposite. How have you hacked it? Is there a need for a hacked area here where the community can answer and discuss without the need of tying Brian and the others up. They have enough to do than answer everyone’s questions about their specific hack or build. If someone wants to build their own board or reprogram the arduino to do other things, ask questions here, or at a specific place. Just wondering.


I haven’t dabbled with it myself yet, but I have been reading a lot on robot lawn mowers. I am curious to see if AOG could be modified to suit that niche better, after all most of us have our own RTK base station which makes things pretty accurate. Most robot lawn mowers don’t make it far due to accuracy let downs and mainly become glorified rombas that wander around aimlessly. Just a thought that would be neat to extrapolate on.

1 Like

I want to do something involving object detection from videos. Ideally the code would be refactored to be more modular and e.g. support plugins. KentStuff’s sprayer stuff could be a plugin if the architecture was flexible enough. Another option is a ‘libAgOpenGPS’.

There were a few other ideas/directions on the Linux thread. For small lawn mowers etc the WinForms c# base isn’t that suitable.

Ultimately agopengps could be more than a gps navigation thing and is already expanding in other directions.

1 Like

I’m busy working on adding machine control to OpenGrade right now. Received my arduino and relay board earlier this week. I kinda feel like a guy taking crayons to the Mona Lisa with my hacky programming skills but I’m slowly making progress with making lights blink. Does that count?


Absolutely, this is what I was suggesting. Some of us are at the bottom of the learning curve and are still interested in the basics. We have ideas, even needs that we could bounce off each other.

Ahhh, the automatic mower, the dream of every person that has ever cut any large areas of grass weekly. Sitting on the porch drinking sweet tea and watching it go. Or call it from the office and the grass is cut when you get home. Or, the neighbors flower bed and a serious pile up on interstate where it went a muck.

Edit: Also, working with AOG has help me understand a bit of programing. The last I programed was fortran. Currently I had need of some engineering software. Brian once said that you either pay the big boys the big dollars or spend a couple of years building your own. I choose the latter. I used Brian’s ABDRAW form as a reference. I knew how it worked so I was able to “copy” the steps. Thanks again Brian.

This is a screen shot of the ABC simple that we modified. This screen shows the side steer controls. While the sprayer does not have side steer controls, it could. Also, note the wide AB line. The fusion 5 tablet that this runs on will not allow a pixel with of greater than 2. That was just not enough to see in the field. Again just hacking Brian’s great work.



So should i rip off a version when version 4 egts done that is just the very basics?

My hack is going to be a follow me, where i’m sending my gps position to the tractor, and it hunts me down.

1 Like

Someone will hack version 4 as it is presented. There’s really no need to strip it down. You just might strip out something someone needs. Let the hacker remove what is not needed.

Brian T, hacking his own software, now that’s funny. But seriously, there is no reason why someone could not send a set of coordinates to the tractor and it drive that. I got pretty far on the draw recorded path. It simply recorded the selected points, chopped it into little pieces, omitted the corners, re chop, repeat. This could be sent to the tractor, I’m sure. I don’t know how yet…

1 Like

AOG already has recorded path :slight_smile: The little robot dude in the upper left corner

Yes, that is what I used to run it. The point and click just added to the recorded path with a set speed and tool on or off.

Once the basic code is there, its pretty easy to hack and make personal changes on the gui or whatever. A great topic

1 Like

I’ve almost got the mower (enhanced) built. Hope to upload some vids to YouTube soon and show you the fruits of my labours.

I have opted for a purely electric vehicle because I want it to be truly autonomous and combustion engines are just too powerful for small vehicles (I reckon). Safety features are also more of a concern; it’s easier to control stop and start with an electric vehicle.

Do correct me if I’m wrong with any of that, but it works for me.

Built the basic prototype with an old folk’s mobility buggy. With the help of this community, I got this working pretty well - following a reasonably straight AB Line and I-u-turning.

Have scaled up to an off-road buggy with a 24V, 1500w motor. Built some custom brackets and mounted a windscreen wiper motor to drive the steering. That’s all working fine.

Bought in a 60amp dual channel motor driver board to drive the main motor so that the whole thing can be autonomous (with the old scooter I would set the speed on it to 2MPH and let it run, having to chase it and physically turn it off before it ran off the field).

Now this is where I’m having to move away from AOG a little as I need the vehicle to sense when it is about to breach a geofence and then to instantly kill the motor. I don’t know enough C to hack this feature into AOG, so am having to go with an independent R-Pi (sorry guys!) circuit programmed with its own geofence.

Next will be to add object avoidance.

Add a tool and this would constitute a working fire-and-forget lawn mower capable of cutting one’s lawn to sub CM accuracy. You could even have two settings for the cutter height, a high cut and a low one and thereby obtain stripes if you were that way inclined.

I’ve got a lot more to do on this vehicle and many of the features will be separate from AOG, but AOG is the real brains behind it all.


Sounds like a true Hack. Might want to look a bit deeper in the code. Geofence is already built in AOG.

Yeah, I would love to control the whole thing from AOG and did look into the simulator speed slider to see if I could work out how to get that working with the main drive motor, but alas this is beyond me right now.

Also I can envisage problems when employing two circuits each with their own geofence, both on the same vehicle. This might take some fine tuning, but I’m going to try it.

As I say, I’m still a way off completing the vehicle as I’m going to be adding some fairly complex tools and circuits to it, but the hardest part of the project was (for me), guidance and autosteer. Now that you guys have provided that, I am going to run with the idea and aim to develop some interesting little robots.

Will post my results here, there may be some parts that might prove useful to you guys; smaller vehicles performing specific tasks around the farm. I’m already looking at many tasks the local farmers are performing right now (I live in a very rural village surrounded by farms and get on well with the guys) and thinking, “Slap a robotic arm on a linear actuator strapped to a tracked vehicle and I could build a robot to do that!”

Interesting times.

The speed slider is strictly for the simulator. But there is a speed setting in the record feature. You could set this in the record vector list. I used it when I was drawing the follow me line. I set it to a desired speed. Then when pressed play it drove that speed. AOG already has a tool stop feature when outside of the geofence. It could be tied to a relay to stop the motor if AOG is not controlling the tool. Or simply duplicate the feature will a kill switch. That was in there at one time if I remember correctly.

Errr, yeah… that’s an excellent point that I have completely overlooked!

Looking into it now. Thanks man :slight_smile:

The out of bounds is in the uturn byte

1 Like

Been seedy working on the engineering software build that I started with Brian’s ABdraw form. I needed a simple x,y coordinate of the mouse based on the size of the structure. X was pretty easy once I got the aspect ratio stuff figured out. But Y was always off. Finally found it. There was a GL.Viewport comand in refresh and resize that has a -10 in there. Once I set that to 0, good to go. So then it was to measure the distance to the members. I knew AOG measures distance to the line all the time. I stole it. Added it and found that all members in the same line gives the same distance. Should have thought through that a bit more. Makes a world of since now. (After three days thinking that it wasn’t working. ) Started over and just measured to closest center. It is starting to work a bit smoother. My problem is that I keep thinking of something else to add. Just rambling and sharing the ups and downs of hacking.


Excellent, I want to do the same, but I need to learn C++

Better start with C#. Best way to learn is to make mistakes and try to figure out why it broke. Good luck.

So, quickbooks made me mad. I started writing my own very simple double entry journal. The account is a list of strings (asset:bank:checking ) or similar. I set two different list to the same values, accountTier and accountName. I perform a removeAt(0) on the accountName, and first values are removed from both list. So I just used a simple List named Sam and set Sam=accountTier. Ran it again, and all list in the Account class is missing the first item. I typed it accountName.RemoveAt (0). Any ideas why it would change list that are not referenced???

Edit: I didn’t find it. Opened on another computer same thing. So just built a for loop that builds a new list starting at int i = 1 and set the list number to [0]. Works now.