Modern Robotics:机器人的构型空间

Modern Robotics机器人的构型空间

机器人的构型(configuration)是一个机器人所有点的位置。描述机器人构型的最小实数坐标的个数n是机器人的自由度的数目。这个n维空间包括着机器人所有可能的构型(configurations)称为机器人的构型空间(configuration space,C-space)。机器人的构型可以由它的构型空间里的一个点描述。

机器人的自由度

机器人常见的关节如下图所示

在这里插入图片描述

旋转关节(revolute joint,R),平移关节(prismatic joint,P),螺旋关节(Helical joint,H)都是只有一个自由度。关节也可以有多个自由度,例如圆柱关节(cylindrical joint ,C)有两个自由度,万向节(Universal joint,U)有两个自由度,球形关节(spherical joint,S)有三个关节,其功能与人体的肩关节很像。

G r u ¨ b l e r ′ s Gr\ddot {\text u}bler's Gru¨blers公式

考察一个又 N N N个连杆构成的机械系统,地面也看做一个连杆。假设 J J J是关节的数量, m m m是刚体的自由度(对于平面刚体 m = 3 m=3 m=3,对于空间刚体 m = 6 m=6 m=6), f i f_i fi为第 i i i个关节具有的自由度数目, c i c_i ci是第 i i i个关节具有的约束数目,这里对所有 i i i都有 f i + c i = m f_i+c_i=m fi+ci=m。那么 G r u ¨ b l e r ′ s Gr\ddot {\text u}bler's Gru¨blers计算机器人的自由度数目为
d o f = m ( N − 1 ) − ∑ i = 1 J c i = m ( N − 1 ) − ∑ i = 1 J ( m − f i ) = m ( N − 1 − J ) + ∑ i = 1 J f i (2.4) dof=m(N-1)-\sum_{i=1}^J c_i\\ =m(N-1)-\sum_{i=1}^J (m-f_i)\\ =m(N-1-J)+\sum_{i=1}^J f_i \tag{2.4} dof=m(N1)i=1Jci=m(N1)i=1J(mfi)=m(N1J)+i=1Jfi(2.4)

这个公式成立的条件是所有的关节约束是独立的。

下面是计算该公式的C语言模块。

/**
*@brief Description:使用GrublersFormula公式计算机构的自由度.
*@param[in]		N		连杆的数目(包括大地).
*@param[in]		m		连杆(刚体)的自由度(平面刚体m=3,空间刚体m=6).
*@param[in]		J		关节的数量.
*@param[in]		f		数组,每个关节的自由度.
*@return				返回输入该机构的自由度.
*@note:					各个关节的约束是独立的才能使用该函数计算机构的自由度.
*@waring:
*/
int GrublersFormula(int m, int N, int J, int *f)
{
	int i;
	int dof;
	int c = 0;
	for (i=1;i<=J;i++)
	{
		//计算自由度的约束
		c = c + f[i-1];
	}
	dof = m*(N - 1 - J) + c;
	return dof;
}

Example 2.4使用 G r u ¨ b l e r ′ s Gr\ddot {\text u}bler's Gru¨blers公式计算下面的平面机构自由度

在这里插入图片描述

这些连杆是平面刚体,因此m=3

(a) d o f = 3 ∗ ( 5 − 1 − 4 ) + 4 = 4 dof=3*(5-1-4)+4=4 dof=3(514)+4=4

(b) d o f = 3 ∗ ( 5 − 1 − 5 ) + 5 = 2 dof=3*(5-1-5)+5=2 dof=3(515)+5=2

© d o f = 3 ∗ ( 6 − 1 − 7 ) + 7 = 1 dof=3*(6-1-7)+7=1 dof=3(617)+7=1

(d) d o f = 3 ∗ ( 6 − 1 − 7 ) + 7 = 1 dof=3*(6-1-7)+7=1 dof=3(617)+7=1

Example2.5 计算如下图有重叠关节的平面机构自由度。

在这里插入图片描述

大连杆左端三个连杆连接于一点,可以各自转动。关节的定义为两个连杆的连接,因此这不能算作一个关节,而是两个关节。因此自由度为
d o f = 3 ∗ ( 8 − 1 − 9 ) + 9 = 3 dof=3*(8-1-9)+9=3 dof=3(819)+9=3

