【玩转机械臂】(二)机器人DH参数模型与正运动学

【玩转机械臂】(二)机器人DH参数模型与正运动学

目录

1  DH参数模型(Denavit-Hartenberg)

1.1  四个DH参数的定义

1.2  机器人坐标系的建立方法

1.3  DH参数表及相应坐标变换

2  机器人正向运动学

2.1  正运动学与雅可比矩阵

3  机器人运动的速度 

3.1  速度在的坐标系间的变换

3.1.1  速度变换的一般形式

3.1.2  用角速度矢量表示坐标系的旋转运动

3.1.3  角速度矢量在不同坐标系之间的传递

3.2  速度在机器人关节间的传递

3.2.1  转动关节向前传递

3.2.2  移动关节向前传递

3.2.3  小结

参考文献

-- 友情链接 --

-- 内容预告 --


笔者注:这是【玩转机械臂】专栏的第(二)篇文章,内容主体来源于笔者近期的学习与思考。作为持续学习的过程,笔者亦是抱着“边学边写”的态度,以做笔记的方式记录下专业领域的相关知识,愿能为更多处于学习或研究初期志同道合的朋友提供参考,文中如有疏漏之处,恳请广大前辈和读者批评指正。文末将附上有前后衔接关系的相应文章链接,欢迎跳转查看。


1  DH参数模型(Denavit-Hartenberg)

1.1  四个DH参数的定义

        记基座为坐标系{0},此后的每个可动关节依次记为关节1,2,...,i,...;第i个关节与下一个关节之间的连接部分称为连杆i。考虑关节i与i-1(“关节0”即为基座),首先标出各自的转轴(或平动轴),如果是基座则取一较方便的、符合实际几何关系的方向(一般为基座坐标系的z轴)为“轴”。

图1 连杆与关节的位置关系

      

  这两轴的关系一共有三种:异面相交平行,由此定义以下两个参数:

连杆长度

a_{i-1}

:轴i-1与轴i的距离。两轴平行时距离容易理解;两轴相交时距离为0;两轴异面时,应先作出公垂线,取公垂线与二者的交点所构成线段的长度为两轴距离。连杆长度是绝对值,只有非负值,不区分方向。
连杆长度描述了相邻两关节间的相对距离关系。

连杆扭角

\alpha_{i-1}

:轴i-1与轴i的夹角。两轴相交时,夹角容易理解;两轴平行时,夹角为0;两轴异面时,应现将其中一者沿公法线平移至另一轴所在平面后再取相交的夹角。确定扭角方向时,应遵循“右手定则”:右手拇指沿

a_{i-1}

所在直线从i-1指向i,四指弯曲方向即为扭角正方向。
关节扭角描述了相邻两关节的相对朝向关系。

        需要注意的是,对于末端关节n而言,由于已经没有关节n+1,末端关节的杆长

a_{n}

与扭角

\alpha_{n}

无实际意义,通常不定义或定义为0,简记为“向后定义,有始无终”。

        在作出各个连杆长度后,考虑相邻的两杆长

a_{i-1}

a_{i}

各自所在的直线(即两轴的公垂线),则依旧有异面、相交和平行三种可能的位置关系,由此继续定义两个参数:

关节距离

d_{i}

:直线

a_{i}

a_{i-1}

的距离,具体定义与连杆长度中两轴距离的定义一致,同样也是绝对值,只有非负值,不区分方向。
关节距离描述了相邻两连杆的相对距离关系。如果关节i是移动关节,则

d_{i}

即为可变的关节变量。

关节转角

\theta_{i}

:直线

a_{i}

a_{i-1}

的夹角,方向同样符合“右手定则”,注意拇指应沿

d_{i}

从i-1指向i。
关节转角描述了相邻两连杆的相对朝向关系。如果关节i是转动关节,则

\theta_{i}

即为可变的关节变量。

需要注意的是,对于关节0(基座)而言,由于没有更靠前的关节,因而

d_{0}

\theta_{0}

无实际意义,通常不定义或定义为0,简记为“向前定义,有终无始”。

        以上四个参数称为DH参数。一旦机器人的机械结构确定,那么每个关节的4个DH参数也随之确定,一般而言不会在机器人运动的过程中改变。可以说,用DH参数就可以抽象出机器人的根本结构,并且最“简明扼要”地描绘出机构的“骨架”、“轮廓”。4个参数的定义及特点汇总如下:

