智能车制作

标题: 你的车,真的会走线吗? [打印本页]

作者: 灰原姐姐    时间: 2014-11-9 00:43
标题: 你的车,真的会走线吗?
本帖最后由 灰原姐姐 于 2014-11-9 00:52 编辑

1 什么是走线?

这不是很简单的嘛,做过车的都知道嘛。日常口语中的“走线”,就是让车在赛道上行驶出一个漂亮的轨迹,且车沿着这个轨迹跑能够速度非常快。


2 怎么才能走好线?

当然方法很多,但是我说一个疗程短见效快的:加大前瞻!

前瞻越大,走线越平滑,反应越及时,弯道切弯越狠,S走得越直。多数时候程序的调试就是在找尽可能大的前瞻,然后针对这个前瞻优化速度决策。

可是为什么大前瞻能带来好的走线效果呢,要说清楚这一点,还得费一番周折。



作者: 灰原姐姐    时间: 2014-11-9 00:44
本帖最后由 灰原姐姐 于 2014-11-9 00:52 编辑

3 为什么加大前瞻能走好线?

首先科普一个概念:曳物线

曳物线大概是指,一点A做直线运动,另一点B的运动曲线的切线方向一直指向A,且AB的距离固定(严格的定义可以自行百科)。稍微推广一下,若A点不仅是直线运动,而是沿着赛道中心线匀速运动,此时B点的运动轨迹此处称为“广义曳物线”。

经典的小车寻迹算法,首先计算出车正前方某个距离(前瞻)处离赛道的偏移量,然后将偏移量线性映射到前轮的偏向角。假如线性映射的比例系数合适,可以看成前轮的方向正好正对着A点,故车运行的实际轨迹就是“广义曳物线”。当然这只是一个近似,实际情况要复杂得多,不过这样的近似也足矣说明问题了。

以下将沿着赛道中心线运动的A点称为曳点,广义曳物线简称为曳物线。

好了,我们现在来观察一下曳物线与其对应的曳点的轨迹的关系。


作者: 灰原姐姐    时间: 2014-11-9 00:44
本帖最后由 灰原姐姐 于 2014-11-9 00:56 编辑

3.1 曳物线的光滑性

首先,由于曳点的轨迹是连续的(否则不能称为“轨迹”啊),车的轨迹也是连续的,所以车到曳点的向量方向是连续的。而车到曳点的向量本身就是车轨迹的切线,切线方向的连续就可以推出车的轨迹是可导的(或者说其参数方程是可导的)。于是,车以曳物线作为运动轨迹,其轨迹的光滑性得到了一定的保障。如果我们再加一个条件:曳点的轨迹也是可导的(第八届以及以前的赛道),那么就可以保证车到曳点的向量方向是可导的,即可推出车的轨迹是二阶可导。

于是我们可以得到结论:对于第八届或以前的赛道,赛道本身是可导的,那么基于经典巡线算法的小车轨迹是二阶可导的曳物线;对于第九届或第十届的有直角弯的赛道,赛道本身连续但不可导,基于经典算法的小车轨迹是一阶可导的曳物线。

这一点很重要,控制系统的光滑性越好,稳定性越高,通常的不稳定(例如震动,螺丝松动,侧滑)都是发生在间断点上的。举个例子来说,急刹车的时候,车子在完全停稳的一瞬间,人会感觉往后“弹”了一下,那就是因为加速度发生了突变,或者说加速度不可导、不光滑。


作者: 灰原姐姐    时间: 2014-11-9 00:44
本帖最后由 灰原姐姐 于 2014-11-9 00:51 编辑

3.2 曳物线的相位响应

由于曳点在“前”,车在“后”。每当曳点发生变化时,车在离曳点还有一定距离时就已经做出了反馈,可以看成曳物系统对信号的反馈相位提前了。这一点很重要,因为小车控制系统本身是时延系统(例如信号采集的时延,芯片计算的时延,信号输出的时延,执行机构的时延),如果用现在的信号计算现在的输出,肯定来不及,容易造成冲出赛道的情况。必须用未来的信号计算当前的输出。曳物线也是用曳点(未来的状态)来决定曳物线(当前的输出)的,所以造成了相位提前这样的特点。


