Rover-3.2.1 has been released as the official default firmware and can be downloaded through the Mission Planner and other Ground Stations.
As mentioned in the beta release announcement this includes only a single change (ReleaseNotes):
- Fix mode switch logic to allow Auto, Guided, RTL, SmartRTL, Steering, Acro using non-GPS navigation (i.e. wheel encoders, visual odometry)
So, for those who were trying non-GPS navigation (i.e. GPS disabled, using wheel encoders or visual odometry) but were seeing the dreaded, “Mode change Failed” message, this should help. You will find that to arm in these autonomous modes you’ll need to uncheck the ARMING_CHECK parameter’s GPS box… or you can arm in Manual or Hold mode and then switch into the autonomous modes and it should work.
Thanks to those who tested this beta release!
Is this solving the issue I had when changing to hold mode and my boat would drift off by wind until “Flight mode change failed; GPS and AHRS differ by …” appeared? After the “Flight mode change failed” popped up I was only able to drive manually. (using rover-3.2.0 boat). Thanks
No, i’m afraid not. So there are likely two issues here:
- HOLD mode doesn’t hold position, it simply turns off the motors. For boats we need to either change HOLD so it does try to hold position or we need to add a new mode that does this. Perhaps we’d call it Cruise, Simple, PosHold or Loiter. The issue is here on the issues list and I am sure we will add this into a future release. Maybe 3.3 although I can’t immediately make that promise.
- I remember hearing about the “GPS and AHRS differ” message and I’ve seen it once myself when trying to arm the vehicle but only when using wheel encoders. If you have a dataflash log of this happening that will help me get to the bottom of it… if not I’ll need to try and reproduce it…
Thanks for the report and using ArduPilot.
- I remember hearing about the “GPS and AHRS differ” message and I’ve seen
it once myself when trying to arm the vehicle but only when using wheel
encoders. If you have a dataflash log of this happening that will help
me get to the bottom of it… if not I’ll need to try and reproduce it…
Perhaps the EKF’s fly-forward flag was set?
Thanks for your quick answer.
The log can be downloaded from: https://www.dropbox.com/s/tiheps6l1498nfc/2018-01-27%2011-45-30.zip?dl=0
The issues starts at 49.7% were I put the boat on hold and it drifted off by wind. (before I was doing some tests with loiter: Actively loitering issue with rover 3.2)
After the “GPS and AHRS differ” massage we had to get out on a boat until I could recover the RC-link to drive home manually. In our application we will have only telemetry-link and no RC-link.
From my opinion one way could be like you said with hold position or would there also be a way to reset the “GPS and AHRS differ” with a command (initiate a calibration)?
I could easily do some more testing if it helps?
Thanks for all the amazing work
@peterbarker: which setting would EKF’s fly-forward flag be?
I regularly get the GPS and AHRS differ message. But it is mainly because of how I use the autopilot.
It tends to happen when I turn on the rover … then drive outside in manual mode onto the lawns.
I then switch to auto mode and get that error
During this time I go from inddors to outdoors GPS goes crazy which explain the error.
Is there a way to reset the AHRS solution (arm/disarm ?). currently the way I do it is to restart ardurover firmware on the navio2.
Thanks for the log, it was quite interesting to review it. Coming from Copters, I don’t ever see logs of this length and rarely of the distance this vehicle covers.
So the good news is this problem is avoided in Rover-3.2.1 because we no longer perform the GPS vs AHRS check as part of changing modes. This change was required to resolve the issues other users were having with non-GPS/indoor navigation.
So the underlying issue of the AHRS/GPS differing remains and we need to get to the bottom of that but it probably won’t cause as many problems. I think the worst you’ll see is the vehicle’s position is off from where you’ve told it to go. so in the case of this log, if you did an RTL, it would likely return home but miss it by up to 15m.
My guess is the problem only appears when the ARMING_REQUIRED parameter is set to 0… so it might be good to set that to “1” if that’s not too inconvenient until we get to the bottom of this.
Ah, re the fly-forward setting, it isn’t something the user can easily configure. The rover firmware sets this flag in the AHRS/EKF whenever it thinks the vehicle is moving forward. It’s possible we could never set this for boats (i.e. FRAME_CLASS = 2) but we should test this and at this point it’s a guess that this is the cause of the “AHRS and GPS differ” message.
Is the GPS vs AHRS check completely abandoned in 3.2.1?
Is there a way we can enable/disable it via a parameter flag?
I say this because in my application I would like the rover to not proceed with the mission if the two solutions differ.
For me, to be able to follow a precise path is crucial.
In Rover-3.2.1, the AHRS vs GPS difference is only checked on arming. In Rover-3.2.0 it’s also checked when switching flight modes.
So if that check is important for your application, you could just stick with Rover-3.2.0. There’s really no other difference between the two firmwares. Rover-3.2.0 should be available through the mission planner’s Install firmware screen’s “Pick previous firmware” option. It might only be available at the moment in the beta version of MP.
In the short to medium term we will try to get to the bottom of the difference between the ahrs and gps. The ahrs/ekf should reset itself to the gps position if the two are different for more than a few seconds. I’d like to get to the bottom of the problem rather than adding a parameter workaround.
@Matthias do you have a video or blog post about your boat? I’m working with an ASV too, it would be nice to share experiences.
This is my pool test:
I was having the same issue you mentioned and the problem with pivot turn in auto mode (skid steer).
Nex week we will try Hector Slam to map the river coast. This will be in manual mode