表1 DH参数的定义及其特点
参数名称参数符号参与定义的部件具体定义无定义的部位意义
连杆长度a_{i}

关节i与关节i+1

(向后定义)

轴距离

末端关节

(有始无终)

结构参数
连杆扭角\alpha_{i}轴夹角
关节距离d_{i}

关节i与关节i-1

(向前定义)

杆距离

基座(关节0)

(有终无始)

移动关节变量
关节转角\theta_{i}杆夹角转动关节变量

1.2  机器人坐标系的建立方法

        确定DH参数后,还应当为各个关节建立起相应的坐标系,以便利用基本的坐标变换知识实现不同关节间物理量的变换。常用的基本坐标变换请参见:

【玩转机械臂】(一)机器人学的数学基础:坐标变换与位姿描述https://blog.ZEEKLOG.net/ych0872/article/details/152418042?spm=1001.2014.3001.5501        确定坐标系的步骤是:

  1. 在各个关节上标出转轴移动轴,并作为坐标系的z轴。z轴的方向可任意选取,但一般应尽量保持一致。
  2. 根据已确定好的x轴和z轴,确定y轴。

公垂线

a_{i-1}

x轴,其正方向为从i-1指向i。

对于平行的两轴i-1与i,则公垂线可任意选取(对应第2步中

d_{i}

存在多种取值的情况),但一般应尽量选取能使

d_{i}=0

的公垂线,之后再取与轴i-1的交点为原点。

对于不平行的两轴i-1与i,取公垂线

a_{i-1}

与轴i-1的交点作为系{i-1}的原点

依据标出的轴线分别计算

a_{i}

\alpha_{i}

d_{i}

\theta_{i}

。注意,如果存在平行的两轴,则此时

d_{i}

可能存在多种取值,此时可暂时跳过

d_{i}

的计算,继续进行后续步骤。

  • 在选取DH参数坐标系时如果存在“争议”,事实上大可放心选取,因为不同的建系方式其实并不会影响计算的正确性,只要在每一种建系方式下DH参数的定义都自洽即可。

注意:基座{0}没有转轴或移动轴,因此其z轴不能根据轴位置来确定,应当根据实际几何位置的需求确定;末端{n}没有后续的关节(即没有有效的

a_{i}

),因此其x轴不能根据

a_{i}

来确定,也需要根据实际来确定。

图2 与DH参数相匹配的坐标系

        可以看到,在这样一套与DH参数相匹配的坐标系中,连杆长度

a_{i}

总是沿着坐标系{i}的x轴,连杆扭角

\alpha_{i}

总是绕坐标系{i}的x轴按右手定则旋转而成。关节距离

d_{i}

总是沿着坐标系{i}的z轴,关节转角

\theta_{i}

总是绕坐标系{i}的z轴按右手定则旋转而成。在有了上述的统一规范之后,用坐标变换来描述各机构的位置关系就变得容易了。

1.3  DH参数表及相应坐标变换

        假设机器人机构拥有n个关节,则每个关节(第i个)都拥有4个DH参数,因而一共定义有4*n个参数(关节0上应+2个参数,但关节n上又-2个参数)。将各个参数列在一张(n+1)行、4列的表中,称为DH参数表:

表2 DH参数表
ia_i\alpha_id_i\theta_i
0a_0\alpha_0none (or 0)none (or 0)
1a_1\alpha_1d_1\theta_1
2a_2\alpha_2d_2\theta_2
...............
nnone (or 0)none (or 0)d_n\theta_n

        这张DH参数表就包含了一座机器人最核心的结构信息。当然还有另一种形式的DH参数表,只有n行,如表3所示,这种形式的DH参数表适合用于构建关节间的坐标变换矩阵

表3 DH参数表(另一种形式)
ia_{i-1}\alpha_{i-1}d_i\theta_i
1a_0\alpha_0d_1\theta_1
2a_1\alpha_1d_2\theta_2
3a_2\alpha_2d_3\theta_3
...............
na_{n-1}\alpha_{n-1}d_n\theta_n

        根据DH参数以及先前建立起的坐标系规则,根据坐标的相对变换关系(矩阵右乘)可推知从{i}到{i-1}的坐标齐次变换矩阵为:

^{i-1}_iT=\mathrm{Rot}(x,\alpha_{i-1})\mathrm{Trans}(x,a_{i-1})\mathrm{Rot}(z,\theta_i)\mathrm{Trans}(x,d_i)

.        (1)

        由此,若需要将机器人末端坐标变换到基座,则总的变换矩阵为:

_n^0T={_1^0T}{_2^1T}\cdots{_{n}^{n-1}T}

.        (2)


2  机器人正向运动学

        机器人运动过程中的物理量可分为两类:关节变量广义/操作变量,由变量又分别构成了关节空间操作空间

关节变量:可驱动关节上能够随控制指令而改变的变量,包括转动关节的关节角度和移动关节的移动距离。当机构中有n个可动关节时,关节变量就有n个。

广义/操作变量:一般指机械臂末端或被研究的某点在实际工作需求中的位姿变量,例如空间位置(x,y,z)和姿态角度(θ,φ,ψ)。由于三维空间中运动自由度的限制,广义/操作变量最多只有6个。

        机器人运动学,实际上研究的就是关节空间与广义/操作空间之间的映射关系。由关节空间推知操作空间,即为正运动学;反之,由操作空间推知工作空间,即为逆运动学

        此外,比关节空间更底层的还有驱动器空间[3],其作用是描述驱动装置是如何影响关节运动的,例如差速小车各轮速度与转角、位移之间的关系,关节舵机占空比大小与关节转角之间的关系等。不过驱动器空间与关节空间之间的解算关系求解起来相对容易,本文不展开叙述。

2.1  正运动学与雅可比矩阵

        机器人正运动学将关节变量映射为操作变量,若记关节变量为

\boldsymbol{q}:=\left [ \begin{matrix} q_1 & q_2 & \cdots & q_n \end{matrix} \right ]^\mathrm{T}

,操作变量为

\boldsymbol{r}:=\left [ \begin{matrix} r_1 & r_2 & \cdots & r_m \end{matrix} \right ]^\mathrm{T},\;m\le6

,则正运动学

\boldsymbol{f}:\mathbb{R}^n\to\mathbb{R}^m

可表示为:

\boldsymbol{r}=\boldsymbol{f}(\boldsymbol{q})

.        (3)

        通常有n≥m,因为n<m时总存在某些广义变量的运动是受限的(即缺少相应的自由度),这被称为欠驱动结构。n=m时,任意关节坐标与唯一的广义坐标对应,也就是说每一关节适配一个自由度;n>m时,同一广义坐标可能对应不同的关节坐标,称为关节变量的冗余设计

        一般而言,在有DH参数的情况下,依据(1)(2)两式可以很方便地推出末端位姿矩阵关于关节变量

d_i

\theta_i

的关系,并依据选取的的位置描述方法(如笛卡尔坐标、求坐标等)和姿态描述方法(如欧拉角、RPY等)对位姿矩阵进行变换,就可以获得正运动学关系(3)。

        考虑到正运动学关系是向量函数,假设

\boldsymbol{f}(\cdot)=\left [ \begin{matrix} f_1(\cdot) & f_2(\cdot) & \cdots & f_m(\cdot) \end{matrix} \right ]^\mathrm{T}

,在确定了正运动学关系式的基础上,引入运动的微分,用以下雅可比矩阵(Jacobian Matrix)表示:

\boldsymbol{J}(\boldsymbol{q}):=\dfrac{\partial \boldsymbol{f}(\boldsymbol{q})}{\partial \boldsymbol{q}^{\mathrm{T}}}=\begin{bmatrix} \dfrac{\partial f_1(\boldsymbol{q})}{\partial q_1}& \dfrac{\partial f_1(\boldsymbol{q})}{\partial q_2} &\cdots & \dfrac{\partial f_1(\boldsymbol{q})}{\partial q_n} \\ \\ \dfrac{\partial f_2(\boldsymbol{q})}{\partial q_1}& \dfrac{\partial f_2(\boldsymbol{q})}{\partial q_2} &\cdots & \dfrac{\partial f_2(\boldsymbol{q})}{\partial q_n}\\ \\ \vdots & \vdots & \ddots & \vdots \\ \\ \dfrac{\partial f_m(\boldsymbol{q})}{\partial q_1}& \dfrac{\partial f_m(\boldsymbol{q})}{\partial q_2} &\cdots & \dfrac{\partial f_m(\boldsymbol{q})}{\partial q_n} \end{bmatrix}_{m\times n}

