万能家电版,,专业问题又来了。。。
本帖最后由 sobranie_1 于 2013-1-11 15:50 编辑MATLAB问题
比如我现在手头有一组GPS点的数据,是汽车传感器记录下来的,比如a(14.56,51.33)b(14.57,51.66)这样子,每秒记录一次,一组数据有20个点这样,我该如何用这些点的位置来判断出汽车是处于直行呢还是转弯呢??行驶方向可以通过2个点的经度纬度分别相减来判别。
之前我的算法太幼稚太NAIV了,我在判断出汽车的方向后,分别给这8个方向代入了1个数,比如东北方向是3,西南是5,然后来判断汽车是左转还是右转还是直行,说穿了就是根据汽车的行驶方向改变来判断。像这样的算法只能判定非常典型的十字路口转弯,因为90°变向嘛,但是有些特定情况就不行了,但是比如汽车从东北10°往东北70°转弯,我的程序就不知道了,因为方向没变。
现在我是想用斜率的变化率来判别汽车是否直行还是转弯,但是觉得很复杂,还在思考中,
有人能给我随便出个点子吗??一个思路也好。
祝大家周末愉快{:7_424:} 你都有行驶方向了,怎么会计算不出转向.....
不过你行驶方向的计算也太粗糙了..... 本帖最后由 老湿不给力 于 2013-1-11 16:29 编辑
建立一个puffer,每获得一个gps数据,就把纬度坐标除经度坐标,把结果跟puffer里的数据比较,如果相同就是直行,如果不同就表示汽车拐弯了,然后把最新的数据存到puffer里,让下一组再来比较。
a(14.56,51.33)b(14.57,51.66)
a: 51.33/14.56=3.525
b: 51.66/14.57=3.545
基本可以判断车子拐了 本帖最后由 JonnySun 于 2013-1-11 23:29 编辑
这是我的第一想法:直走的话各坐标的变化率应该大体相同,或者说在一个Toleranz里,你可以用类似即时变化值和平均变化值相比,时间单位10秒一个间隔(如果GPS更新够快),不超过最大变化值为直行,超过最大变化值数值为正则是左拐,反之又拐,若是反向行使的话就用另外一个大case倒过来判断,有必要的话要建立矩阵来模拟GPS坐标
想法2:两坐标建立向量,求夹角,然后你直接设一个边界角度,绝对值大于了就是拐弯了,正负判断左右拐弯
v1=;%示范一下,具体赋值和获取值需要你自己规划
v2=;
aa = acos(dot(v1, v2)/(sqrt(sum(v1.^2))*sqrt(sum(v2.^2))));
aa = angle(complex(14.57-14.56 , 51.66-51.33)) - angle(complex(X-14.57 , Y-51.66)) ;
subspace(v1', v2')
算夹角啊。。。 总得有个定义吧,什么时候算abbiegen,什么时候只能算是kurve? 劈马甲 发表于 2013-1-11 16:48
总得有个定义吧,什么时候算abbiegen,什么时候只能算是kurve?
还有换道也得考虑 就是一串向量啊,第二个向量(a+b)减去第一个向量(a)=(b),然后求(a)(b)夹角就可以了 然后嫩这个最好先Extrapolation一下,然后把之前采样点和extrapolieren出来的点做一下smooth,好补偿GPS的误差
或者用别的算法也可以
页:
[1]
2