作者: 灰原姐姐    时间: 2014-11-9 00:44
本帖最后由 灰原姐姐 于 2014-11-9 00:51 编辑

3.3 曳物线的频率响应

事实上,狭义的曳物线是以曳点所在直线为渐近线的曲线,曳物线最终会和曳点所在直线重合,当然重合前有一个暂态过程。而对于广义曳物线,由于曳点的轨迹时刻在变化,曳物线一直处于追随曳点的暂态过程很难渐进重合。所以当曳点的变化频率较小时,曳物线较为“容易”“追上”曳点的“节奏”,达到曳点的“振幅”;而当曳点的变化频率很快时,曳物线很难追上曳点的节奏,达不到曳点的振幅。用行话来说,就是曳物系统能响应低频信号,但是会抑制高频信号。说得再简单粗暴一点就是:曳物系统是低通滤波器。

这是相当赞的一个特性!曳物系统是低通滤波器意味着,当赛道是大跨度,大半径,长距离的类型时,曳物线基本上是严格沿着赛道中心线延伸的;当赛道是小半径急转弯(高频)时,曳物线会以一个柔和的大半径轨迹(低频)通过弯道(切弯);进而当赛道是在小范围内来回反复的类型(S弯)时,曳物线会忽略赛道的来回反复,以此达到S弯直冲的效果。而且低通滤波器的截止频率跟曳物线的曳物距离相关,换一种简单粗暴的说法就是:前瞻越大,急转弯内切越狠,S弯直冲效果越好。


综上三点,曳物线光滑性好、相位提前、是低通滤波器,导致小车沿着曳物线跑稳定性好,反应及时,弯道内切且S弯直冲。而且前瞻越大,光滑性越好,反应越及时,弯道内切越狠,S弯冲得越直……


作者: 灰原姐姐    时间: 2014-11-9 00:45
本帖最后由 灰原姐姐 于 2014-11-9 00:51 编辑

4 坠入泥潭

我们仿佛找到了希望,原来一切都是都是前瞻啊!怪不得电磁跑得最慢啊,杆子伸得再长也没有摄像头看得远啊,怪不得光电跑不过摄像头啊,激光打得再远也还是没有摄像头看得远啊……

于是乎我们一而再再而三地提高前瞻,电磁的杆子伸得越来越长,光电的激光管功率越来越大,摄像头架得越来越高……当然我们还要克服增大前瞻过程中的无数问题:电磁的杆子越长就越晃,需要加固,于是前面越来越重,前轮压力越来越大,结果导致转向不灵敏了,又得重调主销倾角;激光打得太远了容易,相邻的光电容易看混,于是又得加透镜才看得清楚;摄像头太高了,结果导致转弯侧翻。。。我勒个去……


当然这都没什么,总能解决的,麻烦的还在后头。


前瞻太长了转弯容易过度内切出赛道,特别是在270度弯,不知道多少队栽在270度弯过度内切上。于是摄像头笑了,哥有480行数据,搞动态前瞻!


前瞻太长了,赛道的偏移量远远大于近处的,视野太窄了看不过来。光电队发大绝招了,摇头!


前瞻太长了,电磁车容易串道,也发大绝招了,双排电感!


再然后,摄像头也看不到巨大的偏移量了,上广角镜头了;激光管上坡道就看不到了,于是出现点头加摇头的二自由度光电车了;最后连电磁组都开始摇头了。


再再然后,摄像头要考虑桶形失真了,二自由度的舵机固定件已经无法用手工作坊固定了,得上机床了,电磁组的屁股上得加配重了……


当然这也都没什么,这些方法也总能实现,提升走线效果。问题在于,我们渐渐地发现增大前瞻并不是将问题的解直接向最优解靠近,而只是大致上有更优的倾向,但总在别的某些方面造成了更多的麻烦,于是乎总要增加别的补偿来解决这些麻烦。于是整个系统围绕大前瞻变得越来越复杂,参数越来越多,调节起来越来越复杂。