.        (3)

该矩阵反映了瞬时的微小关节变量变化将会引起的广义变量的变化,也就是微分运动量:

\mathrm{d}\boldsymbol{r}=\boldsymbol{J}(\boldsymbol{q})\mathrm{d}\boldsymbol{q}

,        (4)

进而可知两个空间之间瞬时速度的关系:

\dot{\boldsymbol{r}}=\boldsymbol{J}(\boldsymbol{q})\dot{\boldsymbol{q}}

.        (5)

反之,也有

\dot{\boldsymbol{q}}=\boldsymbol{J}(\boldsymbol{q})^{-1}\dot{\boldsymbol{r}}\;\;\;(m=n)

,        (6)

\dot{\boldsymbol{q}}=\boldsymbol{J}(\boldsymbol{q})^{\dagger }\dot{\boldsymbol{r}}\;\;\;(m\neq n)

.        (7)

可见,雅可比矩阵是连接关节变量空间与广义变量空间之间的桥梁

        m=n时,若雅可比矩阵奇异,即

\det{\left [ \boldsymbol{J}(\boldsymbol{q}_s) \right ]}=0

,则称此时的关节点位

\boldsymbol{q}_s

奇异形位。奇异形位意味着此时雅可比矩阵不可逆,方程(5)不存在唯一解;同时,必然存在某些广义变量能直接被其他广义变量表示(线性相关),即关节存在耦合关系、运动受限,2个(甚至更多)关节变量会退化成一个关节变量。

        除此之外,雅可比矩阵奇异时还可以这样理解:奇异形位处,需要关节变量的速度达到无穷大,才能同时使得某个广义变量获得期望的速度,这在现实中显然是不可能的。也就是说,关节变量失去了对某个广义变量独立控制的作用,相应的自由度已经丧失。

        m>n时,本就存在(m-n)个广义变量不受控;m<n时,存在冗余的关节变量,即同一广义速度可能对应多个关节速度,这些冗余的解为绕过奇异位形提供了备选方案。这两种情况下,雅可比矩阵的逆是广义逆(或称伪逆),即式(7)所示。

        需要注意的是,雅可比矩阵不为常量,而是与当前的关节变量

\boldsymbol{q}

有关。


3  机器人运动的速度 

        (5)式揭示了机器人运动过程中关节空间与广义空间之间的速度关系。然而,在具体分析机器人各部位的运动情况时,通常还需要获知同一空间中不同坐标系之间的速度关系。以下将针对速度的坐标变换具体展开叙述。

3.1  速度在的坐标系间的变换

3.1.1  速度变换的一般形式

        现考虑{A}{B}两系与某一动点

\boldsymbol{p}

,则根据上一篇中坐标齐次变换的知识,可知该点在两系之间的位置坐标关系为

^A\boldsymbol{p}={^A_B\boldsymbol{R}}\;{^B\boldsymbol{p}}+{^A\boldsymbol{p}_{B_0}}

.        (8)

若要获得该点的瞬时速度,可在上式两边分别对时间求导,即

^A\boldsymbol{\dot{p}}=\dfrac{\mathrm{d}}{\mathrm{d}t}\left ({^A_B\boldsymbol{R}}\;{^B\boldsymbol{p}} \right )+{^A\boldsymbol{\dot{p}}_{B_0}}

.        (9)

进一步将导数项展开,可知{A}系中p点的速度由三部分构成:

\underbrace{^A\boldsymbol{\dot{p}}}_{\mathrm{motion\;of\;\boldsymbol{p}\;in\;\left \{ A \right \}}}=\;\;\underbrace{\dfrac{\mathrm{d}}{\mathrm{d}t}\left ({^A_B\boldsymbol{R}}\right ){^B\boldsymbol{p}}}_{\mathrm{rotation\;of\;\left \{ B \right \}}}+ \underbrace{​{^A_B\boldsymbol{R}}\;{^B\boldsymbol{\dot{p}}}}_{\mathrm{motion\;of\;\boldsymbol{p}\;in\;\left \{ B \right \}}}+\underbrace{​{^A\boldsymbol{\dot{p}}_{B_0}}}_{\mathrm{translation\;of\;\left \{ B \right \}}}

.        (10)

