亿加合和智能车制作

标题: 圆弧形前瞻——一种“动态”前瞻的实现方法 [打印本页]

作者: 2585341750    时间: 2018-2-17 12:46
标题: 圆弧形前瞻——一种“动态”前瞻的实现方法
动态前瞻是一个我们做车时常常被提起的话题,但是在与车友交流的过程中,动态前瞻实现的方法与原理,很少被深入的讨论。前瞻作为小车转向最有效的一个参数(我觉得没有之一),他的作用没有充分地被发挥出来,是非常可惜的一件事。圆弧形前瞻是我自己在实际调车过程中使用的算法,经验证具有良好的效果,下面对其原理和方法简单介绍。
此方法适用于摄像组,但是其中的原理可能对电磁组也有可以借鉴的地方。

一、        前瞻的作用
关于前瞻的作用,灰原大佬的帖子《你的车,真的会走线吗?》已经讲述的非常生动与详细了:http://www.znczz.com/thread-226785-1-1.html
这里再简单罗列一下:
1、        将赛道信息提前,给小车的转向控制更多的响应时间,小车拐弯更早,因此转向的能力大大加强
2、        优化路径,低通滤波,对于大弯会更加切内,对于s弯会滤除高频信号走的更直。

前瞻的作用是如此好,为什么我们不一昧的加大前瞻呢?主要原因是因为优化路径的性能有一个极限,当前瞻太远,过度优化的时候,优化路径偏离中线太多,小车就跑出了赛道外。最常见的情况是在十字后面的q弯处挂在内侧的路肩上。


二、        改进的原理
前瞻大到一定程度就会优化路径出问题,然而这并不代表着在前瞻这个坑里没有更多的潜力可以挖掘。
我在实际调车的过程中发现:当前瞻过长时,最先出现问题的时候是那些大弯过分的切内。
这一点其实很容易理解,前瞻对路径的优化中,对大弯的优化程度是最厉害的,会偏离中线很多。如果是允许直冲的小s,即使将路径优化成一条直线也没有问题(当然光靠前瞻做不到这一点)。如果是幅度比较大的“中s”,当前瞻很长的时候也会出问题,但是依然比大弯好很多,并且这种赛道已经很久没有在正式比赛中出现了。

因此,我不怎么严谨地得出以下结论:
对于曲率大的弯道,最合适的前瞻比较小,曲率小的弯道,最合适的前瞻比较大。

对于这个结论我们可以用一个简单的方法验证一下,做一个脑补实验:
有两条赛道,是简单的两个圆,半径一大一小(这样就排除了赛道的频率的影响),小车以相同的速度运行,调节前瞻直到小车稳定时恰好切内为止。我们可以发现,圆的半径越小,最优的前瞻越小。极端情况下,把直道看成半径无穷的圆,即使前瞻再长也不会切内。


这里就可以得出前瞻还可以挖掘潜力的地方了!我们平时使用的固定前瞻,仅仅是适应于“大曲率”的最优前瞻,而对于“小曲率”的赛道,其实可以使用更长的前瞻。
在实际使用的过程中,可以发现动态的前瞻不仅仅是更优的路径,最关键的是在入弯时前瞻较大,响应比较早,大大加强了转弯的能力。

三、改进的方法
现在已经知道了曲率小的时候应该使用较小的前瞻,那么怎么才能知道赛道的曲率?需要计算中线的曲率吗?

我认为计算中线的曲率是完全可行的一种方法!计算出曲率,制定曲率对应的前瞻的映射关系,是完全可以的!关于如何计算曲率的方法网上有很多,不在此阐述了。

我使用的是另外一种方法——圆弧形前瞻,至于和曲率相比哪个方法实际效果更好,由于我没有试验过曲率的动态前瞻不得而知。
[attach]92092[/attach][attach]92093[/attach]
从图中可以看出平时的直线型前瞻和圆弧形前瞻的对比,在大弯时,中线与圆弧的交点到图像底部的距离较小,从而实现了动态前瞻。

由于圆弧的长度 = 角度*半径,因此误差只需要计算角度就可以

具体写程序而言:
遍历整条中线上的点,当这点到圆形的距离的平方达到半径的长度的平方时,计算角度


如果嫌弃这种方法太慢,可以在开机的时候把每个点的距离和误差都算好。到时候直接查表。

把中线附近几个点的误差加权一下可以消除一些的噪声,不需要很多,5个左右就完全足够了,只能对付计算的噪声,给赛道滤波的话这样加权是很低效的做法。


进一步的优化:用椭圆代替圆,d^2 = k*x^2+y^2,k成为了又一个可以调节的参数,类似于改变曲率和前瞻的映射关系。



作者: 神车名为GTR    时间: 2018-2-17 16:22
本帖最后由 神车名为GTR 于 2018-2-17 16:39 编辑

指个错误 —— “圆的半径越小,最优的前瞻越小” & “曲率小的时候应该使用较小的前瞻”


  今年的赛道不存在不可导点,个人认为这种方法没有必要。


作者: 八级大狂风    时间: 2018-2-17 19:00
学长已经无法自拔了
作者: 2585341750    时间: 2018-2-17 19:43
神车名为GTR 发表于 2018-2-17 16:22
指个错误 —— “圆的半径越小,最优的前瞻越小” & “曲率小的时候应该使用较小的前瞻”

今年有不可导的点吗?没有吧,去年的圆环才不可导啊。为啥觉得不可导就不能用呢?去年圆环我用着没问题

作者: 2585341750    时间: 2018-2-17 19:44
八级大狂风 发表于 2018-2-17 19:00
学长已经无法自拔了

没有没有,不碰车了,以前的存货

作者: 八级大狂风    时间: 2018-2-17 20:03
2585341750 发表于 2018-2-17 19:44
没有没有,不碰车了,以前的存货

曲率我都没用过

作者: 神车名为GTR    时间: 2018-2-17 20:46
本帖最后由 神车名为GTR 于 2018-2-17 20:48 编辑
2585341750 发表于 2018-2-17 19:43
今年有不可导的点吗?没有吧,去年的圆环才不可导啊。为啥觉得不可导就不能用呢?去年圆环我用着没问题

  你看错了吧……

  谈一下我的看法吧——

  我个人认为,存在不可导点(例如往届的圆环和之前的人字、直角弯)可以用这种方法进行动态前瞻,以免压住不可导的那个角。(当然也可以像北科那样优化边线,效果更好)

  另外,摄像头加大前瞻是为了优化路径,你的这种方法反而把路径优化弱化掉了,何不减小前瞻呢?(此处是本渣渣猜的,具体比较本应经过实验得到……)

  最后,加权平均本就是动态前瞻。


作者: 2585341750    时间: 2018-2-17 21:16
本帖最后由 2585341750 于 2018-2-17 21:22 编辑
神车名为GTR 发表于 2018-2-17 20:46
  你看错了吧……

  谈一下我的看法吧——

呃……你前面的那句话我确实看错了,但是是否可导并不是问题,这种方法都适用


可能你没有仔细看我的文章,我的方法是弱化了在大弯处的优化程度,防止路径过度切内,同时加大小弯的前瞻,使响应更快


另外,加权平均哪里称得上动态了?实际描一下线就知道了,加权平均真的是很差的滤波器……


作者: eagle丶    时间: 2018-2-17 23:30
对楼主 “曲率小的时候应该使用较小的前瞻”  这个并不是理解的很好。  个人理解,在可信范围内,取适当大的前瞻方便得到更多有用的信息,不是更便于路径的规划么
作者: 2585341750    时间: 2018-2-18 10:33
eagle丶 发表于 2018-2-17 23:30
对楼主 “曲率小的时候应该使用较小的前瞻”  这个并不是理解的很好。  个人理解,在可信范围内,取适当大 ...

呃……我这里的前瞻是指实际取偏差的远近,不是指摄像头看到的最远距离

