Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GPS and IMU: State estimation improvements #145

Open
wants to merge 20 commits into
base: master
Choose a base branch
from

Conversation

ShadedSelf
Copy link
Contributor

@ShadedSelf ShadedSelf commented Aug 15, 2023

State estimation now uses yaw, pitch and roll intead of just yaw.
Also:

Implements #59

Offsets are added to the physical antenna position.
The virtual height can be set to the ground level to compensate for tilt.

Implements #45

@ShadedSelf ShadedSelf changed the title GPS antenna offset GPS and IMU: State estimation improvements Sep 3, 2023
@disaster123
Copy link

this branch works really great for me and driving without gps is now pretty accurate. I still have one big problem. If the mower is near the house it sometimes get GPS jumps while still beeing in fixed mode... which results in jumps on the map while the old position or float mode is far more accurate.

@greymfm
Copy link
Member

greymfm commented Sep 16, 2023

Nice. You can make the GPS fix solution more robust against errors (jumps etc.) by increasing the minimum GPS signal strength. Typically, near houses the GPS signal is also reflected from the house, and that results in a weaker but incorrect (because longer) signal in the GPS receiver and finally in an invalid position (jump). By increasing the minimum signal strength, you can filter out those reflection signals. The result will be that you get a float solution in difficult areas (near house etc.) instead of a fix solution.

#define CPG_CONFIG_FILTER_NCNOTHRS 0 // C/N0 Threshold #SVs: 10 (robust), 6 (less robust)

The parameters (C/N0 Threshold etc.) are described here in detail:
https://wiki.ardumower.de/index.php?title=Ardumower_Sunray#RTK_float-to-fix_recovery_and_false-fix_issues

@disaster123
Copy link

alfred/config.h:#define CPG_CONFIG_FILTER_NCNOTHRS 0   // C/N0 Threshold #SVs: 10 (robust), 6 (less robust)
sunray/config_example.h:#define CPG_CONFIG_FILTER_NCNOTHRS 10   // C/N0 Threshold #SVs: 10 (robust), 6 (less robust)

10 seems to be the default except for alfred? Any reason? same for CPG_CONFIG_FILTER_CNOTHRS.

@ShadedSelf
Copy link
Contributor Author

ShadedSelf commented Sep 20, 2023

I have noticed something similar, I have a theory that this happens now because it actually goes into invalid for a split second, then gets a false fix, this would have stoped the mower before and then have time to get a good fix while spinning up the motor.

Ive made some changes, added a variable into the config file to control how much time to wait after invalid to trust fix, maybe 2-3 second would be enough.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants