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

Mellinger controller: Attitude control unstable beyond about 30 degrees roll/pitch #832

Open
whoenig opened this issue Aug 17, 2021 · 7 comments

Comments

@whoenig
Copy link
Contributor

whoenig commented Aug 17, 2021

the SE(3) controller from Mellinger/Li should be capable of trajectory tracking with around 60 degrees roll/pitch angle without problems. Our implementation only can get to around 30 degrees. This has been observed by @whoenig and @jpreiss in a trajectory tracking scenario and by @pPatrickK in USC-ACTLab/crazyswarm#71 in a position setpoint step scenario. This might be due to some implementation bug or because of the low thrust-to-weight ratio of Crazyflies.

Transferred from USC-ACTLab/crazyswarm#74.

@jonasdn
Copy link
Contributor

jonasdn commented Sep 3, 2021

What would be a good way forward for this issue?

How do we determine if this is a bug or if we have reached a limitation of thrust-to-weight ratio?

Any ideas?

@whoenig
Copy link
Contributor Author

whoenig commented Sep 6, 2021

A software verification might be possible with the Python bindings (#602) and simulation of a model with a higher t2w ratio. A hardware verification would require upgraded motors.

@whoenig
Copy link
Contributor Author

whoenig commented Sep 24, 2021

One problem I just found is the omega error: this should be both in body coordinates (equation right above (8) in the paper; Lee uses R^T R_d, see (8) in his paper). I am not sure if this can cause these kind of errors, but it can certainly explain odd behavior for yaw !=0 cases.

@jpreiss
Copy link
Contributor

jpreiss commented Sep 27, 2021

Did anyone ever do a comparison between the INDI controller and Mellinger for aggressive attitudes? If another controller performs significantly better, that would be evidence that this is a software bug.

@knmcguire
Copy link
Member

I've compared the PID and INDI controller, as the INDI controller should be able to withstand sudden distrurbances and windgusts, but not against Mellinger...

Is there a trajectory that forces the 30 deg roll/pitch that we can compare the both with?

@whoenig
Copy link
Contributor Author

whoenig commented Sep 27, 2021

Executing https://raw.githubusercontent.com/USC-ACTLab/crazyswarm/master/ros_ws/src/crazyswarm/scripts/figure8.csv at 0.6 timescale results in 34 deg max roll and 23 deg max pitch. I remember that this results usually in crashes with the mellinger controller.

@knmcguire
Copy link
Member

knmcguire commented Mar 7, 2022

This was very long over due.... but I finally got around to test this. I tested the trajectory on PID, Mellinger and INDI. Although the Crazyflie didn't crash, it did behave more aggressive and wobbly during the maneuver. With bad motors/propellers it probably crashed for sure.

So I'm not sure what is causing it for Mellinger, but perhaps it would be good in general to implement default mellinger gains are a little bit downtuned. Anybody that has those values anywhere?

Videos (might need to downloads to see it)

PID

20220307_140604-converted.mp4

Melinger

20220307_140728-converted.mp4

INDI

20220307_140728-converted.mp4

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

No branches or pull requests

4 participants