Simulation of Will's ROCR climber over at the University of Utah.
Interesting frequency sweep - 15aug08
Updated ROCR version dactyl sims - 14aug08
Initial dactyl-sims - 13aug08
Notes and movies from 08 August 2008
Notes and movies for 17 July 2008
--
JonathanKarpick - 17 Jul 2008
Older stuff
Optimization goodness and weirdness
How the torque trajectory was found:
- Estimate steady state switching conditions from one of the below runs (for this case, q1=45deg, qL=-60deg, q1dot=-27deg/sec, qLdot=-266deg/sec).
- Run a minimum time optimization with tau_max = 0.9 in DIRCOL
- Use the NEGATIVE of the resulting torque profile in simulation (the negative was a mistake, but it works, and using the torque profile directly from DIRCOL doesn't. That's really weird.)
- The resulting climber has a pretty large basin of attraction for steady state climbing - it may take a while to get to steady state depending on the IC, but it has in my random tests...)
Some time histories:
- DIRCOL output:
- Simulation time history:
- Simulation wall reaction forces:
--
JonathanKarpick - 23 Jun 2008
AHA!
Probably mis-reading Utah's notes: max torque is @ tail, not @ motor (this makes more sense...)
Ensuring foot switch is critical - newer simulations use MATLAB's "events" detector in ode45(). In that same vane, hand-tuning the switching amplitude is important - you seem to need to reduce it (with respect to the maximum amplitude) with lower contact damping. The above video shows a surprisingly nice steady-state gait at the end.
Reduced contact damping by an order of magnitude - requires lower switching amplitude:
Bang-bang controller works really well at this torque level, ROCR configuration, and IC:
Changing the foot switch to occur at +/- 80 degrees, and things don't work so well:
Fixed tail trajectory ensures switching of hand holds, which makes climbing a bit more sure
- ROCR-0.90Hz-75deg-0.005b-fix.mp4: ROCR: drive tail to 0.90Hz, 75deg amplitude, contact damping of 0.005 Nms/rad, Fixed tail trajectory IC: thetB=60deg, qL=45deg
- ROCR-0.90Hz-75deg-0.01b-fix.mp4: ROCR: drive tail to 0.90Hz, 75deg amplitude, contact damping of 0.01 Nms/rad, Fixed tail trajectory IC: thetB=60deg, qL=45deg - doubling the contact damping : A bit more stable until the end
- ROCR-0.90Hz-75deg-0.02b-fix.mp4: ROCR: drive tail to 0.90Hz, 75deg amplitude, contact damping of 0.02 Nms/rad, Fixed tail trajectory IC: thetB=60deg, qL=45deg - again doubling the contact damping - a little more stable
Very sensitive to controller gains - tracking specified tail trajectory makes for rather iffy climbing
A "simple" bang-bang controller, where the maximum torque is always applied to the tail motor, in the direction so that the acceleration of the main body is always up the climbing surface. The feet switch when the main body is with 15 degrees of +/- 90 degrees
- ROCR-bang-bang-10.0Nm-90deg-0.005b.mp4: ROCR: "simple" bang-bang control, switch feet at +/-90 deg, max 10 Nm torque, contact damping of 0.005 Nms/rad, IC: thetB=60deg, qL=45deg
- ROCR-bang-bang-1.0Nm-90deg-0.005b.mp4: ROCR: "simple" bang-bang control, switch feet at +/-90 deg, max 1 Nm torque, contact damping of 0.005 Nms/rad, IC: thetB=60deg, qL=45deg
--
JonathanKarpick - 16 Jun 2008
Older stuff - likely mistakes in simulation:
--
JonathanKarpick - 24 May 2008
--
JonathanKarpick - 28 May 2008
Servo gains a bit too high on these: Kp=12.5 Nm/rad : Kd = 0.4 Nms/rad
- ROCR-75Hz-60deg-0p9Nm-5e-4b.mp4: ROCR: drive tail to 0.75Hz, 60deg amplitude, max 0.9 Nm torque, contact damping of 0.0005 Nms/rad, IC: thetB=45deg, qL=45deg - Interesting behavior at 10 seconds!!
- ROCR-75Hz-60deg-0p9Nm-5e-3b.mp4: ROCR: drive tail to 0.75Hz, 60deg amplitude, max 0.9 Nm torque, contact damping of 0.005 Nms/rad, IC: thetB=45deg, qL=45deg
- ROCR-75Hz-60deg-0p9Nm-1e-3b.mp4: ROCR: drive tail to 0.75Hz, 60deg amplitude, max 0.9 Nm torque, contact damping of 0.001 Nms/rad, IC: thetB=45deg, qL=45deg
- ROCR-75Hz-60deg-0p9Nm-2e-3b.mp4: ROCR: drive tail to 0.75Hz, 60deg amplitude, max 0.9 Nm torque, contact damping of 0.002 Nms/rad, IC: thetB=45deg, qL=45deg
Testing out lower servo gains:
If the gains are too low, you don't get enough torque, and ROCR can't climb. Too much, and you tend to end up in the pump-up state, where ROCR starts spinning out of control.
- ROCR-75Hz-60deg-0p9Nm-5e-4b-5p0kd-0p27kd.mp4: ROCR: drive tail to 0.75Hz, 60deg amplitude, max 0.9 Nm torque, contact damping of 0.0005 Nms/rad, Kp=5.0, Kd=0.27 IC: thetB=45deg, qL=45deg
- ROCR-0.75Hz-60deg-0.9Nm-0.0005b-7.00kd-0.27kd.mp4: ROCR: drive tail to 0.75Hz, 60deg amplitude, max 0.9 Nm torque, contact damping of 0.0005 Nms/rad, Kp=7.0, Kd=0.27 IC: thetB=45deg, qL=45deg
- ROCR-0.75Hz-60deg-0.9Nm-0.0005b-5.00kp-0.27kd.mp4: ROCR: drive tail to 0.75Hz, 60deg amplitude, max 0.9 Nm torque, contact damping of 0.0005 Nms/rad, Kp=5.0, Kd=0.27 IC: thetB=45deg, qL=45deg - I like the struggle to get to the next grasp in the middle here.
- ROCR-0.75Hz-60deg-0.9Nm-0.0005b-5.25kp-0.27kd.mp4: ROCR: drive tail to 0.75Hz, 60deg amplitude, max 0.9 Nm torque, contact damping of 0.0005 Nms/rad, Kp=5.25, Kd=0.27 IC: thetB=45deg, qL=45deg
--
JonathanKarpick - 29 May 2008