构型空间拓扑

一个点在球面上运动,这个点的构型空间(C-space)是2维的,因为可以用两个坐标表示,纬度和经度。一个点在平面上运动,具有一个2维构型空间(C-space),有坐标(x,y)。一个平面和一个球面都是2维,但是它们的形状不同,平面无限延伸,而球面互相连在一起。一个椭圆的美国足球与球面有类似的形状,它们具有相等的拓扑。例如一条线段可以把它弯曲成一个开口的半圆,一个开口的半圆也可以直为一条线段,因此它们由相等的拓扑结构。不那么严格地,如果一个空间可以不进行粘合或剪切,通过连续变形得到另一个空间,我们说这两个空间具有相等的拓扑。

圆数学上写为 S S S或$ S^1 , 是 1 维 “ 球 ” , 直 线 写 为 ,是1维“球”,直线写为 1线\mathbb E 或 或 \mathbb E^1 , 意 味 1 维 欧 拉 空 间 , 因 为 一 个 点 在 ,意味1维欧拉空间,因为一个点在 1\mathbb E^1 上 可 以 写 成 一 个 实 数 , 因 此 通 常 写 为 上可以写成一个实数,因此通常写为 \mathbb R 或 或 \mathbb R^1$。

拓扑是空间的属性,与我们选择则怎样的坐标来描述是无关的。例如一个圆,确定一个零角度后,可以选择一个角度 θ \theta θ来描述,也可以在圆心建立一个坐标系,用坐标(x,y)和约束 x 2 + y 2 = 1 x^2+y^2=1 x2+y2=1.无论选择怎样的坐标来描述,该空间没有发生改变。

一些C-space可以表示成两个或多个低维的笛卡尔积。例如一个平面刚体的C-space可以写成 R 2 × S 1 \mathbb R^2\times S^1 R2×S1,因为其构型可以用坐标(x,y)表示 R 2 \mathbb R^2 R2,一个角度 θ \theta θ表示 S 1 S^1 S1,这两个坐标串在一起表示刚体构型。

构型空间表示

如下图是四个拓扑不同的二维C-space及表示

在这里插入图片描述

选择 n n n个坐标或参数表示一个 n n n维空间叫做空间的显式参数化

使用纬度和经度两个坐标表示球面,在两个极点会出现奇异。解决奇异的方法有:

  • 使用多个坐标图表示该空间。每个坐标图只是空间一部分的显式参数化,在每个坐标图都没有奇异性。多个坐标图重叠覆盖要表示的空间,当在某个坐标图出现奇异时,切换到另一个坐标图表示。
  • 使用隐式表示而不是显式参数化。一个隐式表示把 n n n维空间看成是内含与大于n维的空间的欧拉空间。例如2维球面可以看成是包含于3维欧拉空间的一个面。一个隐式表示使用的坐标数高于该空间的维度,当需要约束冗余的自由度。例如使用 ( x , y , z ) (x,y,z) (x,y,z)和一个约束 x 2 + y 2 + z 2 = 1 x^2+y^2+z^2=1 x2+y2+z2=1表示单位球面。

在机器人学里通常使用隐式表示,例如使用9个数值,6个约束,表示刚体在空间的3个方向自由度,该表示称旋转矩阵.

构型和速度约束

一般的机器人包含一个或多个闭环,构型空间可以通过一个列向量 θ = [ θ 1 , . . . , θ 2 ] T ∈ R 2 \mathbf \theta=[\theta _1,...,\theta_2]^T\in\mathbb R^2 θ=[θ1,...,θ2]TR2和闭环方程隐式表示
g ( θ ) = [ g 1 ( θ 1 , . . . , θ n ) ⋮ g k ( θ 1 , . . . , θ n ) ] = 0 , (2.5) g(\mathbf \theta)= \left [ \begin{matrix} g_1(\theta_1,...,\theta_n)\\ \vdots\\ g_k(\theta_1,...,\theta_n)\\ \end{matrix}\right] =0,\tag{2.5} g(θ)=g1(θ1,...,θn)gk(θ1,...,θn)=0,(2.5)
闭环方程是 k k k个独立的方程, k ≤ n k\le n kn.这样的约束称为完整约束(holomomic contraints).C-space可以看成一个包含于 R n \mathbb R^n Rn中的 n − k n-k nk维的面.

