by Fraser » Fri Jan 14, 2011 9:30 pm
by Fraser
Fri Jan 14, 2011 9:30 pm
After playing with stabilisition of a standing humanoid I have decided to write new commands into axons.
I managed to mix quit a bit of gyro pitch and roll data into humanoid joints (all joints). I would like to mix more into certain joints but as I increase gyro mix gain I start to get oscillations, a lot f this is caused by my rather soft control scheme over the serial link, which has to be soft to stop oscillations about position hold.
Despite these oscillations at higher gains, the humanoid can take quite a clip to the back of the head and remain standing.
I believe I will get MUCH better results if I implement what Limor suggested near the beginning of this thread (I always have to find out the hard way
)
The new commands will be able to achieve the same throughput, 100Hz over 250kbaud on Win7:
Velocity command:
All servos can have angular velocity set. Servo will rotate at this velocity until limit angle is reached (see below)
Position command:
Servos will hold the passed positions. The maximum velocity used to achieve this will be the last velocity command received (if none received will use default 0.5 max velocity)
Max limit angle command
Passed value will be stored in EEPROM. Servo will not pass this angle position, even when using existing PWM commands.
Min limit angle command
As above.
Note: Default min/max posn EEPROM values will be written on first time boot. These will be some conservative value within potentiometer endpoints.
Set servos punch
The zero point of the PWM will be adjusted for each servo.
Set servos control gain
This will adjust the linear ramp for position hold control (large values will be possible for spring effect)
Set position compliance
Sets the deadzone about the required position in position hoild
Should be finished in a few weeks.
After playing with stabilisition of a standing humanoid I have decided to write new commands into axons.
I managed to mix quit a bit of gyro pitch and roll data into humanoid joints (all joints). I would like to mix more into certain joints but as I increase gyro mix gain I start to get oscillations, a lot f this is caused by my rather soft control scheme over the serial link, which has to be soft to stop oscillations about position hold.
Despite these oscillations at higher gains, the humanoid can take quite a clip to the back of the head and remain standing.
I believe I will get MUCH better results if I implement what Limor suggested near the beginning of this thread (I always have to find out the hard way
)
The new commands will be able to achieve the same throughput, 100Hz over 250kbaud on Win7:
Velocity command:
All servos can have angular velocity set. Servo will rotate at this velocity until limit angle is reached (see below)
Position command:
Servos will hold the passed positions. The maximum velocity used to achieve this will be the last velocity command received (if none received will use default 0.5 max velocity)
Max limit angle command
Passed value will be stored in EEPROM. Servo will not pass this angle position, even when using existing PWM commands.
Min limit angle command
As above.
Note: Default min/max posn EEPROM values will be written on first time boot. These will be some conservative value within potentiometer endpoints.
Set servos punch
The zero point of the PWM will be adjusted for each servo.
Set servos control gain
This will adjust the linear ramp for position hold control (large values will be possible for spring effect)
Set position compliance
Sets the deadzone about the required position in position hoild
Should be finished in a few weeks.