by heke » Wed Dec 13, 2006 9:17 am
by heke
Wed Dec 13, 2006 9:17 am
Flapping problem is not due to gain settings. Different gain setting fixes the problem.
The cause for the problem is that servo (or an arm) starts to resonate on a frequency which natural to the mechanics of the robot and it's arms. Mechanics means certain angle, certain payload on a servo or on arm, certain speed etc. Plastic (and also aluminium) parts are flexible and that helps an arm to start to resonate (plastic's natural frequency is lower than aluminiums). But plastic is durable and light, so it is not that bad material.
Servo motor has several gears inside. Gaps between the gears also causes the resonation. There is a small mechanical delay from the servo motor to the potentiometer which gives the feed-back of position.
This kind of phenomenom is natural to any servo or any robot.
To fix it (partially, of course), we have to use different gain settings on different movements and on different payloads. In H2H it is done by selection of one of the preset gain-settings by POS-command. Before the next pose POS-command should set new gain-setting for all or some of the servos. SP2 for soccer uses different gain-settings for different movements.
So what is a good gain-setting ? In case of KHR only way to find it out is trial and error
Other possibility would be to calculate the natural frequency in different conditions. But that needs a master degree, I think
My quess is that "real" robots like Asimo, HRP and industrial robots has a detection logic to detect resonation in real-time and then prevent it also in real-time. If an existing resonation is not stopped, it will destruct the robot sooner or later.
----------------------------
EDIT: Maybe widening the dead-band of the servo helps with flapping (but wide dead-band makes the servo more inaccurate -> not good).
Other possibility is to make more positions (poses): in the beginning of the movement servo (or an arm) moves slowly and then in the middle of the movement the speed is higher. When the arm is aproaching its destination, then speed should be reduced.
When we see robots like Asimo and co. doing their movements, their moves are always very neat and beautiful. One reason is that the programmer wants to prevent flapping and resonation: servo slows down before the destination. With KHR this needs more poses.
---------------------------------
EDIT2: Using a gyro can increase the sensitivity for flapping, but my quess is that it can also reduce it. Gyro can be turned on and off between the poses using SET-command in H2H. Also gyro mixing amplification (=gain) can be changed using SET-command. Again: trial and error and more programming and testing.
----------------------------------
EDIT3: This post has 15k views. I believe many roboteers have had flapping problem or are afraid of it. And many people have been wondering why it happens. If possible, this post should be sticky to avoid any more misunderstandings.
Flapping problem is not due to gain settings. Different gain setting fixes the problem.
The cause for the problem is that servo (or an arm) starts to resonate on a frequency which natural to the mechanics of the robot and it's arms. Mechanics means certain angle, certain payload on a servo or on arm, certain speed etc. Plastic (and also aluminium) parts are flexible and that helps an arm to start to resonate (plastic's natural frequency is lower than aluminiums). But plastic is durable and light, so it is not that bad material.
Servo motor has several gears inside. Gaps between the gears also causes the resonation. There is a small mechanical delay from the servo motor to the potentiometer which gives the feed-back of position.
This kind of phenomenom is natural to any servo or any robot.
To fix it (partially, of course), we have to use different gain settings on different movements and on different payloads. In H2H it is done by selection of one of the preset gain-settings by POS-command. Before the next pose POS-command should set new gain-setting for all or some of the servos. SP2 for soccer uses different gain-settings for different movements.
So what is a good gain-setting ? In case of KHR only way to find it out is trial and error
Other possibility would be to calculate the natural frequency in different conditions. But that needs a master degree, I think
My quess is that "real" robots like Asimo, HRP and industrial robots has a detection logic to detect resonation in real-time and then prevent it also in real-time. If an existing resonation is not stopped, it will destruct the robot sooner or later.
----------------------------
EDIT: Maybe widening the dead-band of the servo helps with flapping (but wide dead-band makes the servo more inaccurate -> not good).
Other possibility is to make more positions (poses): in the beginning of the movement servo (or an arm) moves slowly and then in the middle of the movement the speed is higher. When the arm is aproaching its destination, then speed should be reduced.
When we see robots like Asimo and co. doing their movements, their moves are always very neat and beautiful. One reason is that the programmer wants to prevent flapping and resonation: servo slows down before the destination. With KHR this needs more poses.
---------------------------------
EDIT2: Using a gyro can increase the sensitivity for flapping, but my quess is that it can also reduce it. Gyro can be turned on and off between the poses using SET-command in H2H. Also gyro mixing amplification (=gain) can be changed using SET-command. Again: trial and error and more programming and testing.
----------------------------------
EDIT3: This post has 15k views. I believe many roboteers have had flapping problem or are afraid of it. And many people have been wondering why it happens. If possible, this post should be sticky to avoid any more misunderstandings.