作者: 灰原姐姐    时间: 2014-11-9 00:45
本帖最后由 灰原姐姐 于 2014-11-9 00:49 编辑

5 问题到底出在哪里?

诸位有没有注意到,整个走曳物线的经典寻迹算法,从头到尾,压根没有提“赛道宽度”这玩意?

这就好理解了,这个算法只知道赛道中心线,压根不知道宽度,自然会出现过度切弯导致从内测出界的现象。这不经令人思索,一个连宽度都不知道的弱智算法,怎么会出现我们之前所说的那么多好的特性呢?不仅这点,还有一件说出来另该算法闻风丧胆的致命缺点:你TMD入弯之前怎么不先走外道啊?

让我们回头来思考一下,这个曳物线算法到底是怎么产生的呢?

首先我们是根据传感器的数据得出了一个表征车相对于赛道的偏移情况,然后凭直觉将这个偏移线性(或这说是单调)映射到前轮的方向角,然后发现惊讶地发现,此时只要给后轮一个速度,小车就奇迹般地沿着赛道奔跑了。然后我们调节这个算法的各个参数,使得车奔跑的路线逐渐变优,过程中得出一些心得,遇到一些问题。然后不断调节、迭代,添加新的补偿,设计更复杂的策略,引入多的变量。

经过一段时间的调试、观察与思考,我们发现原来车走的路线是一条曳物线啊,曳点就是某个前瞻下的赛道中心点。然后我们对曳物线这个概念进行了分析,得出了其光滑性,相位响应,频率响应等特性。这些特性印证了之前调试时发现的各种现象,并且对之后的调试做出了一定的指导(兴许你没有做这番分析也不知道车在走曳物线,不过,anyway,反正最后做的事情是一样的)。

至此我们终于回过味来了:原来这个算法根本不是我们精心设计出来的!原来这个算法是我们最初凭借直觉瞎凑出来的,只不过它恰巧具有了某些很好的特性,最终使我们陷入一个局部最优的陷阱。


对该算法的审判还没完呢,我现在要给它致命一击:你T喵D压根不知道自己在赛车!!!

假设我是一个赛车教练,手下有两个学赛车的徒弟,一个笨一个聪明。笨笨实在是太笨了简直没法教,我只好对笨笨说:“你看,10米开外的赛道,看到了吗?你假想着十米开外的赛道正中间有一块红烧肉,你死死地盯住它,把方向对准它……”

biu~~~笨笨飞奔出去了。跑得还可以嘛,哎哟,不错哟!


“聪聪,你看,假想十米开外的赛道上有一块红烧肉……”

“我不喜欢吃红烧肉”

“那假想是哈根达斯”

“我也不喜欢吃雪糕”

“无所谓啦,总之是你喜欢吃的某样东西”

“你到底想说什么?不就是想告诉我过弯要切内道吗?”

“诶!!!对对对!!!对!对!对!就是这意思”

“早说嘛”

“对!对!就是切弯哦!看好你哦!”

biubiubiu~~~~

聪聪轻易地超过了笨笨,而笨笨在一个赛道较窄的弯道因切弯过度导致内轮打滑车辆失控永远地离开了我们……

好了我现在问,笨笨为什么笨啊?因为笨笨根本不知道自己在赛车,他只知道看准一个点,往那个方向跑。而聪聪知道,“曳物”只是手段,目的是要跑出一条在赛道范围内的速度最快的曲线。笨笨是盲目的,他在盯住曳点看的时候,完全不知道赛车已经过度内切了,因此他也完全不知道在入弯前要先靠外侧。聪聪则会注意路线是否在赛道内,并且一旦他奔着把总时间缩短的目标,根本不用教,他自然就能发现外侧入弯能使弯道过得更流畅。


作者: 灰原姐姐    时间: 2014-11-9 00:45
本帖最后由 灰原姐姐 于 2014-11-9 00:47 编辑

6 答案

