This chapter provides the underlying models for deriving the Whole-Body Control framework in Chaps. 6 and 7. Section 3.1 gives a brief overview on rigid body transformations in order to introduce the equations of motion of humanoid robots in Sect. 3.2. In multi-contact balancing, the distribution of forces and torques among the contacts is a challenging aspect of the problem, which arises from the closed kinematic chain given by the robot and its environment. Section 3.3 provides a mathematical description of this so-called Wrench Distribution Problem. The physical properties of the involved contacts are modeled and studied in Sects.3.4 to 3.6. 本章为推导第 6 章和第 7 章中的全身控制框架提供了基础模型。第 3.1 节简要介绍了刚体变换,以便在第 3.2 节介绍仿人机器人的运动方程。第 3.1 节简要介绍了刚体变换,以便在第 3.2 节中介绍仿人机器人的运动方程。3.2.在多触点平衡中,触点之间的力和力矩分布是一个具有挑战性的问题,这源于机器人及其环境所提供的封闭运动链。第 3.3 节对这一所谓的 "扳手分布问题 "进行了数学描述。第 3.4 节至第 3.6 节对相关触点的物理特性进行了建模和研究。
3.1 Rigid Body Transformations 3.1 刚体变换
This section provides a brief summary on rigid body transformations, which will be used later to discuss the so-called wrench distribution problem (see Sect.3.3). Let us consider two arbitrary frames F_(A)\mathcal{F}_{A} and F_(B)\mathcal{F}_{B} in six-dimensional Cartesian space attached to a rigid body (see Fig. 3.1). The position and orientation of both frames relative to a common world frame W\mathcal{W} are denoted by x_(A)inR^(3),R_(A)inSO(3)\boldsymbol{x}_{A} \in \mathbb{R}^{3}, \boldsymbol{R}_{A} \in \mathcal{S O}(3) and x_(B)inR^(3),R_(B)inSO(3)\boldsymbol{x}_{B} \in \mathbb{R}^{3}, \boldsymbol{R}_{B} \in \mathcal{S O}(3), respectively. The linear and angular velocities of frame F_(A)\mathcal{F}_{A} and F_(B)\mathcal{F}_{B} relative to the world frame W\mathcal{W} are given by chi_(A)inR^(3),omega_(A)inR^(3)\chi_{A} \in \mathbb{R}^{3}, \omega_{A} \in \mathbb{R}^{3} and chi_(B)inR^(3)\chi_{B} \in \mathbb{R}^{3}, omega_(B)inR^(3)\omega_{B} \in \mathbb{R}^{3}. Both can be stacked into the six-dimensional Cartesian velocities 本节简要介绍了刚体变换,稍后将用于讨论所谓的扳手分布问题(见第 3.3 节)。让我们考虑六维笛卡尔空间中与刚体相连的两个任意框架 F_(A)\mathcal{F}_{A} 和 F_(B)\mathcal{F}_{B} (见图 3.1)。两个框架相对于共同世界框架 W\mathcal{W} 的位置和方向分别用 x_(A)inR^(3),R_(A)inSO(3)\boldsymbol{x}_{A} \in \mathbb{R}^{3}, \boldsymbol{R}_{A} \in \mathcal{S O}(3) 和 x_(B)inR^(3),R_(B)inSO(3)\boldsymbol{x}_{B} \in \mathbb{R}^{3}, \boldsymbol{R}_{B} \in \mathcal{S O}(3) 表示。帧 F_(A)\mathcal{F}_{A} 和 F_(B)\mathcal{F}_{B} 相对于世界帧 W\mathcal{W} 的线速度和角速度分别用 chi_(A)inR^(3),omega_(A)inR^(3)\chi_{A} \in \mathbb{R}^{3}, \omega_{A} \in \mathbb{R}^{3} 和 chi_(B)inR^(3)\chi_{B} \in \mathbb{R}^{3} , omega_(B)inR^(3)\omega_{B} \in \mathbb{R}^{3} 表示。两者可以叠加成六维笛卡尔速度
v_(A)=((chi_(A))/(omega_(A)))quad" and "quadv_(B)=((chi_(B))/(omega_(B))).\boldsymbol{v}_{A}=\binom{\chi_{A}}{\omega_{A}} \quad \text { and } \quad \boldsymbol{v}_{B}=\binom{\chi_{B}}{\omega_{B}} .
The forces and torques acting on F_(A)\mathcal{F}_{A} and F_(B)\mathcal{F}_{B} are given by f_(A)inR^(3),tau_(A)inR^(3)\boldsymbol{f}_{A} \in \mathbb{R}^{3}, \boldsymbol{\tau}_{A} \in \mathbb{R}^{3} and f_(B)inR^(3),tau_(B)inR^(3)\boldsymbol{f}_{B} \in \mathbb{R}^{3}, \boldsymbol{\tau}_{B} \in \mathbb{R}^{3}, respectively. Analogously to the velocities, the forces and 作用在 F_(A)\mathcal{F}_{A} 和 F_(B)\mathcal{F}_{B} 上的力和力矩分别由 f_(A)inR^(3),tau_(A)inR^(3)\boldsymbol{f}_{A} \in \mathbb{R}^{3}, \boldsymbol{\tau}_{A} \in \mathbb{R}^{3} 和 f_(B)inR^(3),tau_(B)inR^(3)\boldsymbol{f}_{B} \in \mathbb{R}^{3}, \boldsymbol{\tau}_{B} \in \mathbb{R}^{3} 给出。与速度类似,作用在F_(A)\mathcal{F}_{A}和F_(B)\mathcal{F}_{B}上的力和力矩分别为
Fig. 3.1 Frames F_(A)\mathcal{F}_{A} and F_(B)\mathcal{F}_{B} located on a rigid body 图 3.1 位于刚体上的框架 F_(A)\mathcal{F}_{A} 和 F_(B)\mathcal{F}_{B}
torques can be stacked into the wrenches 扭矩可叠加到扳手中
F_(A)=((f_(A))/(tau_(A)))quad" and "quadF_(B)=((f_(B))/(tau_(B))).\boldsymbol{F}_{A}=\binom{\boldsymbol{f}_{A}}{\boldsymbol{\tau}_{A}} \quad \text { and } \quad \boldsymbol{F}_{B}=\binom{\boldsymbol{f}_{B}}{\boldsymbol{\tau}_{B}} .
3.1.1 Body Coordinates 3.1.1 机身坐标
If the translational and rotational velocities are expressed in body frame, which means with respect to the base vectors of F_(A)\mathcal{F}_{A} and F_(B)\mathcal{F}_{B}, then they can be computed via 如果平移速度和旋转速度以主体框架表示,也就是相对于 F_(A)\mathcal{F}_{A} 和 F_(B)\mathcal{F}_{B} 的基向量,那么它们可以通过以下方式进行计算
Here, the operator S(∙)\boldsymbol{S}(\bullet) denotes the cross product matrix according to Definition 3.1. 这里,运算符 S(∙)\boldsymbol{S}(\bullet) 表示定义 3.1 中的交叉积矩阵。
Definition 3.1 (Cross product matrix S(lambda)\boldsymbol{S}(\boldsymbol{\lambda}) ) Let lambda=(lambda_(x)^(T)lambda_(y)^(T)lambda_(z)^(T))^(T)\boldsymbol{\lambda}=\left(\lambda_{x}^{T} \lambda_{y}^{T} \lambda_{z}^{T}\right)^{T} be an arbitrary vector in R^(3)\mathbb{R}^{3}. The cross product matrix S(lambda)inR^(3xx3)S(\lambda) \in \mathbb{R}^{3 \times 3} is defined as 定义 3.1(交叉积矩阵 S(lambda)\boldsymbol{S}(\boldsymbol{\lambda}) )设 lambda=(lambda_(x)^(T)lambda_(y)^(T)lambda_(z)^(T))^(T)\boldsymbol{\lambda}=\left(\lambda_{x}^{T} \lambda_{y}^{T} \lambda_{z}^{T}\right)^{T} 是 R^(3)\mathbb{R}^{3} 中的任意向量。交叉积矩阵 S(lambda)inR^(3xx3)S(\lambda) \in \mathbb{R}^{3 \times 3} 的定义为
Note that the cross product matrix S(lambda)\boldsymbol{S}(\boldsymbol{\lambda}) is skew-symmetric, that is S(lambda)=-S(lambda)^(T)\boldsymbol{S}(\boldsymbol{\lambda})=-\boldsymbol{S}(\boldsymbol{\lambda})^{T} and S(-lambda)=S(lambda)^(T)\boldsymbol{S}(-\lambda)=\boldsymbol{S}(\lambda)^{T} hold. 请注意,交叉积矩阵 S(lambda)\boldsymbol{S}(\boldsymbol{\lambda}) 是倾斜对称的,即 S(lambda)=-S(lambda)^(T)\boldsymbol{S}(\boldsymbol{\lambda})=-\boldsymbol{S}(\boldsymbol{\lambda})^{T} 和 S(-lambda)=S(lambda)^(T)\boldsymbol{S}(-\lambda)=\boldsymbol{S}(\lambda)^{T} 成立。
The velocities of frame F_(A)\mathcal{F}_{A} can be mapped to frame F_(B)\mathcal{F}_{B} via 帧 F_(A)\mathcal{F}_{A} 的速度可通过以下方式映射到帧 F_(B)\mathcal{F}_{B}
with Ad(∙,***)\boldsymbol{A d}(\bullet, \star) denoting the adjoint matrix according to Definition 3.2. The matrix R_(AB)=R_(A)^(T)R_(B)\boldsymbol{R}_{A B}=\boldsymbol{R}_{A}^{T} \boldsymbol{R}_{B} and the vector ^(A)x_(AB)=R_(A)^(T)(^(W)x_(B)-^(W)x_(A)){ }^{A} \boldsymbol{x}_{A B}=\boldsymbol{R}_{A}^{T}\left({ }^{\mathcal{W}} \boldsymbol{x}_{B}-{ }^{\boldsymbol{W}} \boldsymbol{x}_{A}\right) describe the orientation and position of F_(B)\mathcal{F}_{B} relative to F_(A)\mathcal{F}_{A}, expressed using the base vectors of F_(A)\mathcal{F}_{A}. 根据定义 3.2, Ad(∙,***)\boldsymbol{A d}(\bullet, \star) 表示邻接矩阵。矩阵 R_(AB)=R_(A)^(T)R_(B)\boldsymbol{R}_{A B}=\boldsymbol{R}_{A}^{T} \boldsymbol{R}_{B} 和向量 ^(A)x_(AB)=R_(A)^(T)(^(W)x_(B)-^(W)x_(A)){ }^{A} \boldsymbol{x}_{A B}=\boldsymbol{R}_{A}^{T}\left({ }^{\mathcal{W}} \boldsymbol{x}_{B}-{ }^{\boldsymbol{W}} \boldsymbol{x}_{A}\right) 描述了 F_(B)\mathcal{F}_{B} 相对于 F_(A)\mathcal{F}_{A} 的方向和位置,使用基向量 F_(A)\mathcal{F}_{A} 表示。
Definition 3.2 (Adjoint matrix Ad(R,x)\boldsymbol{A d}(\boldsymbol{R}, \boldsymbol{x}) ) Let R inSO(3)\boldsymbol{R} \in \mathcal{S O}(3) and x inR^(3)\boldsymbol{x} \in \mathbb{R}^{3} be an arbitrary rotation matrix and an arbitrary position vector. Then, the adjoint matrix is defined as 定义 3.2(邻接矩阵 Ad(R,x)\boldsymbol{A d}(\boldsymbol{R}, \boldsymbol{x}) )假设 R inSO(3)\boldsymbol{R} \in \mathcal{S O}(3) 和 x inR^(3)\boldsymbol{x} \in \mathbb{R}^{3} 是任意旋转矩阵和任意位置矢量。那么,邻接矩阵的定义为
Ad(R,x)=[[R,S(x)R],[0,R]]A d(R, x)=\left[\begin{array}{cc}
R & S(x) R \\
0 & R
\end{array}\right]
based on the cross product matrix S(∙)\boldsymbol{S}(\bullet) according to Definition 3.1. The inverse is given by Ad(R,x)^(-1)=Ad(R^(T),-R^(T)x)\boldsymbol{A d}(\boldsymbol{R}, \boldsymbol{x})^{-1}=\boldsymbol{A d}\left(\boldsymbol{R}^{T},-\boldsymbol{R}^{T} \boldsymbol{x}\right). 根据定义 3.1,以交叉积矩阵 S(∙)\boldsymbol{S}(\bullet) 为基础。逆矩阵由 Ad(R,x)^(-1)=Ad(R^(T),-R^(T)x)\boldsymbol{A d}(\boldsymbol{R}, \boldsymbol{x})^{-1}=\boldsymbol{A d}\left(\boldsymbol{R}^{T},-\boldsymbol{R}^{T} \boldsymbol{x}\right) 给出。
The transpose of the adjoint matrix can be used to map forces and torques from frame F_(A)\mathcal{F}_{A} to frame F_(B)\mathcal{F}_{B} via 可以通过邻接矩阵的转置将力和力矩从框架 F_(A)\mathcal{F}_{A}<