APM:Rover Questions

Howdy all,

I am currently building an RC/Autonomous Mower and have some questions I could use some help with.

Currently I have the mower fabrication complete and as of yesterday I have the mower driving around in RC Mode!

(I have attached a few quick photos and a video of it driving around)

Now I have progressed to this stage I plan to start working on the automation.

My current plan in to use the APM:Rover platform (Pixhawk), RTK GPS and Sonar for obstacle avoidance. After doing a little research it appears the RTK GPS Shouldn't be an issue with the Pixhawk (I have access to RTK GPS and Base Station) so hope to start doing some testing on this in the coming weeks. Currently there appears to be a slight limitation in the accuracy of the waypoints that Mission Planner can send to the Pixhawk but I believe a fix is in the works for this (would love to know a rough ETA for this if anyone knew?)

My next hurdle I want to start thinking about is a method of varying the speed throughout the mission dependent on engine rpm of the mower. We all know when we mow the grass if its a little long the mower 'bogs down' and subsequently we need to push a little slower. I see this as a requirement for my project and wanted to know if anyone has considered anything similar to this in the past?

My train of thought is it could be more generalized as a kind of 'Rover_Load' input into the Pixhawk that would have an effect on the current mission speed. Input from my projects perspective could be as simple as engine RPM etc through a simple circuit.

I would appreciate any thoughts...3691175661?profile=originalIMG_0580.MOV

You need to be a member of diydrones to add comments!

Join diydrones

Email me when people reply –


  • Developer

    I want one!

    GPS accuracy is problematic of course.  The various RTK solutions (not sure which one you have access to) are trying to increase the accuracy but as for repeatable reliable solutions they are a bit like lawyers at the moment - the more you pay the better they are.  I'll be interested to see how you go in this area.

    WPs communicated over MP (or any mavlink based ground station) have around a 1m accuracy (varies depending where you are on the earth).  They are 32bit floating point numbers communicated using the mavlink protocol.  There is an open issue to change them to integers which should then increase the accuracy to 1cm.

    So because of these GPS accuracy/reliability issues people use other sensors like yourself with SONAR to monitor the environment for what are effectively error conditions - rock in front, wall to the left, I seem to have driving off a cliff etc.  What sort of external sensors are you thinking about?  Just one SONAR in front?  Bump detectors?

    As for your mower rpm you would need some sort of sensor monitoring the rpm (I2C?, SPI? etc) and feeding that to the pixhawk.  Once you figure out how your going to do this we will know how to implement it in the code.  Its going to be analogous to an airspeed sensor in APM:Plane - you want to adjust your vehicle throttle based on an external sensor input.  We would need to setup a few parameters (max, min thresholds etc) but it wouldn't be too difficult.

    Looking forward to watching your progress and contact me if you need help with APM code.

    Thanks, Grant.

    • Thanks Grant and others for the replies!

      You are spot on with the GPS concerns but to my advantage I have an industrial construction grade GNSS RTK GPS Solution I am going to be using (Trimble). I actually have access to this quality of equipment through my business, if I didn't as you point out the cost would be phenomenal.

      Thanks for clarifying my concerns in relation to the WP's as uploaded from MP. Is there a mechanism available to track progress on how the development team is progressing with this change? I presume looking at commits in GitHub?

      In relation to my Sensors I was thinking of using Dual Sonar up the front. Reading online this seems to be achievable with the MatBotix devices. I would appreciate any other advice in this area as such sensors are not a area I have been involved with before.

      Grant you have understood my request exactly in relation to the Mower RPM. As the mower is only small and not overly powerful I think I definitely need to have an input into the Pixhawk which subsequently has an effect on the driving speed.

      I was thinking along the lines of installing a hall effect sensor to measure RPM and subsequently the output from this measuring device would input into the Pixhawk which would then have an effect on driving speed. This would certainly need some customization of the APM Code which as you point out would include several new parameters to support such a thing.

  • Nice build. From my limited experience, a simple constant speed will be OK if the lawn is mowed on a regular schedule. If not, then I'd put a magnetic linear pot (or some other non friction measuring device) on the engine throttle/governor... as the mower encounters high grass the engine will demand more power. The magnetic pot will detect the throttle opening and tell the drive to slow down. I see a little PID here. 

    Another possible RPM measuring device is to wrap a detector wire around the spark plug wire.

    My next suggestion assumes 1) the mower shell is down close to the grass and 2) you have an electric clutch between the engine and blades. You could install IR sensors or mechanical bumpers around the mower so that anything real close to the mower disengages the blade. I think I'd avoid ultrasonics due to the engine noise. 

    When you get this going you'll need more outdoor chairs and refreshments for your neighbors to sit, watch and enjoy.

    Good luck


  • I'm thinking of not just sonar for trees, etc. but measuring how hard the ground is with sonar could keep you right on the edge of walkways, driveways. Similar to how a roomba vacuum senses its on a stairway. Wouldn't need GPS for that so it could make for a nice addition. Boy something about automated sharp knives running unsupervised spooks me a bit. You know there will be a failure in the system sometime leaving someone hurt or worse.

    Problem with sensors in this application is that they get covered in grime, grass, leaves, dirt, oil. Would have to take that into consideration.

    • Thanks for the reply mark.

      I don't intend on leaving it unsupervised, safety is of the greatest concern and priority to me as well. This is why I already have implemented manual estop control (stops drive motors, applying breaks and  kills mower engine) and am currently working on an Xbee solution for an independent equivalent of a dead man switch.

      In my line of work I am involved with much larger and more dangerous automated machines (in mixed environments) so I am confident in my ability to manage risk with a combination of process and technology (technology always being secondary).

      Would love to know if anyone has done any customized work with the APM:Rover platform in terms of additional inputs that subsequently have an effect on system output. Example/Use Case in my original post.

This reply was deleted.