让我们进入这篇文章的主题(什么?还没进入主题?):你的车,真的会走线吗?不!不会,他只是在某个目标下盲目的前进,正巧,如果朝着这个目标走,能走出一条还不错的线路。其实他并不清楚自己在干什么,并没有回过头来看看自己的路线,并没有发现自己需要切弯,需要直冲S弯。他只是盲目地前进。而人在这个过程里做的事情就是,不断修改这个盲目的系统的各个参数,使它盲目地前进所留下的轨迹逐渐符合自己的预期,看起来更不错。

好了,这便是我对本文题目的解答。

不过各位看官不要担心,你们都耐着性子看到这里了,我能不给你们指明方向吗?

其实办法简单地说就一句话:让小车自己计算出最优路线!

(不行就较优路线,总之这条路线是自己计算出来的,不是瞎跑出来的)


作者: 灰原姐姐    时间: 2014-11-9 00:46
本帖最后由 灰原姐姐 于 2014-11-9 00:57 编辑

7 路径规划

我们先揣摩一下聪聪的算法。他看到赛道后,首先是大脑对赛道有一个整体的认识(而不是只提取出一个曳点),然后在他大脑中这个虚拟的赛道上绘制一条虚拟的路径,最后控制现实中的车在实际的赛道上真实地跑出他心中绘制的那条路径。

把这个过程用程序来描述就是:先采集信号,建立出车前方一定距离内的赛道模型,在模型中规划(“规划”这个词用得非常好,翻译成英文就叫program)出一条路径,要求这条路径在赛道范围内,光滑,曲率小,最重要的要求是,如果车以最优的速度决策沿着这条路径跑,时间最短。其中这个路径的起点是车体本身,向前延伸,到前瞻处。最后呢,让车沿着这条路径跑就行了,具体做法是:把路径的起点处的切线方向直接映射到前轮方向。这样一来就好了,小车清除地知道自己应该内切,而不是盲目地追随一个点最后看起来内切了而不自知。

剩下的问题就是,如果精确地建立赛道模型,如果规划一条更好的路径。当然上面只是一个大致的描述,具体实现过程还是有点复杂的。建立赛道模型和规划最优(较优)路径等都不是一句两句能讲清楚的。具体去看我的毕设论文吧。


最后问大家一个思考题:你终于知道电磁组为什么取消赛道边界了吧?


作者: 村雨    时间: 2014-11-9 00:47
灰原姐姐好久没发帖了先顶了再看~
作者: justlxy    时间: 2014-11-9 00:53
先赞一个 !
作者: 灰原哥哥    时间: 2014-11-9 00:53
村雨 发表于 2014-11-9 00:47
灰原姐姐好久没发帖了先顶了再看~

早点睡啊

作者: justlxy    时间: 2014-11-9 00:58
第十届电磁组的边界好像又回来了!!!1
作者: 灰原哥哥    时间: 2014-11-9 00:59
来,发个五年前白骑士的视频给大家开开眼,
http://www.znczz.com/forum.php?mod=viewthread&tid=105765&highlight=
瞧瞧人家那逆透视变换做的,
瞧瞧人家那外道入弯……
师弟师妹们加油吧



作者: 灰原哥哥    时间: 2014-11-9 01:01
justlxy 发表于 2014-11-9 00:58
第十届电磁组的边界好像又回来了!!!1

仲裁方法太麻烦了,sigh

作者: Sydney    时间: 2014-11-9 01:21
顶~
作者: seakid    时间: 2014-11-9 02:02
逆透视倒是做出来了,可惜下届没人会用。。
罢了。。。不操心了。。。。。。。。。。。。。。。。。。。。。
作者: seazhui    时间: 2014-11-9 02:11
这么一说。。。觉得挺有道理的。。。
作者: 2012.6.17.23    时间: 2014-11-9 07:14
:lol:lol
作者: 2012.6.17.23    时间: 2014-11-9 07:15
毕设在哪里看啊?灰原姐姐
作者: 泰庆电子    时间: 2014-11-9 08:25
顶,说的太好了!~
作者: SnF_vy    时间: 2014-11-9 08:30
同求毕业设计   929594581@qq.com
作者: 傲凌    时间: 2014-11-9 08:41

