Xmy 发表于 2024-2-23 11:04:46

如何求得两坐标系的相对位姿

本帖最后由 Xmy 于 2024-2-23 11:09 编辑

工作上遇到的问题,抽象成如下表述:

已知条件:某个刚体通过某种手段提取出关注的曲线C,在坐标系{A}中,对C进行采样,得到N个坐标点,Pi(i=1,...,N),在坐标系{B}中对C采样,得到M个坐标,Qj(j=1,...,M)。

补充说明:M与N不一定相等,而且Pi与Qj没有一一对应的关系,即P1不一定就是Q1,甚至P1在Q的集合中找不到对应的点,但他们都是C上点在不同坐标系的表达。

问:可以通过什么方法,求得坐标系{A}与{B}的关系?

有没有这方面研究的大侠,可以指导一下,谢谢

华丽转身 发表于 2024-2-23 11:16:45

坐标变换。点是同一个点,只是需要他在两个不同坐标系上的坐标。求出B坐标系相对于A坐标系的旋转矩阵就可以了。旋转矩阵可以看做是B三个轴分别在A三个坐标轴的投影,也就是9个方向余弦

Xmy 发表于 2024-2-23 11:44:46

华丽转身 发表于 2024-2-23 11:16
坐标变换。点是同一个点,只是需要他在两个不同坐标系上的坐标。求出B坐标系相对于A坐标系的旋转矩阵就可以 ...

是的,思路是这个思路,但是这么做有个前提,已知变换前后两个点是同一个点,但目前这个条件不满足

回火马氏体 发表于 2024-2-23 11:48:36

终于有一个我懂的题目了

回火马氏体 发表于 2024-2-23 11:58:58

求得坐标系{A}与{B}的关系?

精确求解有点困难,但是粗略求解没问题。

楼主没有说明是3D点还是2D点,我暂且当是3d点。

求坐标系变换关系之前,首先需要明确一点,就是两个坐标系的手性需要统一,否则是无法求出两个坐标系的变换关系的。即如果A是左手性,那么B必须也是左手性,才行。否则无法计算。

如果有对应关系,那么可以简单建模成一个非线性最小二乘问题,Exp(ξ)*Pi = Qj ,然后求解ξ即可,其中ξ是一个6X1的李代数。

但是楼主说,没有对应关系,工业界也有现成的算法,即ICP算法,中文叫最近邻迭代,如果你的描述没有偏差,测量的数据噪声也很小,那么直接调用这个算法,就可以求解出来两个坐标系的变换了,求解出来的也是一个李代数。
可以参考:https://zhuanlan.zhihu.com/p/397926700



ff231 发表于 2024-2-23 12:41:01

本帖最后由 ff231 于 2024-2-23 12:45 编辑

是不是基变换呢

373527271 发表于 2024-2-23 14:12:04

典型的线性变换了,A属于mxn 矩阵,B属于lxk矩阵,
需要先找一个A的基Ia属于nxn , 以及B的基Ib属于kxk, 一个线性
变换矩阵D 就是Ia基通过线性变换D后得到一个新的基就Ib。
D就是这个线性变化矩阵,使得矩阵A线性映射D下的B.

浇花老伯 发表于 2024-2-23 14:45:51

找本有限元的数看下就行了,现成的矩阵直接套

initiate 发表于 2024-2-23 15:26:24

玩机器人的就成天鼓捣这些

373527271 发表于 2024-2-23 23:48:12

本帖最后由 373527271 于 2024-2-23 23:52 编辑

问了一下, ChatGPT .
Matrix A with m x n dimension, and Matrix B with k x l dimension, and m, n for k, l no relation, how do I find one transfer may be linear transfer may be not linear make A via this transfer change to B ?
总的来书,用SVD 分解,应该可以发现两个矩阵之间的某种联系或变换。
页: [1] 2
查看完整版本: 如何求得两坐标系的相对位姿