OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2282|回复: 1

已知旋转角度求坐标

[复制链接]

18

主题

57

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
405
金钱
405
注册时间
2017-1-18
在线时间
180 小时
发表于 2017-12-4 16:33:02 | 显示全部楼层 |阅读模式
20金钱
本帖最后由 1253171658 于 2017-12-4 17:05 编辑

做一个多自由度的手臂,在已知各关节旋转角度的情况下,怎么用四元素求解各关节坐标最简单。目前我只会一个一个自由度的求。


最佳答案

查看完整内容[请看2#楼]

四元数只能表示旋转无法表示位移(也就是你机械臂每个关节到相邻关节的长度),因此只用四元数的话这个问题无解。 但是可以使用齐次坐标的方法来求解(当然用普通坐标+旋转矩阵+平移向量也可以,但是由于非线性表示的关系,你计算的关节点数越多,产生的加项越多,计算速度越慢)。 假设现在有三个关节P1 P2 P3依次相连,并且旋转角度已知。可以定义P1的当前位置为世界坐标系原点,三个关节的旋转角度已知,可以用欧拉角来表示 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

756

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4163
金钱
4163
注册时间
2017-10-24
在线时间
251 小时
发表于 2017-12-4 16:33:03 | 显示全部楼层
四元数只能表示旋转无法表示位移(也就是你机械臂每个关节到相邻关节的长度),因此只用四元数的话这个问题无解。

但是可以使用齐次坐标的方法来求解(当然用普通坐标+旋转矩阵+平移向量也可以,但是由于非线性表示的关系,你计算的关节点数越多,产生的加项越多,计算速度越慢)。
假设现在有三个关节P1 P2 P3依次相连,并且旋转角度已知。可以定义P1的当前位置为世界坐标系原点,三个关节的旋转角度已知,可以用欧拉角来表示(当然你用四元数也行),可以使用三个旋转向量表示这三个旋转,进而可以用Rodrigues公式转换为三个关节各自的旋转矩阵R1 R2 R3(如果是用四元数表示旋转,也可以利用结论直接转换,速度更快些)。这样旋转的部分搞定了。

再搞定平移。三个关节各自的旋转欧拉角已知,关节到关节之间的长度已知,可以直接利用三角函数关系求其在三个坐标轴上的长度分量,分别构成向量t1 t2 t3.

利用已知的旋转矩阵和平移向量,可以构成三个坐标点的齐次坐标下的变换矩阵T1 T2 T3

设P1点坐标为P1=(0,0,0)T,T表示转置,使用粗斜体P1表示其齐次坐标的话,那么P3点坐标可以这样计算:

P3=T2·T1·P1

P3可以取P3的前三行,进而得到P3点坐标。

由于论坛上编辑数学公式异常困难,我也只能简单一提。除了这种方法还可以使用李群SE(3)和相应的李代数se(3),利用扰动模型近似求导做位姿估计。不过这个有些难度,我也没有学明白。

这些东西数学上的东西比较多,建议找机器人运动控制、三维刚体运动学相关的书籍研究研究。



十六进制带我飞。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-9 20:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表