-
Notifications
You must be signed in to change notification settings - Fork 13.6k
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
WIP: Pozyx addition to precision landing #9029
Conversation
… an adruino pozyx: read all defined messages and check checksum, start from scratch if id is unknown
…yx feed data in landing_target_estimator: only initialize a new report when all data is there landing_target_estimator: added parameters to specify relative offset of sensor origin for landing target
Awesome! Does this require the same physical setup where you interface with an arduino running the Pozyx code? |
@dagar correct. The Arduino sketch simply uses the Pozyx library to do the configuration of the beacons and then send messages via serial to the FC. We've tested a setup with the 4 anchors paced in a 2x2 meter square. |
Cool! I'm very curious to see this in action. What kind of range and accuracy do you get from pozyx?
I thought about this when writing the landing target estimator. This would probably mean increasing the state-space of the estimator. The price for this would be paid by everybody, even those who don't use precision landing. (I'm assuming that the state space dimensions are statically defined). I figure'd I would have a hard time getting that into upstream, so I discounted that idea. |
@dpettenuzzo FYI |
@nicolaerosia fusion of range measurements to known locations in the main nav filter does not require additional states just a new observation model (which ArduPilot EKF3 that has shared math with PX4 ekf2 already has). Complications are:
I implemented solutions to 1) and 2) in ArduPilot and prototyped a solution to 3), but would revisit them if implementing support in PX4 knowing what I now do about the likely use cases. The amount of work required to implement and test all this is significant so it would be prudent to start using the Pozyx reported position as a simple cartesian position observation and gain more knowledge with the sensor error characteristics and operational limitations in the flight environment first. |
@priseborough Thanks for the insight. I see how when fusing it as known position measurements it can be done without additional states. I see two benefits of that approach:
How do you handle (2) in APM? |
The 3-state range beacon initialisation filter position estimate is used to set an offset between the GPS and range beacon, however the offset is only set once at commencement of range beacon fusion. It then switches to using range beacons as the primary reference (doesn't use both). when going back the other way, it resets the position states back to the GPS. This causes a jump in position, but position resets are reported to the position control loops which compensate for the change similarly to how we do it in PX4. |
Interesting. What does that mean for me if I care about the vehicle's global position, rather than only smooth behavior? E.g. if I fly a mission starting over the beacon and then fly out of it's range. There will be a position estimate jump which is compensated for by the position controller also shifting its position setpoint. How does this affect the remainder of the mission? Will that offset in the position controller be kept (and thus the vehicle flies with an offset to the mission waypoints) or will it somehow smoothly be reduced back to 0? |
I don't know how it works currently, but we thought that in missions you want to remove the offset over time (quickly). For 2 reasons: The offset shifts the mission, and when coming back to the beacon system after a while the offset might also be wrong due to the drift in your global positioning system. Keeping the offset makes sense for manual (posctl) flights though. |
@AndreasAntener Do you have any additional input or commits? It looks like this just needs a little more effort to get in. I've talked a bit to Paul about generic infrastructure sensors like markers and UWB and how we could start to build out an interface for the estimation pipeline in ECL. |
Would be nice if the solution can not only be used for precision landing but also for indoor/GPS independent waypoint navigation. |
@AndreasAntener I am in the process of testing your PR but I have faced some issues in setting up the system. I am now looking more into detail but maybe is just a missing piece in setting up the system. |
Additional WIP work done by @cmic0 is here: https://github.com/Auterion/Firmware/tree/pozyx_rebased THINGS DONE:
TODO:
|
@cmic0 what's the state here? |
@julianoes last time I've been working on this I just had to do some flight testing outside..unluckily february was not the best time for testing so went in stale. FYI @ItsTimmy |
This issue has been automatically marked as stale because it has not had recent activity. Thank you for your contributions. |
I assume it's still relevant. @AndreasAntener @cmic0 @ItsTimmy @thomasgubler |
This PR should probably be closed, because I rebased and am updating it in #12956. |
@ItsTimmy I see two different drivers here though. If you have not tested #12956 with a Pozyx system, you can't really say this should be closed. I would rather have a way of changing the PR. @AndreasAntener are you still over this? |
Yes, I agree. I ended up changing that PR (#12956 ) to not include this driver, so this PR should still be relevant after all. |
This issue has been automatically marked as stale because it has not had recent activity. Thank you for your contributions. |
Thanks for your earlier contribution. Unfortunately as the project has overall evolved quite a bit, this change doesn't apply any more. Closing stale pull requests like this one is part of us working aggressively to bring down the PR review time so that we will be able to merge or reject PRs in the future in a much more timely fashion. |
@ndepal Thanks for your push on precision landing! We are working on the same problem and have decided to use the UWB system Pozyx. This adds the initial driver for Pozyx. Thanks to the APM team for preparing that setup and the docs for it (see links below). I'm also using this PR to start the discussion on some open issues.
Discussion
TODOs (this PR)
I have tested the driver with some simple mission functionality on our branch but not upstream. The driver expects a serial message coming from an Arduino connected to the Pozyx tag.