Biped ver.6.0
A Quasi Passive Bipedal Walker

Table of Contents

Tweet Follow @mori0091

Abstract

We developed a simulation model of a quasi passive bipedal walker. Its very simple time-based locomotion CPG and the tensegrity body performs smooth and robust bipedal walking.

Human and animals do not consider or compute the gait pattern, just learn the rhythm.

Past research

We had developed a biped model "Biped ver.3" in the past. That had a tensegrity body actuated by artificial muscles. It had walked just by switching two set of springs' parameters periodically. No sensors, no balancers and no controls had needed.

Biped 3 :

Artificial muscles had been simulated as a programmable spring/damper. Although no such actuators exists in fact…

New model

So we developed new model "Biped ver.6" which has also a tensegrity body but actuated by servo-motors instead of artificial muscles. The new model's height, weight and mass distribution is designed as near as a human's body.

Biped 6.0 β 7 :


Biped 6.0 β 9 :


Adding to that, it has the biomimetic knee joints.

Biomimetic 1-DOF knee joint :


About Algodoo

The Algodoo is a 2D physics simulator we used.


Servo-motors in Algodoo

A servo-motor in Algodoo is a hinge (rotational joint) whose bend property is set to true.

Its \(torque\) is calculated according to the following equation.

\begin{eqnarray*} torque &=& min(f,C)\\ f &=& \begin{cases} K_p (\phi_{target} - \phi_{current}) & (K_p \neq 0) \\ C & (K_p = 0) \end{cases} \end{eqnarray*}

where

\(K_p\)
The propotional gain
(bendConstant in Algodoo)
\(\phi_{target}\)
The target angle of the rotor relative to the base of joint
(bendTarget in Algodoo)
\(\phi_{current}\)
The current angle of the rotor relative to the base of joint
(difference of angle between the rotor and the base, in Algodoo)
\(C\)
The maximum torque
(motorTorque in Algodoo)

A hinge connects one object to the other. Here we call them the rotor and the base.
Typically, the rotor is stacked on top of the base and the hinge is connecting them.

Table 1: Property setting for hinge as servo-motor
  property value unit
  motor false  
\(C\) motorTorque ex. 100.0 [Nm]
  motorSpeed (unused) [rad/s]
  bend true  
\(K_p\) bendConstant ex. 200.0 \((\ge 0)\)  
\(\phi_{target}\) bendTarget ex. 0.5 * math.pi [rad]

So the programming of servo-motors in Algodoo is mainly to control bendConstant and bendTarget.

[FYI] for Thyme script programmer:

  • The geom0 property of the hinge is the rotor object's geomID.
  • The geom1 property of the hinge is the base object's geomID.

Anatomy of our biped model

Control methods
  • State machines (STM) for each joints
  • Time-based scheduling of STM (Periodic pendulam of motorized limbs)
  • Weak auto-balance (Adaptive control for servo-motors)
Actuators
  • Servo-motors (shoulder, hip, knee, and ankle joints)
Sensors
  • Tilt sensor (angle of upper body)
  • Rotary encoder (angle of thigh, shin/calf, and foot)
Unused sensors
  • Ground Reaction Force (GRF) sensor (heel and ball of the foot)
  • The GRF sensor is equipped on the sole of the foot, but unused yet.
  • Red, green and blue laser rays show the angle of thigh and upper body.

The Control Methods of our biped model

Our biped model has no brain but simple Central Pattern Generator (CPG), and has a tensegrity body structure consists of the rigid objects and the servo-motors.

The CPG manages/schedules the state machines (STMs) for each joints, and the servo-motors drives joints.

  • State machines (STMs) for each joints
  • Time-based scheduling of STM (Periodic pendulam of motorized limbs)
  • Weak auto-balance (Adaptive control for servo-motors)

Note that there is no complex computation such as Inverse Kinematics (IK), Zero Moment Point (ZMP), or else.

State machines (STM) for each joints

The CPG manages/schedules the state machines (STMs) for each joints.

  • STM for the Shoulder joint (Left)
  • STM for the Shoulder joint (Right)
  • STM for the Hip joint (Left)
  • STM for the Hip joint (Right)
  • STM for the Knee joint (Left)
  • STM for the Knee joint (Right)
  • STM for the Ankle joint (Left)
  • STM for the Ankle joint (Right)

All STMs have two states; swing and stance. (Figure 1)

swing state
The state performing a motion assuming that the leg is in swing phase.
stance state
The state performing a motion assuming that the leg is in stance phase.

Note that a STM state is not necessarily match to legs' swing/stance phase.

Sorry, your browser does not support SVG.

Figure 1: State machines (STM) for each joints

The CPG controls the state transition of these STMs. (See the next section)

Time-based scheduling - Periodic pendulam of motorized limbs

A STM has three timing parameter constants:

