首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于车道监控的矢量点/叉积

用于车道监控的矢量点/叉积
EN

Stack Overflow用户
提问于 2014-04-13 11:36:10
回答 2查看 221关注 0票数 1

我正在开发一个应用程序,它是在Xcode的mapkit和CoreLocation框架的帮助下监控车辆的速度。但我还必须监控车道跟踪,如识别车辆是否在同一车道上行驶,或者司机改变车道的频率。如果他换得太频繁,我就得提醒他保持警惕。当司机向右转时,必须弹出“向右转”的消息,同样,当司机向左转时,也必须弹出“向左转”的消息。我只被允许使用GPS坐标,没有其他东西。

我该如何处理这个问题呢?我如何使用向量点/叉积来解决这个问题?任何形式的帮助都将不胜感激。

谢谢!!

EN

回答 2

Stack Overflow用户

发布于 2014-04-13 11:43:44

首先,我要确保GPS对于你的项目来说是足够准确的。我对GPS功能没有太多经验,但我不相信它们足够准确,无法检测车道变化。据我所知,唯一准确到这一点的GPS是在原型巴士上,这些原型巴士可以基于GPS在路肩上行驶。无论如何,如果iPhone全球定位系统适合你的需要,你应该学习线性代数和矩阵运算来处理向量。

票数 0
EN

Stack Overflow用户

发布于 2014-05-25 06:20:26

通过首先将其转换为速度和加速度向量,可以使用位置向量来解决此问题。如果时间在这里是恒定的(采样率是固定的和规则的),则可以忽略它,并且可以通过简单的减法来实现从位置到速度的转换。

代码语言:javascript
复制
velX[i] = posX[i+1] - posX[i];
velY[i] = posY[i+1] - posY[i];

accX[i] = velX[i+1] - velX[i];
accY[i] = velY[i+1] - velY[i];

现在我们有了速度和加速度的x,y向量,在不同的时间(i)。你想要的是加速度矢量中垂直于速度矢量的那部分。

A·V / |V|会将加速度矢量投影到速度矢量上。离我们想要的正好90度。这是错误的,但也许我们可以使用这个想法。

与a,b垂直的右旋转向量是-a⟩,b,⟨,⟩,⟨,b。

所以我们可以通过交换数字和求反,找到一个垂直于V的右旋转向量。让我们称其为Vp

ap = A·Vp / |Vp|会将加速度向量投影到指向汽车右侧的向量上(除非他们正在倒车或打滑)。是的,这就是我们想要的。+表示向右加速。-意味着向左加速。

|Vp|的计算成本可能有点高,因为它涉及平方根(毕达哥拉斯定理),但这实际上与|V|相同,即车辆相对于数据样本之间的时间的速度。如果你在跟踪速度,你可能已经在其他地方计算过了。

如果您所需要的只是横向加速度的标量,那么这是可行的。如果您需要实际向量,请计算右侧的单位向量、Vp、/ |Vp|,并按ap进行缩放。

ap =ap (Vp/ |Vp|)

所有这一切的问题是它完全忽略了地图。如果地图显示道路正在转弯,则向左或向右加速并不一定表示车道改变。

因此,你还必须有数据点来指示他们应该采取的路径。将测量到的速度应用于路径数据点,并预测垂直加速度应该是多少。这其中的数学原理与我已经介绍过的基本相同。预测值和实测值之间的差异是变道。

然而,即使它们行驶在一条完美的路径上,由于时间的原因,这些地图数据点很可能不会与您的位置数据点精确匹配。所以你必须做一些插值,来预测,在样本时间,垂直加速度应该是多少。

正如你所看到的,答案包含了大量的数学知识。也许你应该跟进mathmatics的事。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23038830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档