Biped ver.6.0
A Quasi Passive Bipedal Walker
Table of Contents
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 :
#Algodoo #機構学 #ロボット #準受動歩行 #歩行現象
— 森 大志 (@mori0091) 2019年3月16日
Biped ver6.0 β9
・成功率 93% (147/158)
・膝を伸ばすのを少し早く/速くした
もうこの辺でいいかな。
そろそろ歩行制御(歩容制御)の研究に移ろう pic.twitter.com/SR27JaaCwu
Adding to that, it has the biomimetic knee joints.
Biomimetic 1-DOF knee joint :
#Algodoo #機構学 #膝関節
— 森 大志 (@mori0091) 2019年1月9日
幾何学的にも機構学的にも美しい構造を見つけてしまった…。
円弧の半径を決めたらあとは全部芋づる式に配置が求まるやん…。ホントか? pic.twitter.com/72FyvPuVvN
About Algodoo
The Algodoo is a 2D physics simulator we used.
- Algodoo was developed for childrens' science education.
- Algodoo is available as free download http://www.algodoo.com/
- Algodoo has the scene sharing site Algobox http://www.algodoo.com/algobox/
- Algodoo has an enbedded Thyme scripting language for advanced users.
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 ofangle
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.
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'sgeomID
. - The
geom1
property of the hinge is the base object'sgeomID
.
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)
- Tilt sensor (
- 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.
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.
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\))
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 |
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.
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)
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.
Figure 4: Timing-chart of the left leg
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.