作者: flyfreescale    时间: 2014-11-9 08:47
赞,另求灰原姐姐的毕设
作者: laughtianxia    时间: 2014-11-9 09:01

作者: lions    时间: 2014-11-9 09:03
:lol:lol
作者: gaopeng123    时间: 2014-11-9 09:27
灰原姐姐论文在哪里:D
作者: 南宇    时间: 2014-11-9 09:36

作者: allenanswerzq    时间: 2014-11-9 09:45
又开眼界了。
作者: 1200    时间: 2014-11-9 09:54
你看,10米开外的赛道,看到了吗?你假想着十米开外的赛道正中间有一块红烧肉,你死死地盯住它,把方向对准它……
作者: 今天。明天。    时间: 2014-11-9 09:58

作者: WX001    时间: 2014-11-9 09:59
顶顶顶
作者: 麦田里的守望者    时间: 2014-11-9 10:00
灰原姐姐,支持
作者: 夜雨寒    时间: 2014-11-9 10:07
多谢灰原姐姐,另求毕业论文55539634@qq.com不胜感激
作者: HAWX    时间: 2014-11-9 10:13
求毕设648636036@qq.com,太赞了
作者: Okabe    时间: 2014-11-9 10:25
感谢科普

补充内容 (2014-11-9 11:42):
另求灰原姐姐毕设  598507680@qq.com
作者: 何俊    时间: 2014-11-9 10:31
大赞啊,灰原姐姐重出江湖,都是精品!
作者: 灰原哥哥    时间: 2014-11-9 10:47
何俊 发表于 2014-11-9 10:31
大赞啊,灰原姐姐重出江湖,都是精品!

一直在潜水,从未离开

作者: 小鸿Hugh    时间: 2014-11-9 10:53
赞,马克
作者: allenanswerzq    时间: 2014-11-9 11:01
灰原哥哥 发表于 2014-11-9 10:47
一直在潜水,从未离开

姐姐现在年龄应该好大了

作者: 葱葱哥    时间: 2014-11-9 11:02
仔细看完了确实讲的很不错的!
作者: 普菲特科技    时间: 2014-11-9 11:02

作者: dh867699576    时间: 2014-11-9 11:10

作者: dalaohua    时间: 2014-11-9 11:13

作者: cjn    时间: 2014-11-9 11:14
叼叼地
作者: 机器人没名字    时间: 2014-11-9 11:22
好久不见
作者: 竹音清影    时间: 2014-11-9 11:45
浪险
作者: wensenchao    时间: 2014-11-9 11:57
山寨的麼
作者: Roy..    时间: 2014-11-9 12:05

