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)有三个关节,其功能与人体的肩关节很像。

Gru¨bler′sGr\ddot {\text u}bler'sGru¨bler′s公式

考察一个又NNN个连杆构成的机械系统,地面也看做一个连杆。假设JJJ是关节的数量,mmm是刚体的自由度(对于平面刚体m=3m=3m=3,对于空间刚体m=6m=6m=6),fif_ifi​为第iii个关节具有的自由度数目,cic_ici​是第iii个关节具有的约束数目,这里对所有iii都有fi+ci=mf_i+c_i=mfi​+ci​=m。那么Gru¨bler′sGr\ddot {\text u}bler'sGru¨bler′s计算机器人的自由度数目为
dof=m(N−1)−∑i=1Jci=m(N−1)−∑i=1J(m−fi)=m(N−1−J)+∑i=1Jfi(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(N−1)−i=1∑J​ci​=m(N−1)−i=1∑J​(m−fi​)=m(N−1−J)+i=1∑J​fi​(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使用Gru¨bler′sGr\ddot {\text u}bler'sGru¨bler′s公式计算下面的平面机构自由度

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

(a) dof=3∗(5−1−4)+4=4dof=3*(5-1-4)+4=4dof=3∗(5−1−4)+4=4

(b)dof=3∗(5−1−5)+5=2dof=3*(5-1-5)+5=2dof=3∗(5−1−5)+5=2

©dof=3∗(6−1−7)+7=1dof=3*(6-1-7)+7=1dof=3∗(6−1−7)+7=1

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

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

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

构型空间拓扑

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

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

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

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

构型空间表示

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

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

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

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

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

构型和速度约束

一般的机器人包含一个或多个闭环,构型空间可以通过一个列向量θ=[θ1,...,θ2]T∈R2\mathbf \theta=[\theta _1,...,\theta_2]^T\in\mathbb R^2θ=[θ1​,...,θ2​]T∈R2和闭环方程隐式表示
g(θ)=[g1(θ1,...,θn)⋮gk(θ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)
闭环方程是kkk个独立的方程,k≤nk\le nk≤n.这样的约束称为完整约束(holomomic contraints).C-space可以看成一个包含于Rn\mathbb R^nRn中的n−kn-kn−k维的面.

假设θ\thetaθ是关于时间的轨迹,两边求导有
ddtg(θ(t))=0(2.6)\frac{d}{dt}g(\mathbf \theta (t))=0\tag{2.6} dtd​g(θ(t))=0(2.6)
因此
[∂g1(θ)∂θ1θ˙1+...+∂g1(θ)∂θnθ˙n⋮∂gk(θ)∂θ1θ˙1+...+∂gk(θ)∂θ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 ⎣⎢⎢⎡​∂θ1​∂g1​(θ)​θ˙1​+...+∂θn​∂g1​(θ)​θ˙n​⋮∂θ1​∂gk​(θ)​θ˙1​+...+∂θn​∂gk​(θ)​θ˙n​​⎦⎥⎥⎤​=0

[∂g1(θ)∂θ1θ˙1…∂g1(θ)∂θnθ˙n⋮⋱⋮∂gk(θ)∂θ1θ˙1…∂gk(θ)∂θ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 ⎣⎢⎢⎡​∂θ1​∂g1​(θ)​θ˙1​⋮∂θ1​∂gk​(θ)​θ˙1​​…⋱…​∂θn​∂g1​(θ)​θ˙n​⋮∂θn​∂gk​(θ)​θ˙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(θ)∂θ∈Rk×n\frac{\partial g(\theta)}{\partial \theta}\in\mathbb R^{k\times n}∂θ∂g(θ)​∈Rk×n,θ,θ˙∈Rn\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(θ)∈Rk×nA(\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个参数表示其构型。
  • 一个机器人的构型是其所有连杆的构型。机器人的构型空间是其一系列所有可能的构型。机器人构型空间的维数是其自由度数目。
  • 机器人自由度数目可以通过Gru¨bler′sGr\ddot ubler'sGru¨bler′s公式计算

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

对于平面机构m=3m=3m=3,空间机构m=6m=6m=6,NNN是连杆的数目(包括地面连杆),JJJ是关节数目,fif_ifi​是第iii个关节的自由度数目。如果关节的约束不是相互独立,Gru¨bler′sGr\ddot ubler'sGru¨bler′s提供的是自由度数目的一个下界。

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

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

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

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

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

这A(θ)A(\theta)A(θ)是k×mk\times mk×m矩阵,不能表示为某个函数g(θ)g(\theta)g(θ)的导数,即不存在a任何的g(θ),g:Rm→Rkg(\theta),g:\mathbb R^m \to R^kg(θ),g:Rm→Rk,使得
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

Modern Robotics:机器人的构型空间相关推荐

  1. 机器人学(一):构型空间(C-Space)

    通常情况下,我们对一个机器人提出的最根本问题是,它在哪?这个问题问的是机器人上每一个点的位置在哪.答案就是机器人构型(configuration):机器人上所有点的位置的表示方法.因为机器人使用的是刚 ...

  2. Modern Robotics串联机器人常见的奇异构型

    Modern Robotics串联机器人常见的奇异构型 奇异点的数学定义 机器人末端执行器失去瞬间向一个或多个方向移动的能力时的姿态称为运动学奇异点(kinematic singularity), 或 ...

  3. 现代控制理论(机器人或人工智能方向)补充资料:Python Control Systems Library + Modern Robotics

    现代控制理论广泛应用于智能驾驶和机器人领域,可自行检索资料学习. 在进行研究探索学习时,推荐如下一些资料. 除了掌握Matlab/C++/Java之外,学习一下Python也是不错的选择. Pytho ...

  4. 现代机器人(Modern Robotics):力学,规划,控制读书笔记

    现代机器人:力学,规划,控制读书笔记 在csdn上传主要是可以换积分,文章乱码比较多,有用的话可以来知乎看,目录链接如下,感兴趣可以来看: 现代机器人:力学,规划,控制(chapter1)内容简介 - ...

  5. Modern Robotics正运动学(forward kinematics)

    机器人学之正运动学(forward kinematics) 关键概念 对于一个开链机器人,给定一个固定参考系{s}和一个固定于连杆的连杆的坐标系{b}, 该坐标系表示机器人末端.正运动学(forwar ...

  6. Modern Robotics现代机器人学学习笔记12.2

    12.1 接触动力学(Content Kinematics) 接触运动学是研究两个或两个以上刚体(在考虑不可穿透性约束时)是如何相对移动的.根据接触移动的不同分为滚动和滑动. 12.2 Content ...

  7. 2021-11-05 构型空间(关节空间)路径规划-1

    参考 构型空间概念 C-space 如何理解 用一组向量来完全描述机器人的空间状态,这组向量的集合是构型空间 集合+特定运算=空间

  8. Modern Robotics读书笔记(一)

    Chapter2 Configuration Space 1.机器人位形configuration:机器人所有位置点的描述 对于图a,门的位形可以用一个参数角度表示: 对于图b,平面中的一个点的位形可 ...

  9. 机器人笛卡尔空间与关节空间轨迹规划算法

    本实例为如何生成和模拟插值关节轨迹,从一个初始运动到一个理想的末端执行器姿态. 轨迹的定时是基于手臂工具(EOAT)的一个近似的期望末端速度. 加载KINOVA Gen3刚体树(RBT)机器人模型 r ...

  10. Matlab如何安装并使用Robotics 机器人工具箱

    Matlab如何安装并使用Robotics tool box robotics工具箱下载地址为:https://petercorke.com/resources/downloads/ 如何安装工具箱 ...

最新文章

  1. MVC5 模型 生成EF
  2. Windows下安装spark+Hadoop
  3. 实现一个通用的中英文排序工具
  4. activemq和jms_带有ActiveMQ和Maven的JMS Sender应用程序
  5. 计算文件的md5;vue计算文件md5值;计算图片的md5值;
  6. 近期国际版概念(5月19日益盟消息回顾)
  7. python牛客网编程题_一波优秀的自学编程语言网站
  8. linux应用之Lamp(apache+mysql+php)的源码安装(centos)
  9. 二、K8s Cluster详细安装步骤
  10. jQuery设置文本框回车事件
  11. 第四百零四天 how can I 坚持
  12. 用java设计一个公司局域网_java实现局域网内单对单和多对多通信的设计思路
  13. 【数据资产】数据资产目录建设方法与案例
  14. 设计模式之Builder模式
  15. 网吧服务器发消息,网吧盗号常见途径总结以及解决办法
  16. matlab moveverage,MATLAB在数字图像处理课程教学中的应用
  17. OA厂商与OA用户:相处模式还能这样切换?
  18. hdu1878(判断有无欧拉回路)
  19. 三维粒子特效ae插件Trapcode Particular有效注册版
  20. Spark 算子之groupBy使用

热门文章

  1. 今天是2012年8月14日
  2. u盘制作启动盘后容量变小
  3. springboot整合jpa之Specification
  4. STM32按键总结(低电平有效及上升沿有效)
  5. dell服务器接2k显示器,4K、2K已成主流DELL高分辨率显示器推荐
  6. gimp 架构_[翻译]如何编写GIMP插件(二)
  7. LZJ流体质量计算机价格,LZJ-ⅢC型流体质量计算机
  8. 【毕业设计】基于人脸登录的大学生快递系统
  9. python中字典keys、values、items的使用_Python学习笔记字典之keys()、values()和 items()方法...
  10. Android TV真机测试