by DerekZahn » Sun Feb 25, 2007 9:12 pm
by DerekZahn
Sun Feb 25, 2007 9:12 pm
This ankle system is fairly complicated! To help me get a feel for control strategies, I decided to build a version of the simulation that I could control manually.
bigger:
http://happyrobots.com/bing3g3.jpg
Because it's sort of fun, I decided to let other people download it and try it (Windows only, sorry). Here's a zip file with the program inside:
http://happyrobots.com/anklegame.zip
The black number in the display is in milliseconds of the simulation.
After 100 milliseconds, an impulse is delivered to the model. The idea is to use the ankle servo to minimize the worst tilt that occurs, and bring it to stability as quickly as possible.
To control the servo, put the mouse cursor inside either the "Counterclockwise" or "Clockwise" boxes. Doing so sets a desired servo angle. The magnitude of the angle corresponds to the distance from the center line. You can see the joint angle with the red display. The units are tenths of a degree, and the joint angle is graphed.
The Blue and Green display/graph values are the tilt (in hundredths of a degree) and gyro reading (in tenths of a degree per second).
The model has a delay built in for the sensor readings in the graph (set to 15 milliseconds) to simulate the time delay for sensors, hardware low pass filtering, and delivering the sensor data to the code. However, that delay does not really factor into the interactive game because the 3D display is always accurate real-time.
A delay is built in to the servo control. Servo commands (desired servo positions) do not take effect for 20 milliseconds. This is to simulate the transmission delay of Bing's serial protocol and also the time in between pulses sent to the servos (which will average 10 ms).
The servo model is not as realistic as I'd like -- it has a fixed operating speed of 3 radians per second (0.3-ish seconds for 60 degrees), a large torque limit, and no acceleration delay. I'm not sure the physics is accurate enough for me to bother with a more sophisticated model anyway.
A lot of the important dynamics seem to revolve around border issues such as when the foot breaks contact with the ground, exactly how "bouncy" the foot is, and so on.
Press the SPACE bar to pause the simulation.
It's interesting to play around with, and it's giving me some insight into the issues involved in trying to use these sensors in a closed loop way to do things like maintain balance.
This ankle system is fairly complicated! To help me get a feel for control strategies, I decided to build a version of the simulation that I could control manually.
bigger:
http://happyrobots.com/bing3g3.jpg
Because it's sort of fun, I decided to let other people download it and try it (Windows only, sorry). Here's a zip file with the program inside:
http://happyrobots.com/anklegame.zip
The black number in the display is in milliseconds of the simulation.
After 100 milliseconds, an impulse is delivered to the model. The idea is to use the ankle servo to minimize the worst tilt that occurs, and bring it to stability as quickly as possible.
To control the servo, put the mouse cursor inside either the "Counterclockwise" or "Clockwise" boxes. Doing so sets a desired servo angle. The magnitude of the angle corresponds to the distance from the center line. You can see the joint angle with the red display. The units are tenths of a degree, and the joint angle is graphed.
The Blue and Green display/graph values are the tilt (in hundredths of a degree) and gyro reading (in tenths of a degree per second).
The model has a delay built in for the sensor readings in the graph (set to 15 milliseconds) to simulate the time delay for sensors, hardware low pass filtering, and delivering the sensor data to the code. However, that delay does not really factor into the interactive game because the 3D display is always accurate real-time.
A delay is built in to the servo control. Servo commands (desired servo positions) do not take effect for 20 milliseconds. This is to simulate the transmission delay of Bing's serial protocol and also the time in between pulses sent to the servos (which will average 10 ms).
The servo model is not as realistic as I'd like -- it has a fixed operating speed of 3 radians per second (0.3-ish seconds for 60 degrees), a large torque limit, and no acceleration delay. I'm not sure the physics is accurate enough for me to bother with a more sophisticated model anyway.
A lot of the important dynamics seem to revolve around border issues such as when the foot breaks contact with the ground, exactly how "bouncy" the foot is, and so on.
Press the SPACE bar to pause the simulation.
It's interesting to play around with, and it's giving me some insight into the issues involved in trying to use these sensors in a closed loop way to do things like maintain balance.