其中第一项和第三项是由坐标系之间的相对运动引起,分别表示{B}系相对于{A}系的旋转运动平移运动,而与点p自身的运动无关;只有第二项才代表了点p自身的运动属性。

3.1.2  用角速度矢量表示坐标系的旋转运动

        在(10)式中,

\dfrac{\mathrm{d}}{\mathrm{d}t}\left ({^A_B\boldsymbol{R}}\right )

的物理意义实际上并不直观。为此,通常还使用角速度矢量来描述坐标系的旋转运动:

\boldsymbol{\omega}\in\mathbb{R}^3,\;\left \| \boldsymbol{\omega} \right \|=:\Omega

.

        角速度矢量的物理意义是:以单位向量

\boldsymbol{f}:=\dfrac{\boldsymbol{\omega}}{\left \| \boldsymbol{\omega} \right \|}

的某一平行线为轴,依据“右手定则”的方向,按角速度大小

\Omega

旋转。

        需要注意的是,角速度矢量不仅大小可能时变,方向也可能是时变的,因此角速度矢量对时间的直接积分一般没有实际意义。不过,在机器人系统中,由于转轴矢量一般是恒定的,变化的只有角速度大小,因此角速度大小的积分可用于求取刚体的姿态角度,即通用坐标变换,其中。

        若考虑某点的位矢

\boldsymbol{r}

及其角速度矢量

\boldsymbol{\omega}

,当转轴过原点时,该点由于转动而具有的线速度为:

\boldsymbol{v}=\boldsymbol{\omega}\times \boldsymbol{r}=\left | \begin{matrix} \boldsymbol{i} & \boldsymbol{j} &\boldsymbol{k} \\ \omega_x & \omega_y &\omega_z \\ r_x &r_y & r_z \end{matrix} \right |

.        (11)

        如果在当前的坐标系{N}内转轴不过原点,则应先取一个能够使转轴过原点的坐标系{M},在{M}中重新计算得该点的位矢和角速度矢量之后,才能使用式(11)。使用后,还应将转换结果重新变换回原坐标系{N}。

        在表示坐标系{B}相对于系{A}的旋转运动时,使用带角标的角速度矢量

^A\boldsymbol{\omega}_B

来表征。利用式(11),可得{B}内任意一点

{^B\boldsymbol{p}}

因坐标系{B}的旋转而在{A}中具有的线速度为

{^A\boldsymbol{\omega}_{B}}\times\left ({^A_B\boldsymbol{R}}\;{^B\boldsymbol{p}} \right )

,因此有:

\dfrac{\mathrm{d}}{\mathrm{d}t}\left ({^A_B\boldsymbol{R}}\right ){^B\boldsymbol{p}}={^A\boldsymbol{\omega}_{B}}\times\left ({^A_B\boldsymbol{R}}\;{^B\boldsymbol{p}} \right )

.        (12)

        (12)式实际上是提供了描述坐标系旋转运动的另一种方式。在实际应用时,可视情况选择左侧的导数描述形式或右侧的角速度矢量描述形式。

3.1.3  角速度矢量在不同坐标系之间的传递

        角速度矢量本质上是一个三维矢量,在不同坐标系中的坐标形式遵循一般的坐标变换规则。不过,由于角速度矢量是自由矢量,不同起点的角速度矢量在同一坐标系内是可以相加的。现考虑在坐标系{A}中系{C}的角速度矢量,其中以{B}作为中间坐标系,则满足以下关系:

^{A}\boldsymbol{\omega}_C=\underbrace{​{^{A}\boldsymbol{\omega}}_{B}}_\mathrm{rotation\;of\;\left \{ B \right \}}+\underbrace{​{^A_B\boldsymbol{R}}\;{^{B}\boldsymbol{\omega}}_{C}}_\mathrm{rotation\;of\;\left \{ C \right \}\;in\;\left \{ B \right \}}

.        (13)

该式可以这样理解:在{B}看来,{C}理所应当地拥有角速度

^B\boldsymbol{\omega}_C

;但是换到{A}的视角,所有{B}系中的坐标都应进行变换,因此有

{^A_B\boldsymbol{R}}\;{^{B}\boldsymbol{\omega}}_{C}

;与此同时,{B}在{A}还可能拥有自身的角速度

^A\boldsymbol{\omega}_B

,这个角速度应当进一步叠加到{C}上,因此有(13)式。

