I’ve been testing 4.2.3 compass-less with GSF lately with quite promising results on my skid-steer track mower (using compass was really not reliable), issue was just that yaw drifted away after some time and didn’t get refreshed/updated while driving.
So I tried with 4.4.0-beta1 today as I saw some GSF yaw-related changes on GitHub, but I couldn’t get yaw to align at all. Usually this happened after moving a few meters (with the message “EKF3 IMU0/1 yaw aligned using GPS” on my GCS). RTK fix was available in both cases, using F9P and Pixhawk6X.
Is there a way to find why it’s not aligning, if it’s related to the new version or some error on my side? I used the exact same parameters from 4.2.3 (just did the update with Mission Planner and changed nothing else).
I also downloaded the log from a test drive with 4.4.0-beta1 where it’s not aligning, but I’m not sure what exactly to look at …
Not sure I can help much with changes to GSF, but you need to retune your nav controller when updating to anything newer than 4.2.3.
In my opinion, you just made a huge mistake and should revert immediately until the issues with 4.3+ are resolved.
This isn’t to say you should always avoid upgrading or that Rover 4.3+ is irreparably broken. But updating beyond 4.2.3 without FULL knowledge of what you’re getting into is very ill advised at present.
Yeah, retuning is probably a good advice. I also saw from the logs that XKY0.YC (GSF yaw estimate, looking good btw) in 4.4 is in degrees, in 4.2.3 it’s radians. Could be a hint that all (non-standard) config parameters should be re-checked after upgrading.
I’m fully aware that going beyond stable releases can have consequences, but the risk with this rather slow ground vehicle isn’t that high, so why not test and learn something new!
Re-checking established parameters should be unnecessary. The dev team takes care to migrate them properly.
What you still fail to recognize is the completely new navigation controller in 4.3+ that lacks any NAVL1 parameters (because it is not an L1 controller), and replaces the tuning params with PSC_* parameters for use with a position controller and S-Curve calculated turns.
And while the position controller has been working admirably on the airborne vehicle firmware variants for years now, it is brand new to Rover and has acknowledged issues with cross track error and waypoint overshoots.
Thanks for the beta testing report. I’ve added it to the issues list and we will look into this. If you have an onboard log file that would also be great although not completely necessary for some initial testing on our side.
While I agree with @Yuri_Rage that we’ve got some issues to work out regarding tuning the new navigation controller I think some people have got it working I very much appreciate any beta testing and feedback.
My apologies if I was a little harsh regarding the new nav controller. I do think it’s prudent to understand that it’s not a straightforward upgrade, and a simple flash from 4.2.3 to 4.3 or newer may well have some nav issues to sort.
Interesting that the GSF reset limit might come into play on a compass-less installation - probably not an intended consequence.
Thanks for your feedback in first place, I don’t care if harsh or not as long as it’s useful, and it is! It’s correct, I wasn’t aware of the new navigation controller until Yuri pointed it out, I didn’t even get to that point without yaw alignment and then downgraded again.
@rmackay9 sure I can provide logs from 4.4.0 where it wasn’t aligning and from 4.2.3 after downgrading where it was aligning yaw to GSF again. Shall I provide download links to you (just don’t want to post all my GPS data in public )?
Yes, those logs would be great. Feel free to PM them to me separately.
just a short update, today I tried 4.4.0-beta2 from scratch starting with default parameters and as few changes as possible for my rover. Still didn’t manage to get GSF yaw working, as soon as I set COMPASS_ENABLE = 0 or EK3_SRC1_YAW = 8 I also observed that the EKF Status flag pos_horiz_abs is off permanently:
Not sure if this is useful info though…
Thanks for the update, it’s still on my list to look into the GSF issue further although from a quick discussion on the dev team meeting we think it’s most likely to be an issue with the frame or the testing environment (e.g. GPS signal quality is not good enough)
The EKF status posted above means that the EKF is not getting a good position estimate so I think you’ll find the vehicle won’t be able to use Loiter, Guided or Auto modes. The vehicle is outdoors of course?
Thanks for the quick reply! Sure, it’s outdoors and I tried with and without RTK fix, so I think GPS should be fine and pretty accurate. The EKF status posted above is fine with COMPASS_ENABLED = 1, it turns bad when set to 0.
But while reading the code I found GPS_VEL_YAW_ALIGN_MIN_SPD with a value of 5 m/s, which I believe could be a reason why I don’t get GSF yaw? My off-road track mower only drives at 0.5-1 m/s.
…yes, it seems to be GPS_VEL_YAW_ALIGN_MIN_SPD. I created a custom firmware today based on 4.4.0-b2 with this parameter lowered to 0.5 m/s. Yaw showed up pretty precise after a little movement (while having RTK fix), definitely way better than compass would do on my frame with lots of metal and quite heavy electric motors. Does it make sense to add GPS_VEL_YAW_ALIGN_MIN_SPD to the configurable parameters in the future maybe?
I’m not sure if yaw was updated after the initial “EKF3 IMU0/1 yaw aligned using GPS” and “EKF3 IMU0/1 is using GPS” though, at least I didn’t see any mavlink messages suggesting so.
Navigation with S-curves and position controller looks promising by the way, first attemps after brief tuning resulted in pretty good tracking! Just not in all parts of the terrain, I’ll play around with that in the next time (the non-good parts might be related to slopes, slip etc. on our rather challenging terrain).
Thanks for that report. This is the PR that made the change:
I’ll let Paul know but I probably need to confirm we have an issue in any case.
Thank you @rmackay9! Let me know in case providing further logs or even testing fresh code makes sense and I’ll be happy to support the work.