如何在编程逻辑中将链接参数和角度(在运动学中)转换为变换矩阵?


10

我作为一名本科生正在从事机器人研究,并且我大部分时间都了解概念数学。但是,在实际实现代码以计算机器人的正向运动学时,我陷入了困境。我只是不了解找到的书或网站的解释方式。

我想计算XYZ角度给出的链路参数(Denavit-Hartenberg的参数),诸如以下:

iαi−1ai−1diθi1000θ12−90∘00θ230a2d3θ34−90∘a3d4θ4590∘00θ56−90∘00θ6

我不明白如何将这个值表转换为获取,最后一个链接的笛卡尔位置和旋转所需的适当转换矩阵。从那里,我希望我能从阅读本书中找出XYZ角,但是任何帮助都将不胜感激。0TN

Answers:


6

维基百科上DH页的DH Matrix部分提供了详细信息。

基本上,您想使用表中的信息来创建一组齐次转换矩阵。我们这样做是因为可以将齐次变换相乘以找到由一个或多个其他帧分隔的帧之间的关系。例如,表示从帧1到帧0 的转换,而表示从帧2到帧1的转换。通过将它们相乘,我们得到从帧2到帧0的转换,即。0T11T20T2=0T11T2

创建每个变换的一种简单方法是为表中的每一列进行齐次变换或齐次旋转矩阵,并将它们相乘。例如,从1到0的转换(例如)是i−1Ti,i=1

0T1=Trans(d1)∗Rot(θ1)∗Trans(a2)∗Rot(α2)

哪里

Trans(d1)=[10000100001d1=00001],

Rot(θ1)=[cos(θ1)−sin(θ1)00sin(θ1)cos(θ1)0000100001],

Trans(a2)=[100a2=0010000100001],

Rot(α2)=[10000cos(α2=0)−sin(α2=0)00sin(α2=0)cos(α2=0)00001]。

在这种情况下

0T1=Rot(θ1)。

一旦完成所有转换,就将它们相乘,例如

0TN=0T1∗1T2...N−1TN。

最后,您可以从均匀变换读取位移矢量(即)。同样,您可以从读出旋转矩阵以找到XYZ角。0TNd=[0TN,14,0TN,24,0TN,34]T0TN


alpha_2不会是-90度吗?
— Grace
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.