Ezio Malis, Manuel Vargas. Deeper understanding of the homography decomposition for vision-
based control. [Research Report] RR-6303, INRIA. 2007, pp.90.
Introduction
1. 提出Homography decomposition的解析解法,给出了解的解析表达,并描述了两个可能解之间的关系。
2. 基于Homography decomposition,提出position-based visual servoing的控制方案。在该方案中,end-effector渐进收敛到目标位置,并在收敛过程中找到可能解中的正确解。
Analytical method of homography decomposition
![](https://img.haomeiwen.com/i11672723/24b0eaa6f8c802a6.png)
为了分解H,可以考虑如下对称矩阵S:
![](https://img.haomeiwen.com/i11672723/a74a0c52da3365a6.png)
它也可以写成:
![](https://img.haomeiwen.com/i11672723/ecf7e74fe5a38178.png)
于是不妨拆分一下S:
![](https://img.haomeiwen.com/i11672723/579aa9f0b5ecb237.png)
得到x,y之后,经过一些 很多变换,就得到了R,t以及n的解析表达式啦,具体表达论文里给出了summary。瞅一眼,大概是这个画风:【逃。。。
![](https://img.haomeiwen.com/i11672723/197e962a73b3ff2f.png)
![](https://img.haomeiwen.com/i11672723/ceea9bdb8f0821e1.png)
从表达式中的+/-可以发现解并不惟一。事实上,我们得到了8组可能解。但现实的结界使得一些解是不存在的。【平面π一定在照相机前方】,这为我们消除了4组解。【观察到平面π同一些点的两个照相机一定是在平面同一侧的】(visibility constraint),又消除了2组解。
Homography Decomposition也有很多看起来友好一点的数值方法,但解析表达式的优势之一在于,由它就可以推出可能解之间的互推公式,大概长这样:
![](https://img.haomeiwen.com/i11672723/063f06c0a2a2e3d8.png)
Position-based visual servoing based on analytical decomposition
利用analytical decomposition就可以做很多事情啦。
Position-based visual servoing 大概是指一个装有视觉传感器(camera)的机器人,它定位的方法是将看到的像素点转换成三维坐标。
要解决的问题是:
-首先,相机到达一个reference position,并记录该位置拍下的照片。
-现在装有相机的servo在另一个地方。已知信息有「servo在目前位置获取的照片」和「在reference position记录的照片」。
-目标是在不利用额外信息(a priori)的条件下将servo移动到reference position(即相机获取的图像与存储的reference处图像一致)。
系统所能直接控制的(input)是robot的速度。新一时刻的位置可由「上一时刻的位置」和「robot的速度」计算得到。(130)
![](https://img.haomeiwen.com/i11672723/0cc05d4523028618.png)
![](https://img.haomeiwen.com/i11672723/47b341bd24dc115c.png)
由目前位置的图像和reference位置的图像,利用最小二乘估计,可得矩阵H。
![](https://img.haomeiwen.com/i11672723/8c277889c57fb8d9.png)
利用解析分解(未应用visibility constraint)得到四个解:
![](https://img.haomeiwen.com/i11672723/4152e24824608214.png)
用visibility constraint得到两个可能解,不妨假设是Rtna,Rtnb(包含从reference位置到相机此时位置的旋转平移信息以及图像平面的normal)。
Mean-based Control Law
接下来,定义一个error function (e)。(根据e调整input)
想法是:
1.式中Rtna和Rtnb权重应该相同,因为不知道哪个是真实解。
2.当相机到reference位置时,reference和current位于同一处,所以此时Homography分解出来的R和t应该为零,e应该为零。
3.找到e后,定义一个收敛的control law,当系统按此方法控制输入时,error function收敛到零。
由此,作者提出了Mean-based Control Law -- 取两个可能解的均值作为error function:
![](https://img.haomeiwen.com/i11672723/2ab81c0028fa12d3.png)
并引入中间步(相机与reference位置的镜头角度(orientation)相同,但相差一个translation error),当error function为零时,robot到达中间状态而非最终状态。
注意到我们已经得到了Rtna与Rtnb之间的转换公式,于是可以将两个可能解的均值用Rtna表示。
control law定义为:
![](https://img.haomeiwen.com/i11672723/6cb3e0a73d7b19fd.png)
v为robot的速度(input),lambda可以用来调节收敛速率。
还可以定义error function的更新公式:
![](https://img.haomeiwen.com/i11672723/de505f139c3425d2.png)
其中L为:
![](https://img.haomeiwen.com/i11672723/8bee3797a64ea0ab.png)
由此,迭代形成(closed loop control):根据current位置计算error function —>(135)得到输入速度 —> 由速度与之前位置得到新位置 —>(136)计算新的error function —> 决定新输入。
作者还证明了,在这种control law下,et一定会收敛到0(注意这里并不是ta=tb=0,而是ta+tb=0),并且收敛过程中ta的模长不增。er也一定收敛到0,即Ra=Rb。//请自动脑补角标otz。。
注意到以上讨论是假设visibility constraint筛选出的可能解是Rtna,Rtnb。但若可能解是在Rtna和Rtnb-的情况中,et的收敛并未被全部证明,作者只给出了在ta模长小于1时收敛性成立的证明。(但根据模拟结果,似乎不符合条件的情况(即ta模长大于1时)也是稳定的。)
在这个control law的作用下,error function为零时R=0,而translation error并未被消除。于是我们可以得到正确的相机方向(orientation),还可得到ta和tb(满足ta+tb = 0,并且两者只是在在na方向上有偏差)To be more specific:
![](https://img.haomeiwen.com/i11672723/a880f24b84342b6a.png)
![](https://img.haomeiwen.com/i11672723/098f3d274bd85873.png)
Switching Control Law
在得到这个平衡的过程中,真实解的na是始终不变的,而错误解中nb一开始与na“同侧”(因为最初Rtnb解通过了visibility constraint)。而在收敛过程中,nb会逐渐转动,直到它成为反向的na。这意味着自某一时刻起,nb便不再符合visibility constraint。由此可在两个可能解中找到真实解。
![](https://img.haomeiwen.com/i11672723/6c7b133933d94fbc.png)
所以当我们检测到nb是错误解时,便可直接用Rtna作为控制输入的e以更快速地达到稳定状态。但如果直接从可能解均值转变为正确值会使e产生突变(abrupt changes),注意到(137)L的表达式中存在偏导,这样的不光滑的变化会导致控制过程出错。我们需要采用一种平缓的过度 —— a switching control strategy。
在定义error function的时候不直接用两者的均值,而是用加权后的式子,即:
![](https://img.haomeiwen.com/i11672723/a38d872347491445.png)
其中权重的选取需要在还未检测到t-vertical之前值都为1,而在检测到后权重分布改变迅速且光滑。指数似乎是一个好的选择。于是由exponentially decreasing time-function定义权重就会是这样的:
![](https://img.haomeiwen.com/i11672723/e6e4952279194bf5.png)
看一下效果:
![](https://img.haomeiwen.com/i11672723/d4f37c12854eacb1.png)
![](https://img.haomeiwen.com/i11672723/47a64daa631ac921.png)
在作者的参数下,通过14步迭代找到了正确解O.o
【简书能不能插LaTeX啊哭泣。。
网友评论