3.2  速度在机器人关节间的传递

        接下来将以上通用理论运用到具体的机器人机构中:假设现有关节{i-1}与关节{i},以及另一坐标系{0},目的是通过{i-1}将{i}的速度变换至坐标系{0}。

3.2.1  转动关节向前传递

        首先讨论{i}是转动关节的情况。

        1. 角速度的传递:

        以{i-1}为中间坐标系,套用式(13)可得:

^{0}\boldsymbol{\omega}_i={^{0}\boldsymbol{\omega}}_{i-1}+{^{0}_{i-1}\boldsymbol{R}}\;{^{i-1}\boldsymbol{\omega}}_{i}

,

由于{i-1}与{i}是相邻关节,二者之间的关系较简单,因此有

^{i-1}\boldsymbol{\omega}_i={^{i-1}_{i}\boldsymbol{R}}\;{^{i_a}\boldsymbol{\omega}}_{i}

,

需要说明的是,

\left \{ i_a \right \}

表示一个与{i}初始位置重合,但不随{i}的转动而发生变化的绝对坐标系,应注意区分

{^{i_a}\boldsymbol{\omega}}_{i}

{^{i}\boldsymbol{\omega}}_{i}

(实际上

{^{i}\boldsymbol{\omega}}_{i}\equiv \boldsymbol{0}

)。若定义:

{^{i_a}\boldsymbol{\omega}}_{i}=\Omega_i\cdot{\hat{\boldsymbol{z}}}=\begin{bmatrix} 0& 0& \Omega_i \end{bmatrix}^\mathrm{T}

,

则最终的变换式应写作:

^{0}\boldsymbol{\omega}_i={^{0}\boldsymbol{\omega}}_{i-1}+\Omega_i\cdot{^{0}_{i}\boldsymbol{R}}{\hat{\boldsymbol{z}}}

.        (14)

其中,

\Omega_i=\dot{\theta}_i

是关节变量的速度。

        2. 线速度的传递:

        套用式(10)(12)可得:

^{0}\boldsymbol{\dot{p}}_i={^{0}\boldsymbol{\dot{p}}}_{i-1}+{^{0}_{i-1}\boldsymbol{R}}\;{^{i-1}\boldsymbol{\dot{p}}}_{i}+{^0\boldsymbol{\omega}_{i-1}}\times\left ({^0_{i-1}\boldsymbol{R}}\;{^{i-1}\boldsymbol{p}_i} \right )

.

        由于{i}是转动关节,坐标系{i}的原点在{i-1}看来只有转动而无平动,即

{^{0}_{i-1}\boldsymbol{R}}\;{^{i-1}\boldsymbol{\dot{p}}}_{i}=\boldsymbol{0}

.

因此通过下式可将{i}系的线速度传递到{i-1}上,进而再传递至坐标系{0}:

^{0}\boldsymbol{\dot{p}}_i={^{0}\boldsymbol{\dot{p}}}_{i-1}+{^0\boldsymbol{\omega}_{i-1}}\times\left ({^0_{i-1}\boldsymbol{R}}\;{^{i-1}\boldsymbol{p}_i} \right )

,        (15)

其中

\boldsymbol{p}_i

是坐标系{i}的原点在{i-1}中的位置矢量,可由DH参数及(1)式确定:

\begin{bmatrix} {^{i-1}\boldsymbol{p}_i}\\ 1 \end{bmatrix}={_{i}^{i-1}T}\cdot\left [ \begin{matrix} 0 & 0 & 0 & 1 \end{matrix} \right ]^\mathrm{T}

.        (16)

3.2.2  移动关节向前传递

        在移动关节中,{i}只有平动而无转动,因此在{i-1}看来

{^{i-1}\boldsymbol{\omega}}_{i}=\boldsymbol{0}

,故有:

^{0}\boldsymbol{\omega}_i={^{0}\boldsymbol{\omega}}_{i-1}

.        (16)

也就是说,{i}在{0}看来的转动速度完全只由作为中间坐标系的前一关节{i-1}决定。

        而在考虑线速度时,在转动关节中为零的项

{^{i-1}\boldsymbol{\dot{p}}}_{i}={^{i-1}_i\boldsymbol{R}}\;{^i\boldsymbol{\dot{p}}_i}

重新发挥了作用,其中

