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

我想根据给定的链接参数(Denavit-Hartenberg参数)来计算XYZ角度,例如以下所示:

$$ \ begin {array} {ccc}
\ bf {i}和\ bf {\ alpha_i-1}和\ bf {a_i-1}和\ bf {d_i }&\ bf {\ theta_i} \\
\\
1&0&0&0&\ theta_1 \\
2&-90 ^ {\ circ}&0&0& \ theta_2 \\
3&0&a_2&d_3&\ theta_3 \\
4&-90 ^ {\ circ}&a_3&d_4&\ theta_4 \\
5&90 ^ {\ circ}&0&0&\ theta_5 \\
6&-90 ^ {\ circ}&0&0&\ theta_6 \\\
\ end {array} $$

我不明白如何将该值表转换为获得$ ^ 0T_N $,最后一个链接的笛卡尔位置和旋转所需的适当转换矩阵。从那里,我希望我能从阅读本书中找出X-Y-Z角,但是会有所帮助。

#1 楼

Wikipedia上DH页的DH Matrix部分提供了详细信息。

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

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

$ ^ 0T_1 = Trans(d_1)* Rot(\ theta_1)* Trans (a_2)* Rot(\ alpha_2)$

其中

$ Trans(d_1)= \ begin {bmatrix} 1&0&0&0 \\ 0&1 &0&0 \\ 0&0&1&\ bf {d_1 = 0} \\ 0&0&0&1 \ end {bmatrix},$

$ Rot(\ theta_1)= \ begin {bmatrix} \ text {cos}(\ bf {\ theta_1})&-\ text {sin}(\ bf {\ theta_1})&0&0 \\ \ text {sin}(\ bf {\ theta_1 })&\ text {cos}(\ bf {\ theta_1})&0&0 \\ 0&0&1&0 \\ 0&0&0&1 \ end {bmatrix},$

$ Trans(a_2)= \ begin {bmatrix} 1&0&0&\ bf {a_2 = 0} \\ 0&1&0&0 \\ 0&0&1&0 \\ 0&0 &0&1 \ end {bmatrix},$

$ Rot(\ alpha_2)= \ begin {bmatrix} 1&0&0&0 \\ 0&\ text {cos}(\ bf {\ alpha_2 = 0})&-\ text {sin}(\ bf {\ alpha_2 = 0})&0 \\ 0&\ text {sin}(\ bf {\ alpha_2 = 0})&\ text {cos }(\ bf {\ alpha_2 = 0})&0 \\ 0&0&0&1 \ end {bmatrix} $。

在这种情况下

$ ^ 0T1 = Rot(\ theta_1)$。

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

$ ^ 0T_N = ^ 0T_1 * ^ 1T_2 ... ^ {N-1} T_N $。最后,您可以从均匀变换$ ^ 0T_N $中读取位移矢量(即$ d = [^ 0T_ {N,14},^ 0T_ {N,24},^ 0T_ {N,34}] ^ T $)。同样,您可以从$ ^ 0T_N $读出旋转矩阵以找到X-Y-Z角。

评论


$ \ begingroup $
alpha_2不会是-90度吗?
$ \ endgroup $
–恩典
13年3月18日在7:18