假设 θ \theta θ是关于时间的轨迹,两边求导有
d d t g ( θ ( t ) ) = 0 (2.6) \frac{d}{dt}g(\mathbf \theta (t))=0\tag{2.6} dtdg(θ(t))=0(2.6)
因此
[ ∂ g 1 ( θ ) ∂ θ 1 θ ˙ 1 + . . . + ∂ g 1 ( θ ) ∂ θ n θ ˙ n ⋮ ∂ g k ( θ ) ∂ θ 1 θ ˙ 1 + . . . + ∂ g k ( θ ) ∂ θ n θ ˙ n ] = 0 \left [ \begin{matrix} \frac{\partial g_1 (\theta)}{\partial \theta _1}\dot \theta _1+...+\frac{\partial g_1 (\theta)}{\partial \theta _n}\dot \theta _n\\ \vdots\\ \frac{\partial g_k (\theta)}{\partial \theta _1}\dot \theta _1+...+\frac{\partial g_k (\theta)}{\partial \theta _n}\dot \theta _n\\ \end{matrix}\right] =0 θ1g1(θ)θ˙1+...+θng1(θ)θ˙nθ1gk(θ)θ˙1+...+θngk(θ)θ˙n=0

[ ∂ g 1 ( θ ) ∂ θ 1 θ ˙ 1 … ∂ g 1 ( θ ) ∂ θ n θ ˙ n ⋮ ⋱ ⋮ ∂ g k ( θ ) ∂ θ 1 θ ˙ 1 … ∂ g k ( θ ) ∂ θ n θ ˙ n ] [ θ ˙ 1 ⋮ θ ˙ n ] = 0 \left [ \begin{matrix} \frac{\partial g_1 (\theta)}{\partial \theta _1}\dot \theta _1& \dots & \frac{\partial g_1 (\theta)}{\partial \theta _n}\dot \theta _n \\ \vdots & \ddots &\vdots \\ \frac{\partial g_k (\theta)}{\partial \theta _1}\dot \theta _1& \dots & \frac{\partial g_k (\theta)}{\partial \theta _n}\dot \theta _n\\ \end{matrix}\right] \left [ \begin{matrix} \dot \theta_1\\ \vdots \\ \dot \theta_n\\ \end{matrix}\right] =0 θ1g1(θ)θ˙1θ1gk(θ)θ˙1θng1(θ)θ˙nθngk(θ)θ˙nθ˙1θ˙n=0
可以继续写成
∂ g ( θ ) ∂ θ θ ˙ = 0 (2.7) \frac{\partial g(\theta)}{\partial \theta}\dot \theta=0\tag{2.7} θg(θ)θ˙=0(2.7)
这里 ∂ g ( θ ) ∂ θ ∈ R k × n \frac{\partial g(\theta)}{\partial \theta}\in\mathbb R^{k\times n} θg(θ)Rk×n θ , θ ˙ ∈ R n \theta,\dot {\theta}\in \mathbb R^n θ,θ˙Rn,又可以写成
A ( θ ) θ ˙ = 0 (2.8) A(\mathbf \theta)\dot \theta=0 \tag{2.8} A(θ)θ˙=0(2.8)
这里 A ( θ ) ∈ R k × n A(\theta)\in\mathbb R^{k\times n} A(θ)Rk×n.速度的这种约束形式称为Pfaffian约束。 g ( θ ) g(\theta) g(θ)可以由 A ( θ ) A(\theta) A(θ)积分得到,因此完整约束 g ( θ ) g(\theta) g(θ)又称为积分约束–速度约束可以积分得到构型约束。对于不能通过速度约束积分得到构型约束的Pfaffian约束称为非完整约束.

任务空间和工作空间

机器人的任务空间是机器人任务自然表达的一个空间(与机器人的构型空间无关)。机器人的工作空间是机器人末端能够到达的构型。

