In this test, a crazyflie script was executed in ROS and modified to implement controllers, and output information such as time, pitch, roll, cmd_pitch, cmd_roll and other data from crazyflie.
Pitch control
Goal: To make crazyflie stable at 15 degrees of pitch.
Test with only PID control on its own firmware, it stabilizes at 15 degrees as expected finally:
Data from test (thrust = 41000, crazyflie-ch10, cmd_pitch = 15.0):
The data above show that the actual pitch oscillates around 15 degrees with its own PID control, and has an error of + 0~15 degree (actual pitch is at a range of 15 to 30 degrees) (for pitch_ki = 2.0, pitch_kp = 3.5, pitch_kd = 0) (test for 120 seconds).
When thrust is increased to 60000 (thrust = 60000, crazyflie-ch10, cmd_pitch = 15.0):
Actual pitch is very close to cmd_pitch in the first 17 seconds, which has only +1 degree of error. (this is more accurate than when thrust = 41000) However, after the first 17 seconds, the error increase rapidly as time increases. When in the 30th second, actual pitch reaches 74 degrees! (unstable at the end)
The guess of the reason is that yaw control is not good enough. Because when thrust was increased a lot, actual yaw changes much faster. Above pictures show that actual yaw changes from 144 to 108 degrees as the pitch error increases from 1 to 60 degrees. The fast change of yaw may contribute to a larger pitch error.
Test with proportional control on crazyflie ros node and PID control on firmware. It was unstable and behaviors crazily:




No comments:
Post a Comment