Has anyone managed to get proper motor redundancy on hexa with PID tuning?
According to my tests, it seems that attitude control loop is just not strong enough(not enough authority) to correct for the missing motor. I have tested this by removing the prop from one of the motors and trying to lift of while holding the copter in hand. This results in copter leaning around 30deg in the direction of the missing motor.
Now, to make things worse, it seems that the yaw controller overpowers the attitude controller, and if you offset the yaw to the wrong direction, you will get a flip, since the yaw controller adds more power to the opposing motors in an effort to correct for the yaw, and the allready strugling attitude controller wont be able to correct for the setpoint error. Ofcourse, if you rotate the quad to the other way, the quad will level itself.
As for the PID tuning, I have tested raising the attitude controllers Imax (setpoint error, not the rate error) term up to 50, which seems to be the maxinum value, but even this does not seem to be enough to correct for constant offset thats left with one motor missing.
I have also tested lovering the gains on Yaw controller which results on beter stability while disturbing the yaw since the copter is basically then concentrating on keeping itself level, and not keeping the heading, but the problem with this aproach is ofcourse that there is no actual control on the yaw direction.
Does anyone have any different results from these? Any ideas on how to solve these problems? Theoretically it should not be impossible to control a hexa with one motor down (on some cases, its actually ok to lose 2 engines). Simplest solution that comes ty my mind could be to just let the I-term of the attitude error to ramp up until the attitude error gets corrected. This might also result on Yaw contoller functioning somewhat properly with one missing engine.
For reference, the tests were performed running:
-firmware version 2.7.1 (APM1)
-copter itself is custom built 3.6kg Hexa
-10x45 props
-rctimer 2836-9 (880kv) motors
-around 60cm from motor to motor
Replies
You couldn't set Imax above 50? I think it should be able to go up to 4500 I think. This would definitely be a factor in inability to control it.
You may have more luck using the Rate I term and setting the Attitude I to zero. This is the way I set up my quad and it adjusts for offset center of gravity very well. This is a good reference for doing a tune this way:
http://diydrones.com/profiles/blogs/arducopter-changing-from-pi-to-...
I have been reading through the code trying to work up to making a little contribution to the code myself and I did notice this problem. There is nothing in the code to ensure that the copter can correct it's self in pitch and roll when compared to throttle and yaw.
Ideally the Motors control code that combines the pitch, roll, yaw, and throttle would detect when any motor reaches maximum throttle and then begins reducing the yaw and then throttle input to ensure that the quad remains level even if it is rotating in yaw and descending.
It may mean that the quad is not easy to fly but it can be landed gently. Although it could also put the copter into SIMPLE mode if the yaw control was lost for more than 1 second to allow direction control during landing.
There is so much in the code it is hard to get my head around it all so I may be making it sound simpler than it is.
I flew my Octo for the first time yesterday. On two flights I had a prop explode. The Octo flew very poorly but did land. I lost almost all control but it stayed relatively level. I agree that this area needs more work. One note: if this had been my Quad, its life would have been over!!! Twice!!!
For reference, the tests were performed running:
- Firmware version 2.7.1 on APM2
- Custom built 3.6kg Octo
- 11x47 props
- RCTimer 30A ESC's with SimonK
- NTP Prop Drive 28-36 265W (750kv) motors (HobbyKing)
- 2 x 5000mAh LiPo's
- 33cm from motor to motor
- Turnigy 9x - er9x firmware - FrSKY DJT
(I like seeing this type of info on all posts... very helpfull. Thanks Joonas)