小结

  • 一个机器人由一系列关节连接的连杆构成。连杆通常建模为刚体。末端执行器,例如抓手常常会固定到机器人的连杆上。驱动器传递力或扭矩给关节,驱动机器人运动。
  • 最常用的单自由度关节是旋转关节,可以绕关节轴线转动,以及平移关节,可以沿关节轴线平移。圆柱关节有两个自由度,由一个旋转关节和移动关节串联组成,万向节由两个正交的旋转关节组成,球形关节有三个自由度,其功能与人的肩关节相似。
  • 一个刚体的构型其所有点的位置。在平面运动的刚体,需要3个独立参数表示其构型。在空间运动的刚体需要6个参数表示其构型。
  • 一个机器人的构型是其所有连杆的构型。机器人的构型空间是其一系列所有可能的构型。机器人构型空间的维数是其自由度数目。
  • 机器人自由度数目可以通过 G r u ¨ b l e r ′ s Gr\ddot ubler's Gru¨blers公式计算

dof = m ( N − 1 − J ) + ∑ i = 1 J f i \text {dof}=m(N-1-J)+\sum _{i=1}^J f_i dof=m(N1J)+i=1Jfi

对于平面机构 m = 3 m=3 m=3,空间机构 m = 6 m=6 m=6 N N N是连杆的数目(包括地面连杆), J J J是关节数目, f i f_i fi是第 i i i个关节的自由度数目。如果关节的约束不是相互独立, G r u ¨ b l e r ′ s Gr\ddot ubler's Gru¨blers提供的是自由度数目的一个下界。

  • 机器人的C-space可以显式参数化或隐式参数化。对于 n n n个自由度的机器人,显示参数化至少使用 n n n个坐标,隐式表示则需要 m m m个坐标, m ≥ n m\ge n mn,这 m m m个坐标受 m − n m-n mn个约束方程约束。使用隐式表示,机器人的C-space可以看做是包含于高维数的 m m m维空间的一个 n n n维表面。
  • n n n个自由度的机器人的C-space,结构的一个或多个闭环约束,可以隐式地使用 k k k个闭环方程表示,其形如 g ( θ ) = 0 g(\theta)=0 g(θ)=0, θ ∈ R m \theta \in\mathbb R^m θRm,且 g : R m → R k g:\mathbb R^m\to \mathbb R^k g:RmRk。这样的约束方程称为完整约束。假设 θ \theta θ随时间 t t t变化,完整约束 g ( θ ( t ) ) g(\theta(t)) g(θ(t)) t t t微分得到

∂ g ( θ ) ∂ θ θ ˙ = 0 , \frac{\partial g(\theta)}{\partial \theta}\dot \theta=0, θg(θ)θ˙=0,

这里 ∂ g ( θ ) / ∂ θ \partial g(\theta)/\partial \theta g(θ)/θ k × m k\times m k×m的矩阵。

  • 机器人的运动可以通过速度约束的形式表示

A ( θ ) θ ˙ = 0 , A(\theta)\dot \theta =0, A(θ)θ˙=0,

A ( θ ) A(\theta) A(θ) k × m k\times m k×m矩阵,不能表示为某个函数 g ( θ ) g(\theta) g(θ)的导数,即不存在a任何的 g ( θ ) , g : R m → R k g(\theta),g:\mathbb R^m \to R^k g(θ),g:RmRk,使得
A ( θ ) = ∂ g ( θ ) ∂ θ . A(\theta)=\frac{\partial g(\theta)}{\partial \theta}. A(θ)=θg(θ).
这样的约束称为非完整约束,或不可积约束。这些约束减少可行速度的维度,单数不会减少可达C-space的维度。在动量守恒或滚动而不滑动的机器人系统中会出现非完整约束。

  • 机器人的任务空间是机器人任务自然表达的一个空间(与机器人的构型空间无关)。机器人的工作空间是机器人末端能够到达的构型。

参考文献

Kenvin M. Lynch , Frank C. Park, Modern Robotics Mechanics,Planning , and Control. May 3, 2017

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Galaxy_Robot

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值