当前位置:网站首页>WBC learning notes (I): manually push WBC formula
WBC learning notes (I): manually push WBC formula
2022-06-26 08:33:00 【Yu Getou】
Introduce :WBC The controller is one of the most commonly used controllers for today's foot robot . Based on different priorities of multiple tasks , It can control the joint motor to meet the needs of each task in the order of priority .MIT Open source cheetah mini It uses MPC+WBIC Algorithm to control the landing point .
The derivation process refers to the following materials
mini cheetah in WBC Formula analysis
Based on the null space method (NUB) Full body control of (WBC) Simple implementation of
Robot Dynamics Lecture Notes
Due to my limited ability , about WBC The understanding of controller is not deep enough , Any mistakes in the derivation process are welcome to be criticized and corrected .
Contact information :[email protected]
2. Formula description
Δ q i = Δ q i − 1 + J i ∣ p r e † ( e i − J i Δ q i − 1 ) q ˙ i c m d = q ˙ i − 1 cmd + J i ∣ p r e † ( x ˙ i d e s − J i q ˙ i − 1 c m d ) q ¨ i c m d = q ¨ i − 1 c m d + J i ∣ p r e d y n ‾ ( x ¨ i c m d − J ˙ i q ˙ − J i q ¨ i − 1 c m d ) \begin{array}{l} \Delta \mathbf{q}_{i}=\Delta \mathbf{q}_{i-1}+\boldsymbol{J}_{i \mid p r e}^{\dagger}\left(\mathbf{e}_{i}-\boldsymbol{J}_{i} \Delta \mathbf{q}_{i-1}\right) \\\\ \dot{\mathbf{q}}_{i}^{\mathrm{cmd}}=\dot{\mathbf{q}}_{i-1}^{\text {cmd }}+\boldsymbol{J}_{i \mid p r e}^{\dagger}\left(\dot{\mathbf{x}}_{i}^{\mathrm{des}}-\boldsymbol{J}_{i} \dot{\mathbf{q}}_{i-1}^{\mathrm{cmd}}\right) \\\\ \ddot{\mathbf{q}}_{i}^{\mathrm{cmd}}=\ddot{\mathbf{q}}_{i-1}^{\mathrm{cmd}}+\overline{J_{i \mid p r e}^{\mathrm{dyn}}}\left(\ddot{\mathbf{x}}_{i}^{\mathrm{cmd}}-\dot{\boldsymbol{J}}_{i} \dot{\mathbf{q}}-\boldsymbol{J}_{i} \ddot{\mathbf{q}}_{i-1}^{\mathrm{cmd}}\right) \end{array} Δqi=Δqi−1+Ji∣pre†(ei−JiΔqi−1)q˙icmd=q˙i−1cmd +Ji∣pre†(x˙ides−Jiq˙i−1cmd)q¨icmd=q¨i−1cmd+Ji∣predyn(x¨icmd−J˙iq˙−Jiq¨i−1cmd)
where
J i ∣ p r c = J i N i − 1 N i − 1 = N 0 N 1 ∣ 0 ⋯ N i − 1 ∣ i − 2 N 0 = I − J c † J c N i ∣ i − 1 = I − J i ∣ i − 1 † J i ∣ i − 1 \begin{array}{l} \boldsymbol{J}_{i \mid p r c}=\boldsymbol{J}_{i} \boldsymbol{N}_{i-1} \\\\ \boldsymbol{N}_{i-1}=\boldsymbol{N}_{0} \boldsymbol{N}_{1 \mid 0} \cdots \boldsymbol{N}_{i-1 \mid i-2} \\\\ \boldsymbol{N}_{0}=\boldsymbol{I}-\boldsymbol{J}_{c}^{\dagger} \boldsymbol{J}_{c} \\\\ \boldsymbol{N}_{i \mid i-1}=\boldsymbol{I}-\boldsymbol{J}_{i \mid i-1}{ }^{\dagger} \boldsymbol{J}_{i \mid i-1} \end{array} Ji∣prc=JiNi−1Ni−1=N0N1∣0⋯Ni−1∣i−2N0=I−Jc†JcNi∣i−1=I−Ji∣i−1†Ji∣i−1
- The derivation process involves linear algebra Pseudo inverse matrix and Zero space , You can refer to the description in Wikipedia
Pseudo inverse matrix
Zero space - q \mathbf{q} q: Robot configuration matrix , It reflects the position of each joint . If joint i For rotating joints , be q i {q}_i qi Represents the angle of rotation . If joint i To move a joint , be q i {q}_i qi Represents the displacement .
Next, we mainly derive the following formula :
q ˙ i c m d = q ˙ i − 1 c m d + J i ∣ p r e † ( x ˙ i d e s − J i q ˙ i − 1 c m d ) \dot{\mathbf{q}}_{i}^{\mathrm{cmd}}=\dot{\mathbf{q}}_{i-1}^{\mathrm{cmd}}+\boldsymbol{J}_{i \mid p r e}^{\dagger}\left(\dot{\mathbf{x}}_{i}^{\mathrm{des}}-\boldsymbol{J}_{i} \dot{\mathbf{q}}_{i-1}^{\mathrm{cmd}}\right) q˙icmd=q˙i−1cmd+Ji∣pre†(x˙ides−Jiq˙i−1cmd)
(1) First, understand the representation of tasks .
Suppose there is n A mission , namely n Target states , use x i , i = 1 , . . . n x_i,i=1,...n xi,i=1,...n Express , Based on the knowledge of forward kinematics ,
x i ˙ = J i q ˙ ⋮ x n ˙ = J n q ˙ \dot{x_i}=J_i\dot{q}\\ \vdots\\ \dot{x_n}=J_n\dot{q} xi˙=Jiq˙⋮xn˙=Jnq˙
(2) Redundant control
q ˙ = J † x ˙ + ( I − J † J ) y \dot{q}=J^{\dagger}\dot{\boldsymbol{x}}+\left(I-J^{\dagger}J\right) y q˙=J†x˙+(I−J†J)y
This is also WBC The control of the The core idea , That is to say y y y Is an arbitrary vector that satisfies the number of rows .
For control tasks x \boldsymbol{x} x Come on , ( I − J † J ) \left(I-J^{\dagger}J\right) (I−J†J) Is a zero vector matrix , Equivalent to one “ filter ”, hold And control x \boldsymbol{x} x Irrelevant robot degrees of freedom are filtered out .
namely , No matter what y y y What is it? , Will not control x \boldsymbol{x} x Any impact . such , We can adopt y y y To control lower priority control tasks , Without affecting high priority tasks .
As shown in the figure : Subspace A Represents the operation space under the first task ,B Represents the operation space of the second task ,C Represents the remaining redundant degrees of freedom .
(3) Derivation process
Task a :
x 0 ˙ = J 0 q ˙ − − − − − ( 1 ) ↓ q ˙ = J 0 † x 0 ˙ + ( I − J 0 † J 0 ) y − − − − − ( 2 ) \boldsymbol{\dot{x_0}}=J_0\dot{q}-----(1)\\\\ \downarrow \\\\ \dot{q}= J^{\dagger}_0\dot{\boldsymbol{x_0}}+\left(I-J^{\dagger}_0J_0\right) y -----(2) x0˙=J0q˙−−−−−(1)↓q˙=J0†x0˙+(I−J0†J0)y−−−−−(2)
Task 2 :
x 1 ˙ = J 1 q ˙ − − − − − ( 3 ) ↓ q ˙ = J 1 † x 1 ˙ + ( I − J 1 † J 1 ) y − − − − − ( 4 ) \boldsymbol{\dot{x_1}}=J_1\dot{q}-----(3)\\\\ \downarrow \\\\ \dot{q}= J^{\dagger}_1\dot{\boldsymbol{x_1}}+\left(I-J^{\dagger}_1J_1\right) y-----(4) x1˙=J1q˙−−−−−(3)↓q˙=J1†x1˙+(I−J1†J1)y−−−−−(4)
take (2) Plug in (3) in
x 1 ˙ = J 1 J 0 † x 0 ˙ + J 1 ( I − J 0 † J 0 ) y ↓ x 1 ˙ − J 1 J 0 † x 0 ˙ = J 1 ( I − J 0 † J 0 ) y \boldsymbol{\dot{x_1}}=J_1J^{\dagger}_0\dot{\boldsymbol{x_0}}+J_1\left(I-J^{\dagger}_0J_0\right) y\\\\ \downarrow \\\\ \boldsymbol{\dot{x_1}}-J_1J^{\dagger}_0\dot{\boldsymbol{x_0}}=J_1\left(I-J^{\dagger}_0J_0\right) y x1˙=J1J0†x0˙+J1(I−J0†J0)y↓x1˙−J1J0†x0˙=J1(I−J0†J0)y
According to the parameter definition in the above formula :
N 0 = I − J 0 † J 0 J 1 ∣ 0 = J 1 N 0 ↓ x 1 ˙ − J 1 J 0 † x 0 ˙ = J 1 ∣ 0 y N_0=I-J^{\dagger}_0J_0\\\\ J_{1\mid0}=J_1N_0\\ \downarrow \\ \boldsymbol{\dot{x_1}}-J_1J^{\dagger}_0\dot{\boldsymbol{x_0}}=J_{1\mid0}y N0=I−J0†J0J1∣0=J1N0↓x1˙−J1J0†x0˙=J1∣0y
because J 1 ∣ 0 J_{1\mid0} J1∣0 It is also a redundancy matrix , So the treatment method is as follows :
y = J 1 ∣ 0 † ( x 1 ˙ − J 1 J 0 † x 0 ˙ ) + ( I − J 1 ∣ 0 † J 1 ∣ 0 ) z ↓ y = J 1 ∣ 0 † ( x 1 ˙ − J 1 J 0 † x 0 ˙ ) + N 1 ∣ 0 z − − − − ( 5 ) y =J_{1\mid0}^{\dagger}(\boldsymbol{\dot{x_1}}-J_1J^{\dagger}_0\dot{\boldsymbol{x_0}})+ (I-J_{1\mid0}^{\dagger}J_{1\mid0})z\\ \downarrow\\ y =J_{1\mid0}^{\dagger}(\boldsymbol{\dot{x_1}}-J_1J^{\dagger}_0\dot{\boldsymbol{x_0}})+ N_{1\mid0}z ----(5) y=J1∣0†(x1˙−J1J0†x0˙)+(I−J1∣0†J1∣0)z↓y=J1∣0†(x1˙−J1J0†x0˙)+N1∣0z−−−−(5)
take (5) Daihui (2) in
q ˙ = J 0 † x 0 ˙ + N 0 J 1 ∣ 0 † ( x 1 ˙ − J 1 J 0 † x 0 ˙ ) + N 0 N 1 ∣ 0 z ↓ q ˙ = J 0 † x 0 ˙ + N 0 J 1 ∣ 0 † ( x 1 ˙ − J 1 J 0 † x 0 ˙ ) + N 1 z \dot{q}= J^{\dagger}_0\dot{\boldsymbol{x_0}}+N_0J_{1\mid0}^{\dagger}(\boldsymbol{\dot{x_1}}-J_1J^{\dagger}_0\dot{\boldsymbol{x_0}})+N_0N_{1\mid0}z\\ \downarrow\\ \dot{q}= J^{\dagger}_0\dot{\boldsymbol{x_0}}+N_0J_{1\mid0}^{\dagger}(\boldsymbol{\dot{x_1}}-J_1J^{\dagger}_0\dot{\boldsymbol{x_0}})+N_1z q˙=J0†x0˙+N0J1∣0†(x1˙−J1J0†x0˙)+N0N1∣0z↓q˙=J0†x0˙+N0J1∣0†(x1˙−J1J0†x0˙)+N1z
According to the properties of zero space projection
N 0 J 1 ∣ 0 † = J 1 ∣ 0 † ↓ q ˙ = J 0 † x 0 ˙ + J 1 ∣ 0 † ( x 1 ˙ − J 1 J 0 † x 0 ˙ ) + N 1 z N_0J_{1\mid0}^{\dagger}=J_{1\mid0}^{\dagger}\\ \downarrow\\ \dot{q}= J^{\dagger}_0\dot{\boldsymbol{x_0}}+J_{1\mid0}^{\dagger}(\boldsymbol{\dot{x_1}}-J_1J^{\dagger}_0\dot{\boldsymbol{x_0}})+N_1z N0J1∣0†=J1∣0†↓q˙=J0†x0˙+J1∣0†(x1˙−J1J0†x0˙)+N1z
Based on the previous discussion
q ˙ 0 c m d = J 0 † x 0 ˙ \dot{q}^{cmd}_0= J^{\dagger}_0\dot{\boldsymbol{x_0}} q˙0cmd=J0†x0˙
If there is no free redundancy , Then we can get the final result
q ˙ 1 c m d = q ˙ 0 c m d + J 1 ∣ 0 † ( x ˙ 0 c m d − J 1 q ˙ 0 c m d ) \dot{q}_1^{cmd}= \dot{q}^{cmd}_0+J_{1\mid0}^{\dagger}(\boldsymbol{\dot{x}_0^{cmd}}-J_1\dot{q}^{cmd}_0) q˙1cmd=q˙0cmd+J1∣0†(x˙0cmd−J1q˙0cmd)
Compare the formulas to be derived , You can actually see that , The form has been consistent . So no further iterations .
边栏推荐
- Use a switch to control the lighting and extinguishing of LEP lamp
- Discrete device ~ diode triode
- (5) Matrix key
- Introduction of laser drive circuit
- optee中的timer代码导读
- Idea update
- swift 代码实现方法调用
- Solve the problem that pychar's terminal cannot enter the venv environment
- STM32 project design: smart door lock PCB and source code based on stm32f1 (4 unlocking methods)
- Why are you impetuous
猜你喜欢