{^i\boldsymbol{\dot{p}}_i}=v_i\cdot{^i\hat{\boldsymbol{z}}}=\begin{bmatrix} 0& 0& v_i \end{bmatrix}^\mathrm{T}

并且

v_i=\dot{d}_i

是关节的控制量,进而可得线速度的传递公式为:

^{0}\boldsymbol{\dot{p}}_i={^{0}\boldsymbol{\dot{p}}}_{i-1}+v_i\cdot{^{0}_{i}\boldsymbol{R}}\;{^i\hat{\boldsymbol{z}}}+{^0\boldsymbol{\omega}_{i-1}}\times\left ({^0_{i-1}\boldsymbol{R}}\;{^{i-1}\boldsymbol{p}_i} \right )

.        (17)

3.2.3  小结

        综上所述,当关节{i}为转动关节时:

\begin{cases} ^{0}\boldsymbol{\omega}_i={^{0}\boldsymbol{\omega}}_{i-1}+\Omega_i\cdot{^{0}_{i}\boldsymbol{R}}{\hat{\boldsymbol{z}}} \\ \\ ^{0}\boldsymbol{\dot{p}}_i={^{0}\boldsymbol{\dot{p}}}_{i-1}+{^0\boldsymbol{\omega}_{i-1}}\times\left ({^0_{i-1}\boldsymbol{R}}\;{^{i-1}\boldsymbol{p}_i} \right )\end{cases}

.

        当关节{i-1}为移动关节时:

\begin{cases}^{0}\boldsymbol{\omega}_i={^{0}\boldsymbol{\omega}}_{i-1} \\ \\ ^{0}\boldsymbol{\dot{p}}_i={^{0}\boldsymbol{\dot{p}}}_{i-1}+v_i\cdot{^{0}_{i}\boldsymbol{R}}{\hat{\boldsymbol{z}}}+{^0\boldsymbol{\omega}_{i-1}}\times\left ({^0_{i-1}\boldsymbol{R}}\;{^{i-1}\boldsymbol{p}_i} \right )\end{cases}

.

        其中

\begin{bmatrix} {^{i-1}\boldsymbol{p}_i}\\ 1 \end{bmatrix}={_{i}^{i-1}T}\cdot\left [ \begin{matrix} 0 & 0 & 0 & 1 \end{matrix} \right ]^\mathrm{T}

.


         至此本文内容结束。下篇将继续梳理机器人逆运动学方面的知识,敬请关注!


参考文献

[1] 蔡自兴, 谢斌编著. 机器人学[M]. 清华大学出版社, 2015.
[2] 杨洋,苏鹏,郑昱编著.机器人控制理论基础[M]. 机械工业出版社, 2021.
[3] 樊泽明等编著. 机器人学基础[M]. 机械工业出版社, 2022.
[4] (日)白井良明编著. 机器人工程[M]. 科学出版社, 2001.


-- 友情链接 --

【玩转机械臂】(一)机器人学的数学基础:坐标变换与位姿描述

【玩转倒立摆】(一)一阶倒立摆之 - 数学模型的建立

【玩转倒立摆】(二)一阶倒立摆之 - 基于全状态反馈的极点配置方案


-- 内容预告 --

-- 更新中 --

  • 【状态空间漫游记】系列
    【状态空间漫游记】(一)卡尔曼滤波 (Kalman Filter) 算法的基本原理与代码实现
    【状态空间漫游记】(二)模型参考自适应控制(MRAC)之局部参数最优化方法(MIT律)
  • 【玩转倒立摆】系列
    【玩转倒立摆】(三)一阶倒立摆之 - 基于分离原理的状态观测器方案
    【玩转倒立摆】(四)一阶倒立摆之 - 最优线性二次调节器(LQR)方案
  • 【玩转机械臂】系列
    【玩转机械臂】(三)机器人逆运动学及其求解方法

-- 筹备中 --

  • 【玩转无人机】系列

Read more

【汉化中文版】OpenClaw(Clawdbot/Moltbot)第三方开源汉化中文发行版部署全指南:一键脚本/Docker/npm 三模式安装+Ubuntu 环境配置+中文汉化界面适配开源版

【汉化中文版】OpenClaw(Clawdbot/Moltbot)第三方开源汉化中文发行版部署全指南:一键脚本/Docker/npm 三模式安装+Ubuntu 环境配置+中文汉化界面适配开源版

