Comments (7)
It is the jump in position that is the problem. One option is to apply an offset to the GPS when you switch so that it matches the previous active unit (if available) or the EKF position at the time of the measurement (need to allow for GPS delay). That position offset could then be decay radially to zero at a slow rate rate, eg 0.1 m/s.
from px4-ecl.
@priseborough this should be easiest to handle outside of the ecl library, do you agree?
from px4-ecl.
Agree. My preference is to perform any sensor switchover outside the library. This would include other examples of dual sensors (Baro, airspeed, etc).
from px4-ecl.
@LorenzMeier I implemented this for us and it works well, plots from switching GPS module twice while airplane is stationary on the ground. Test ratio > 1 corresponds to GPS being rejected by the EKF.
I can push it upstream if it is interesting for you but I am not sure how to decide about when to switch module in a generic way, maybe we could add a field to vehicle_gps_position of which module is in use?
from px4-ecl.
UBlox receivers provide a number of quality metrics that can be used for selection logic (horizontal accuracy, speed accuracy, etc). Speed accuracy is usually an early indicator of data quality problems, whereas the horizontal and vertical position accuracy figure takes longer to degrade.
If your solution involves decaying a switchover position offset correction offset to zero, it may help to offset correct the reported velocity for rate of position offset decay.
from px4-ecl.
Thanks Paul. This is indeed very interesting and we should definitely look into it at some point, right now we base the switching logic only on regime (hover/cruise). However, what I meant was more focused on in which module to switch GPS and how to publish it. Maybe that is indeed a bigger question on how to handle redundant sensors in general such that every module doesn't have to decide on its own. If the best place to have the logic is not in the EKF then I can push the code right away and base the switching on a boolean coming from somewhere, if not then we could start looking into the best switching logic right away.
from px4-ecl.
I am closing this and have re-opening the issue in PX4/Firmware PX4/PX4-Autopilot#5759
from px4-ecl.
Related Issues (20)
- flow fusion of ekf2 HOT 4
- I have 4 quadcopter there altitude is not same for all 4 currently using barometer as primary source can anyone tell me how to fuse baro and rangefinder in px4 HOT 3
- Constant drift when EV frequency drops below a certain threshold HOT 3
- EKF2 model not quite suitable for rover? HOT 3
- ranger fusion about ekf HOT 1
- Better height estimation using range sensor help me ? HOT 1
- EKF mathematical equations HOT 3
- EKF estimates diverge from the Rangefinder and EV inputs in Z-axis HOT 9
- What's the principle of fusing the gps yaw? HOT 1
- can anyone please help me for better height estimation with baro and rangefinder for multiple vehicle as of now they are not at same height in offboard HOT 2
- ekf terrain process HOT 5
- EKFGSF ahrsAlignYaw() does not affect filter state HOT 2
- <deleted>
- Ekfgsf_yaw in rtk gps HOT 2
- External vision yaw being rejected for portions of the flight HOT 2
- vector2f type assigned with slice type
- Convert posecovariance from Nav_msgs::odom to px4 VehicleVisualOdometry.msg pose_covariance
- Reporting a vulnerability
- EKF not tracking external vision position sent through MAVROS HOT 2
- sympy generated code vs final code HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from px4-ecl.