作者: Crofy゛_▍    时间: 2014-11-9 12:05
不明觉厉
作者: 六步上篮    时间: 2014-11-9 12:15
。。。。。。好厉害
作者: 空有一人    时间: 2014-11-9 12:15
楼主大晚上分享这好的东西,也是蛮拼的。
作者: sky兰    时间: 2014-11-9 12:29
好像很有用的样子,不过我还没有看懂!
作者: 寒江    时间: 2014-11-9 12:51
又见灰原姐姐:lol:lol
作者: pk5434    时间: 2014-11-9 12:55
大赞
作者: 後ゎ誨ザ    时间: 2014-11-9 13:30
赞一个
作者: 夜夜夜夜丶    时间: 2014-11-9 13:40
:lol:victory:
作者: Shadows    时间: 2014-11-9 13:43
最后一句,神补刀,,,,,
作者: 李威风12138    时间: 2014-11-9 13:46
:o:o:o
作者: [Dan]    时间: 2014-11-9 13:49
有点懵啊,似懂非懂的,求灰原姐毕设论文,573170639@qq.com
作者: 多一度热爱    时间: 2014-11-9 13:49
灰原姐姐,同在安徽,求你毕业论文:lol:lol81648140@qq.com
作者: 村口张si傅    时间: 2014-11-9 14:09
先顶再看!
作者: Solid    时间: 2014-11-9 14:35
这些理论作为指导倒是不错的,不过也只能搞搞仿真而已,具体实现起来太过复杂,实用性不大。
作者: haomi    时间: 2014-11-9 14:40
听后如醍醐灌顶,求姐姐的毕设,万分感激。1751920835@qq.co m
作者: :└.未知數`    时间: 2014-11-9 14:58
看不太懂,先收藏
作者: 囧zZZ    时间: 2014-11-9 15:04

作者: Arthur打酱油    时间: 2014-11-9 15:13
马一个慢慢研究。。
作者: 发遥遥无期    时间: 2014-11-9 15:26
大赞!
作者: quex    时间: 2014-11-9 15:48
求毕设
作者: 迷路在未来    时间: 2014-11-9 16:25
求毕设  384076958@qq.com  谢谢啦
作者: 动感小麦兜    时间: 2014-11-9 16:32
赞一个
作者: q5974    时间: 2014-11-9 16:45
haomi 发表于 2014-11-9 14:40
听后如醍醐灌顶,求姐姐的毕设,万分感激。 m

哈哈,被我抓到了,期待你把这个弄出来

作者: haomi    时间: 2014-11-9 16:51
q5974 发表于 2014-11-9 16:45
哈哈,被我抓到了,期待你把这个弄出来

但愿如此吧

作者: Mr.serious    时间: 2014-11-9 17:02
:victory::victory:
作者: 蒙牛随变    时间: 2014-11-9 17:25
毕设论文在哪里可以看啊???跪求!!!我的QQ邮箱是1072465199@qq.com,这篇文章写得太好,赞一个
作者: 邵志伟    时间: 2014-11-9 17:48
看见灰原姐姐  了
作者: 板正的    时间: 2014-11-9 17:50
灰原姐姐啊  哈哈
作者: 君威    时间: 2014-11-9 18:30
呵呵
作者: 1249844726    时间: 2014-11-9 19:09
灰原姐姐。你是我偶像。。。:$:$
作者: 直立摄像头    时间: 2014-11-9 20:08
灰原哥别来无恙
作者: zhangxin1992109    时间: 2014-11-9 20:18

作者: 杨先生    时间: 2014-11-9 20:50
学习了
作者: 飞一般的智能车    时间: 2014-11-9 20:55
赞!
作者: 小橙子    时间: 2014-11-9 21:10

作者: HOLKIN    时间: 2014-11-9 23:20
我只是笨笨……
作者: tkyouling    时间: 2014-11-10 00:01
值得思考
作者: abacrya、军    时间: 2014-11-10 08:45
之前调车的时候也有这样的疑问,总觉得光靠PID不能解决问题,,,赞一个,,,顺便发一个毕业设计的报告把:645106160@qq.com    谢谢!
作者: wijop    时间: 2014-11-10 08:51
马克了
作者: 坦诚相待    时间: 2014-11-10 08:52

作者: 九劫岛    时间: 2014-11-10 11:49
灰原姐姐,你的毕设论文在哪a
作者: 何所矢、何所嘚    时间: 2014-11-10 12:40
毕设论文  到哪里看呢  。
作者: luhan2014    时间: 2014-11-10 12:43

作者: demon_123    时间: 2014-11-10 13:02

作者: 飘柔似水    时间: 2014-11-10 15:13

作者: 民O(∩_∩)O    时间: 2014-11-10 15:15
厉害
作者: 我们的故事很多    时间: 2014-11-10 15:42
mark
坐等毕设链接
作者: DLSN    时间: 2014-11-10 22:19

作者: 围场最黑窝窝头    时间: 2014-11-11 09:27
喜欢赛车必须要看F1,多玩真实性大的场地赛车游戏例如f1系列极品飞车13和15真实赛车等。
作者: 灰原姐姐    时间: 2014-11-11 13:44
围场最黑窝窝头 发表于 2014-11-11 09:27
喜欢赛车必须要看F1,多玩真实性大的场地赛车游戏例如f1系列极品飞车13和15真实赛车等。

得了吧,极品飞车就是典型的不真实赛车游戏的典范

作者: 丿Zero    时间: 2014-11-11 14:47
开眼了。。。




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2