已知面角,如何求欧拉角,机器人坐标变换怎么求?
问题的来源是这样的:有一个项目,机器人末端的手爪,因为种种情况,设计了一个倾斜的吸盘。需要在3D视觉的引导下,去吸取一个倾斜的物体。
机器人编程工程师嫌手工做工具坐标系比较费时费力,问我能否通过三维软件,求得坐标变换的数值,直接填入机器人系统中的工具坐标系的标定参数中。
我感觉应该挺简单的呀,于是就在三维模型中(我是用solidworks进行的建模)建立了两个坐标系,一个是安装法兰的坐标系,一个是吸盘面的坐标系。
然后测量了两个坐标系的位移,和角度,然后给了机器人编程工程师
结果发现不对(测试方法:走轴坐标ABC,并不能绕坐标系原点旋转,证明坐标系不对)
两个坐标系的位移很好测量。两个坐标系的角度,我是这样测量的,我的solidworks版本低,没法直接给出数,于是我建了三个面,例如要测量Z轴之间的角度,我就测量了两个XY平面的角度。
于是我将这个问题抽象出来了,花了大量的时间研究面角,欧拉角,也没研究明白。发现这个欧拉角,这个三个轴的旋转顺序还有要求,有ZYZ,有XYZ,可能各个品牌的机器人还不一样。
我抽象了模型,问了AI,竟然说我这样的坐标系不存在?
下面是我抽象出来的数学模型:两个坐标系的三个面之间的角度都是30度,坐标系原点重合,求坐标变换欧拉角。
有没有高手给解答一下。
以下截图是这个两个坐标系的空间位置
机械手变换坐标系要是这么容易,那何来机械臂动力学和D-H建模法呢。
先了解点基本常识吧,https://zhuanlan.zhihu.com/p/692369673 楼上正解;五轴机床转换你懂不?你可以把机器人看成一个五轴机床,用DH法建模来求解旋转角度,从机械手末端到基座,或者从基座到机械手末端,都可以推导出来。
还有别问国内的AI,国内的AI,连欧拉角动态旋转和静态旋转的等效性都不会给你正确的推导出来。
不懂,但是AI只能够搜资料,有时候给不了出处的还不能够信.
何况复杂的建模肯定少不了计算的优化.
矩阵肯定少不了需要高效的算法.
我只会简单的x^x+y^2=1
x=cos(theta),y=sin(thea)
这些东西肯定少不了各种知识.
与其纠结,不如先把路走远,再走深.
机械工程师解决不了现场调试的痛,模型上永远都是理论的,何况这么多零件组装在一起的累积误差,对于相机和机械手的计算补偿来说都是灾难。最近几年一直做复合机器人的项目,一直头痛精度问题,都和这些有关系。 直接把机械手模型和治具导入SW/各类机械手软件,模拟点位,然后出各个轴的角度数据就好了 本帖最后由 DaedraMech 于 2025-7-28 12:32 编辑
不知道我有没有正确理解楼主的意思,我先谈谈自己对坐标变换的理解:
坐标变换矩阵既是变换参数(转角、位移),又是变换后坐标系的基底在原坐标系上的坐标组合。
楼主在SW中使用的方法是控制三个正交平面和原平面各成30°,我个人更喜欢直接建立坐标系,由于x轴是YZ面法向量/y轴是XZ面法向量/z轴是XY面法向量,所以我约束3个新坐标轴和原坐标轴各成30°达到效果和楼主应该是一样的。三个基底(,,)有9个未知坐标值,有【3个基底长度为1】、【新基底和原坐标轴各成30°】、【基底之间互成90°】这9个约束一定能在SW中画出3个代表基底的线段,由此即可建立新坐标系,测量线段端点的坐标值即可获得变换矩阵。
我们来测试一下,我们假设工具坐标系上有一点',我们想知道该点在法兰坐标系上的坐标值,那就可以用变换矩阵左乘这个向量:
把获得向量的坐标值输入SW,测量下它在工具坐标系下的坐标,果然还是',变换矩阵是正确的:
如果坐标系还有位移,可以使用齐次变换矩阵进行变换:
上面的演示中,楼主可以看到,矩阵里的坐标值就是特定角度的正弦/余弦值,所以欧拉角可以从这些角度中拆解出来,也就是总变换矩阵可以拆解成一系列单轴角度变换矩阵连续左乘,由此可以表示出坐标系绕各轴旋转的角度和先后顺序,这也就是楼主说的“面角转换为欧拉角”,过程较为麻烦,我个人不推荐这种方式。
本帖最后由 DaedraMech 于 2025-7-28 15:41 编辑
DaedraMech 发表于 2025-7-28 11:56
不知道我有没有正确理解楼主的意思,我先谈谈自己对坐标变换的理解:
坐标变换矩阵既是变换参数(转角、位 ...
一般对算法这边来说最直接的就是拿到变换矩阵了,不知道为什么还要舍近求远获得欧拉角,不过楼主需要的话可以按照下图解方程,获得各轴转角和顺序。另外,方程是多解的,比如【先绕z轴逆时针旋转17.927°,再绕y轴顺时针旋转24.465°,再绕x轴顺时针旋转17.927°】就是其中一个解:
线性代数吗,都忘得差不多了:'(
页:
[1]
2