Comparison between Apple Wireless charging scheme and 5W wireless charging scheme

leetcode2022年度刷题分类型总结(十二)并查集

Oracle 19C local listener configuration error - no listener

Remote centralized control of distributed sensor signals using wireless technology

Stream analysis of hevc learning

(4) Independent key

Reflection example of ads2020 simulation signal

多台三菱PLC如何实现无线以太网高速通讯?

Idea automatically sets author information and date

【Unity Mirror】NetworkTeam的使用
随机推荐
Relationship extraction --tplinker
监听iPad键盘显示和隐藏事件
Using transformers of hugging face to realize named entity recognition
The solution of installing opencv with setting in pycharm
Microcontroller from entry to advanced
OpenCV Learning notes iii
First character that appears only once
Undefined symbols for architecture i386 is related to third-party compiled static libraries
Analysis of Yolo series principle
js文件报无效字符错误
[postgraduate entrance examination] group planning: interrupted
GHUnit: Unit Testing Objective-C for the iPhone
Leetcode22 summary of types of questions brushing in 2002 (XII) and collection search
StarWar armor combined with scanning target location
optee中支持的时间函数
optee中的timer代码导读
Learn signal integrity from zero (SIPI) - (1)
CodeBlocks integrated Objective-C development
Swift code implements method calls
Whale conference one-stop intelligent conference system helps organizers realize digital conference management