Thanks @rmackay9 and @jimovonz!
Our vehicle is 200kg and 1.25 meters wide and traveling about 1 meter/sec. In most operations the rover is within 15 cm of where it should be (more on the xtrack error below). When mowing around trees I can reliably navigate 2 meter radius circles (using 12 waypoints in the circle) and they are thing of beauty. https://photos.app.goo.gl/euyVxw2wUV9F2Tsz9 I expect I could do even a 1.5 meter circle except the Mission Planner function to generate a WP circle only accepts an integer for the circle radius.
My mowing deck is 1.06 meters wide. Every cm of accuracy gains me 1% (i.e. 1cm/1.06meters) more productivity because I can reliably space the lengthwise tracks that much further apart. Also, of course, a wider deck will accomplish that, and a wider deck is planned for the next mower versions.
We too implemented motor controllers with inbuilt velocity control loops so that motor outputs from ardurover are interpreted as velocity requests; our motor controllers likewise do a good job of maintaining requested velocity. This was the single largest contributor to our current accuracy. We installed shaft encoders on each gearmotor. We do have slight slop in the sprocket-chain-sprocket connection between gearmotors and wheel axles which could contribute some loss of precision. (The next version of our mower uses hydraulic motors and encoders directly on the axles for much tighter control there).
We moved the primary GPS antenna to be directly between the two drive wheels for the reasons you mentioned. When pivoting it does not move more than about a cm. I’m intrigued by your comment about “accelerations reported”. We have not moved the accelerometers (i.e. the Pixhawk 4 itself) to be in the same central location - would you recommend that?
We are using pivot turns and getting good results.
(In case you’re wondering, Jim, as you and I have previously discussed this, I still don’t have the secondary GPS working and am still using the mag compass for heading). (Also, I set up an RTK base that is about 100-200 meters from my test fields, and observed a few cm of improvement over the prior base which was 21km distant; I read somewhere that the RTK error is about 1mm per km separation between rover and base).
Currently we are operating with WP_RADIUS of 0.2 meters.
Still, the largest xtrack I see is 0.3. (I assume the units are meters but have not seen that documented anywhere). When xtrack is that large, the autopilot always corrects. But even on long straights (30 meters or more) the autopilot doesn’t correct it all the way down to 0. Instead i often see it stabilize at .1 or .15 (or -0.1 or -0.15). Of course it jumps around a bit.
I am not familiar of how to calculate ATC_STR_RAT_FF and ATC_SPEED_FF. Do you mean following these steps? https://ardupilot.org/rover/docs/rover-tuning-steering-rate.html
Currently we are operating with ATC_STR_RAT_FF of 0.17, ATC_SPEED_FF of 0 (need to look into this!) and NAVL1_PERIOD of 7.5 (which is much longer than yours!). Looking at my other params is there anything that jumps out?
Jim, As soon as you’re ready for someone to test your code changes let me know; I would be happy to test them.