Yesterday I got this result:
Thanks to the following actions:
1)The test with the ball on the bottom of the drone,did not convince me. the friction on the ball, the rotation limits due to the basement, were all components that are not present during the flight.
So I decided to switch to the more used and recognized solution with the quadcopter tied up with 2 wires.
2) I realized that something was wrong on the motors behaviour.When I run the beta1.py the motor sound was unstable and unconstant evenif I was not controlling it with PID ,just make them run in throttle speed.
This is not happening if I run the motor_test.py.
Finally I was able to reproduce the problem and I realized there is a bug (or better an unexpected behaviour) in the library RPIO. If I run this loop (that reproduces the main loop of the beta1) I got the unstable motor rotation:
My explanation is everytime calling the set_servo() function, it resets to zero the signal than set it to the desired value PW).
Instead of that funciont I introduced the lower level function
When I put it in the test loop I got a perfect, stable, constant sound for the motor rotation.
This 2 improvements gave me the opportunity to move a great step haed. Now the tuning can be faster and more consistent.
Above just a graph showing the current behavior.In blue the requested roll , in red the real roll when the quadcopter is using the pid controller. I still need to tune it to reduce the time to reach the target (5/6 seconds) and to avioid the oscillation ( +/- 3 degrees).But I’m really satisfy about the current situation.