作者: alexyzhov    时间: 2018-2-21 00:36
顶豪哥
作者: alexyzhov    时间: 2018-2-21 07:08
神车名为GTR 发表于 2018-2-17 16:22
指个错误 —— “圆的半径越小,最优的前瞻越小” & “曲率小的时候应该使用较小的前瞻”

圆环不是可不可导的问题,圆环根本就不是函数....同样的距离下,赛道有二值....
这个处理起来也很简单,在面对圆环的时候,我们只选择某一侧环作为路径,就能得到单值函数了(正如绝大多数队伍圆环入口“补线”的作用)而且处理好了,中线很平滑。根据灰原姐姐给我们的定义,在赛道形状二阶可导的情况下,中线取控制点路径近似最优。楼主的这种做法,显然在圆环也是可行的。。

ps:我们使用陀螺仪计算出来的实际曲率,作为方向控制的微分量,效果也很棒

作者: 小祥祥做车车    时间: 2018-2-21 18:42
技术贴哟!
作者: 杰杰杰杰卢    时间: 2018-2-21 21:07
楼主有图像矫正的代码吗?求分享
作者: Quixote    时间: 2018-2-21 21:28
本帖最后由 Quixote 于 2018-2-21 21:34 编辑

学习学习
思路不错,666

作者: 八级大狂风    时间: 2018-2-24 08:43
力挺豪哥
作者: Billy98    时间: 2018-2-24 12:44
楼主能简单说一下图像的畸变校正吗,感觉你的图像特别好
作者: 2585341750    时间: 2018-2-25 18:51
Billy98 发表于 2018-2-24 12:44
楼主能简单说一下图像的畸变校正吗,感觉你的图像特别好

https://wenku.baidu.com/view/51137d0aed630b1c58eeb525.html
我是参考这篇文章写的

附代码,当时写的很随便,后来为了方便学弟加了一些简单的说明


https://pan.baidu.com/s/1htC6GHA

作者: 2585341750    时间: 2018-2-25 18:53
Billy98 发表于 2018-2-24 12:44
楼主能简单说一下图像的畸变校正吗,感觉你的图像特别好

https://wenku.baidu.com/view/51137d0aed630b1c58eeb525.html
我是参考这篇文章写的

当时随手写的很随便,代码比较凌乱,后来为了方便学弟写了简单的说明

https://pan.baidu.com/s/1htC6GHA

作者: lxj1997    时间: 2018-2-27 17:54
顶,学习学习
作者: 来一杯烈酒    时间: 2018-3-4 16:30
曲率越小,前瞻越远是不是这样呢?楼主?
作者: 2585341750    时间: 2018-3-4 18:51
来一杯烈酒 发表于 2018-3-4 16:30
曲率越小,前瞻越远是不是这样呢?楼主?

我认为是这样的
作者: 来一杯烈酒    时间: 2018-3-4 20:23
2585341750 发表于 2018-3-4 18:51
我认为是这样的

这样的话连续的大S弯曲率要小一点,那么前瞻远的话是不是更要压内侧了呢?

作者: 2585341750    时间: 2018-3-4 22:39
来一杯烈酒 发表于 2018-3-4 20:23
这样的话连续的大S弯曲率要小一点,那么前瞻远的话是不是更要压内侧了呢?

大弯曲率大啊!曲率不是曲率半径

作者: dxa572862121    时间: 2018-3-4 22:39
感谢前辈的无私分享,受教了(??)
作者: 来一杯烈酒    时间: 2018-3-5 14:34
2585341750 发表于 2018-3-4 22:39
大弯曲率大啊!曲率不是曲率半径

还不是很清楚,能加个好友探讨一下吗?
作者: 来一杯烈酒    时间: 2018-3-5 14:35
来一杯烈酒 发表于 2018-3-5 14:34
还不是很清楚,能加个好友探讨一下吗?

qq1823705416





欢迎光临 亿加合和智能车制作 (http://www.znczz.com/) Powered by Discuz! X3.2