-
Notifications
You must be signed in to change notification settings - Fork 13.3k
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
Orbit approach transition improvements #18988
Conversation
a722f72
to
c5b8aa0
Compare
Thanks for cleaning up, looks good to me! |
Something is sadly broken in the reapproach 😞 I'll fix it and report back. |
c5b8aa0
to
8bf72bb
Compare
Took much longer to figure all the problems out but now it seems ok to me but my learning is that we can't take care of all smooth transitions individually there are too many errors to be made. I suggest we try to have a jerk trajectory generator running more or less all the time and adjust the parameters or skip it only for when it's necessary. Problems were:
The only remaining thing I could find is that the altitude given in an orbit command is not exactly reached because when close enough it switches back to stick altitude steering and to get to the exact commanded altitude smoothly is currently not possible without changing everything. This can be improved once we can easily give up the dependency on |
Tested in SITL, all working fine. As a further improvement, we could limit the radial speed on orbit radius change |
the parameters are anyways sanitized on every update so even if activate() sets unfeasible one's they get adjusted on the first update.
…s instead of current state
…ublishing I think they were forgotten and it leads to side effects: - The acceleration feed-forward does not get executed - The acceleration setpoint is NAN when initializing the altitude smoothing when arriving at the circle
This is done by inheriting from FlightTaskManualAltitudeSmoothVel again. The altitude change by command is taken care of by switching to the apporach when the altitude difference is big enough and switching back once the altitude is close enough. The altitude of the command is not perfectly reached but this can only be done smoothly when the Orbit has full control over the altitude smoothing. The independent altitude smoothing is not kept because it was lacking stick handling like altitude lock and smooth transitions when opening and closing the vertical position loop.
…and velocity changes instead of arbitrary fractions of the maximum radius and velocity.
8bf72bb
to
75445b4
Compare
Like discussed I just added this (after a rebase on master) in 75445b4
|
@MaEtUgR Are there any docs updates required for this in http://docs.px4.io/master/en/flight_modes/orbit.html#orbit-mc ? (and the other PRS in PX4 1.13 release notes? Specifically, I don't think we need to talk about improvements in the experience unless they have associated parameters that need to be changed, or if they change anything we say in the above doc. |
Describe problem solved by this pull request
![image-20220105-120441](https://user-images.githubusercontent.com/4668506/148806756-9f3d54e3-9018-44bd-b1a0-0bb2724ff4c8.png)
It's possible to have steps when entering and exiting the circle approach:
Describe your solution
Describe possible alternatives
We should further improve the interface for using the jerk trajectory library to make it easier to reuse.
Test data / coverage
So far only parts are tested. I still have to test the latest state of this which I'll do the day after tomorrow.