OpenClaw这是什么? OpenClaw(曾用名 Clawdbot / Moltbot)是一个开源的个人 AI 助手平台(GitHub 120k+ Stars),可以通过 WhatsApp、Telegram、Discord 等聊天软件与 AI 交互。简单说就是:在你自己的机器上运行一个 AI 助手,通过常用聊天软件跟它对话。 forks项目仓库 :https://github.com/MaoTouHU/OpenClawChinese 文章目录 * OpenClaw这是什么? * 汉化效果预览 * 环境要求 * 安装方式 * 方式 A:一键脚本(推荐新手) * 方式 B:npm 手动安装 * 方式 C:Docker 部署(服务器推荐) * 首次配置 * 运行初始化向导 * 安装守护进程(

By Ne0inhk
Git 到底是干啥的?零基础小白听完都懂了并且轻松驾驭它

Git 到底是干啥的?零基础小白听完都懂了并且轻松驾驭它

git,通俗的来说就是一种用来多人文件版本合作的工具,但是对一些非程序员的项目小白或者没有程序基础的但是想要入行做程序员的人来说,完完全全理解起来稍微有点困难。这篇文章不像很多文章一样是枯涩的码字教学。现在,我们就用最通俗易懂的方式,让你从零基础理解他,并且使用他。这种教学方法不是把你当白痴的教学方法,反而是让你快速入门深刻理解它,并记住它的教学方法。因为可能说得比较详细,篇幅较长,还得请你耐心的把他看完。 一、git的作用 1、git的版本控制 文件永远不会只有一个版本,这句话我们似乎用亲身经历证明过。你是否有过以下经历👇 📘论文会有“终稿v1、终稿v2、终稿最终版”、 ✍设计稿会有“改版A、改版B、改版C”、 🧺甚至自己写的文章也会来回改十几遍。 🥚更不用说单独只通过一个本地夹操刀一个大型项目了 突然有一天你觉得你的论文、设计稿、文章、项目某一个节点开始脱离了原本的方向或者发生了一些错误,但是你已经对其进行多处修改了,单独再修改不仅费事废经历,还容易发生遗漏。 你或许信誓旦旦的告诉我,你可以这样做。。。👇 论文_最终v1.docx 论文_

By Ne0inhk
【保姆级喂饭教程】Git图形化客户端Sourcetree安装及使用教程

【保姆级喂饭教程】Git图形化客户端Sourcetree安装及使用教程

目录 * 前言 * 一、SourceTree简介 * 二、安装教程 * 三、使用教程 * 1. Local(本地仓库) * 2. Remote(远程仓库) * 3. Clone(克隆仓库) * 4. Add(添加仓库) * 5. Create(创建仓库) * 6. Git Flow * 四、评价总结 * 后记 * 参考文献 前言 在查找Git Flow实现工具的时候,看到了SourceTree,支持Git Flow、GitHub Flow等多种Git工作流,安装简单学习一下。 一、SourceTree简介 Git的GUI客户端有很多,SourceTree是其中比较优秀和流行的一个,如下图: https://git-scm.com/downloads/guis SourceTree是一款免费的Git图形化客户端,

By Ne0inhk
GitHub 7大爆款Skills开源项目:Anthropic官方Skill Creator元技能+Superpowers 27k星任务拆解+Code Review自动代码审查

GitHub 7大爆款Skills开源项目:Anthropic官方Skill Creator元技能+Superpowers 27k星任务拆解+Code Review自动代码审查

Claude Agent Skills工具箱|GitHub 7大开源项目:Anthropic Skill Creator+Superpowers+Code Review+Context Engineering,AI元技能开发与上下文优化指南 技术背景:为什么Claude Skills是2025年AI Agent开发的必选项 随着Anthropic Claude在大模型领域的持续领跑,其Skills(技能)生态已成为AI Agent工程化落地的关键基础设施。与传统Prompt工程不同,Skills通过结构化的SKILL.md文件,将AI能力封装为可复用、可共享、可迭代的模块化组件,实现从"对话式交互"到"任务式执行"的范式转变。 当前,GitHub开源社区已涌现大量高质量的Claude Skills项目,涵盖元技能开发、代码审查自动化、上下文工程优化等核心场景。本文系统梳理7大高星开源项目,附完整技术解析与安全实践指南。 文章目录 * Claude Agent

By Ne0inhk