本节介绍如何计算自己与object的最近距离,从数学的角度进行推理.
辅助准备
需要一点点画图,因此安装了linux的画图工具pinta
sudo apt install pinta
运行pinta 即可打开,如下
物体距离不同情况
物体之间的距离,可以较为精确的表示为:两个物体之间的最短距离。
特例1
要计算两个盒子之间的间距,必须知道物体侦测盒和我们的距离:如下是最常规的情况
一般情况
而更多情况下,需要侦测距离的车往往与我们呈现,x,y,和具有一定夹角,如下
由于该情况包含第一种情况,因此着重分析这种普遍情况
排除的情况
二者侦测框如果有相接部分,则认为距离为0。
计算距离
数学基础
上述问题类比于数学问题,可抽象出来模型如下:
- 已知两个矩形如下,找到两矩形最短距离R1, R2(minimum而不是infimum)
分析可知:这两个矩形同时满足有界性(bounded)和密闭性(closed)。
则
R1, R2中必有一点在某矩形顶点
且R1, R2必在边界上
对上图进行分析,可将工作细分为:
- 对两个矩形的每个端点都求一次距离另一个矩形边的最短距离
- 比较求出最短距离
模型细化
对于某一端点到某个线段距离的求法如下:
点在线段外
如下,P为端点, A,B为另一矩形端点:
这种情况较为简单,只需要分别求PA,PB距离即可。即distance = minimum(PA, PB)。
- 要判定P投影在AB外,只需要APAB < 0 , 或 BPBA < 0成立即可。
点投影在线段内
如下,P为端点, A,B为另一矩形端点:
这种情况较为普遍,需要利用向量知识求解
- 判定条件是: APAB > 0 且 BABP > 0 (向量形式)
向量层面求解
对于上述点投影在线段内的情况:由velodyne的数据可以知P,A,B三个点的坐标,只需要求出Q点坐标和PQ长度即可。开始求解吧:
求Q的坐标
解算如下(AQ, AB向量同向):
求PQ长度/距离
因为Q的坐标已经出来了,所以d就比较好算
已经解决了最关键的,点到线段的距离如何求解,下一节将在代码层面实现。