Last month I shared with you our 'spherical drone' concept and promised to come back with more technical content. Well, I have just published a blog post explaining how we enable in place hovering and how the drone reacts to external disturbances. I'm sure this is 'control 101' for some of you, but hopefully others will find this interesting and will learn something new. I'll summarize the key points and graph below.
The first step to recover from a collision like the one in the video, is to be aware of the collision :-) This is known as 'attitude estimation' and done by fusing a lot of sensor data together. In Fleye, we are using 3D IMU (accelero, gyro, magneto) together with a ultrasound and an optical flow tracking. They are all fused using various kind of filters to maximize the estimation quality and robustness.
As an example, here is a diagram showing the (X,Y) position estimated by the drone during our complete push and bump sequence (watch here). You can see that during the stable in-place hovering, the drone is capable of staying within a 20cm x 20cm area and that it tracks its deviation nicely when being pushed and bumped into.
Based on the attitude estimation, we can then detects rapid change in the drone orientation and perform the actual control. We are using three loops in our controller: a first rapid loop is used just to control rotational speed, and thus the overall stability. A second, slower, loop is used to control the position. Finally a third loop is used for navigation and trajectory planning. The following figure answer the question 'what happened when the drone got bumped into?': it shows how the sudden change in pitch (blue line) triggered the actuation of one control vane (red) to bring the drone back to stable hovering.
I hope you find this kind of content interesting, please don't hesitate if you have questions and share your ideas of technical topics you would like us to discuss !