\(cycle\)
Duration of one cycle in seconds.
\(duty\)
The ratio of stance state to one cycle.
\(delay\)
Delay to reference time as a ratio to cycle.

Sorry, your browser does not support SVG.

Figure 2: Example timing-chart of a STM

The CPG decides the STMs' current state according to the following equation:

\begin{eqnarray*} phase &=& \left( \frac{time}{cycle} - delay + 1 \right) \pmod {1.0} \\ state &=& \begin{cases} stance & ( (1-duty) \le phase )\\ swing & ( otherwise ) \end{cases} \\ \end{eqnarray*}

where

\(time\)
Reference time in seconds
(Sim.time in Algodoo)
\(phase\)
Normalized current time (\(0 \le phase \lt 1\))
\(state\)
State of the STM (\(stance\) or \(swing\))
Table 2: Timing parameters of STM for each joints
Joint cycle duty delayLeft delayRight
Shoulder 1.2 sec 0.60 0.00 0.50
Hip 1.2 sec 0.56 0.50 0.00
Knee 1.2 sec 0.66 0.50 0.00
Ankle 1.2 sec 0.15 0.55 0.05

Sorry, your browser does not support SVG.

Figure 3: Timing-chart of STMs (ALL)

Weak auto-balance - Adaptive control for servo-motors

For each joints (servo-motors), its propotional gain \(K_p\) (i.e. bendConstant) and target angle \(\phi_{target}\) (i.e. bendTarget) are controlled according to the following equations.

\begin{eqnarray*} K_p &=& P_{gain} \\ \phi_{target} &=& \alpha_{c} + \alpha_{rotor}\,\theta_{rotor} + \alpha_{base}\,\theta_{base}\\ \end{eqnarray*}

where

\(\theta_{rotor}\)
The angle of the rotor object relative to the world.
(angle of the rotor in Algodoo)
\(\theta_{base}\)
The angle of the base object relative to the world.
(angle of the base in Algodoo)

These two variables are sensor data.
Any other variables are constants.

The constants and sensors' value to be used in the above equations, are decided according to the state of each joints' state machine (STM). (Table. 3)

Table 3: Servo-motor parameters for each joints/states
Joint State \(P_{gain}\) \(\alpha_{c}\) \(\alpha_{rotor}\) \(\alpha_{base}\) \(\theta_{rotor}\) \(\theta_{base}\)
Shoulder stance 6 -0.2 0.0 0.0 \(\theta_{arm}\) \(\theta_{body}\)
Shoulder swing 6 0.1 0.0 0.0 \(\theta_{arm}\) \(\theta_{body}\)
Hip stance 150 -0.075 0.5 0.5 \(\theta_{thigh}\) \(\theta_{body}\)
Hip swing 200 0.8 -0.1 0.5 \(\theta_{thigh}\) \(\theta_{body}\)
Knee stance 250 0.075 0.0 0.0 \(\theta_{shin}\) \(\theta_{thigh}\)
Knee swing 10 -1.0 0.0 0.0 \(\theta_{shin}\) \(\theta_{thigh}\)
Ankle stance 90 -1.0 0.0 0.35 \(\theta_{foot}\) \(\theta_{shin}\)
Ankle swing 0 0.0 0.0 0.0 \(\theta_{foot}\) \(\theta_{shin}\)

Note that the \(\alpha_{c}\) is reference target angle of the joint, and the \((\alpha_{rotor}, \alpha_{base})\) pair is Auto Balancer Coefficients, which adjusts target angle (and also torque) according to current pose.

\(\alpha_{c}\)
Reference target angle
\(\alpha_{rotor}\)
A coefficient for weak auto balance
\(\alpha_{base}\)
Another coefficient for weak auto balance

So typically, servo-motors bend the joint in case of the swing state and stretch the joint in case of the stance state. Adding to that, hip and ankle joints' servo-motors adjust its target angle autonomously accoding to the pose of body, thigh, shin/calf and foot.

Figure 4 and Figure 5 show the typical motion sequence of legs mapped on the STM timing-chart.

Sorry, your browser does not support SVG.

Figure 4: Timing-chart of the left leg

Sorry, your browser does not support SVG.

Figure 5: Timing-chart of the right leg

In case of the real robot, \(\theta_{xyz}\) will be sensed by a tilt-sensor and/or a rotary encoder equipped on the object xyz. In general, sensors may not be so accurate or has some latency.

In Algodoo, fortunately, any object (geometry) has angle property that is available to use as a very accurate tilt sensor. So we are not considering about sensor's error or latency.

Further work

  • Event/Time driven schedule of STMs
  • Gait pattern control
  • Seamless gait transition of quadruped
  • etc.

Conclusion

Swing your legs rhythmically and you can walk.

Animals do not consider or compute the gait pattern, just learn the rhythm.

Author: Daishi Mori (@mori0091)

Created: 2019-03-23 土 09:54

Validate