开篇,Pos2Angle

        看到文章的各位朋友,首先对你说声感谢,感谢你愿意看一眼,对作者即是莫大的欣慰,这是我在CSDN的第一篇文章,我把它叫做开篇,谢谢。

        首先做一个提纲挈领的概要性说明,以便大家认识我,也为了说清写这篇blog以及后续可能会写的blog的一个缘由。我也是一个技术人,大学学的是控制、自动化,工作之后在软件的路上越走越黑,主要技术栈是C++、业务线是军工,近一年多“被迫”转入自动驾驶,技术栈改道MATLAB/Simulink,这个“被迫”以后再解释吧,确实很无奈。

        写文章不是完全技术贴,毕竟技术能力、个人职位没达到给人布道的级别,但毕竟是“工程师”,总会离不了技术,也会以技术开篇;年纪不小了,对工作对人生也算有了点儿不成功的体会,就在这里吐吐苦水吧。

        好了进入正题,标题是“Pos2Angle”,是我做自动驾驶(主要是ADAS横向控制)自己创造的一个名词。ADAS的横向控制,以常说的LKA为例,我们做横向控制的目的是使车辆保持在安全的行车路径上,具化一点儿说比如将车辆拉回距离车道线内边缘1.4米以内,乍一看这是一个位置控制的需求,不过深入分析实则不尽然,我们要挖掘隐性需求。

        仔细想我们人驾驶是怎样的?车偏出去了吓我们一大跳,我们把它拉回来,那什么时候我们这种恐慌心理才能真正消除呢?仅仅是远离车道线了就算吗?好像不是,那还缺了什么?是车头,是车头朝向!光位置安全了还不行,车头还得是在车道内基本正朝前!往左歪往右歪都不行,因为六七十迈甚至一百迈的高速,车头一偏立马又出去了,这就是隐藏的需求!总结一下,车道保持完整的功能性能要求应该是:车辆距离车道线≥一定数值且平行于车道线行驶。

        好了,啰里啰唆做了个业务背景的铺垫,我们继续深入分析,落到Pos2Angle的计算上来。都知道车道线方程4个系数,以直道为例我们只谈C0C1,分别代表位置Pos和角度Angle。有用Pos做控制的有用Angle做控制的,后来我就想,位置和角度到底哪个更重要一些,谁做master谁做slave?这个问题纠结了我很久。后来某一天思路打开,它们都是关键参数,没有主次之分!包括曲率C2也是!那怎么办,一个主一个辅的策略走不通了,怎样把它俩结合起来呢?

        灵光一闪间办法有了。前期我都是基于角度做控制,PID,如果位置角度并重,我想到的办法是直观上仍用角度控制,但角度的ref要拿位置做,重点来了,意义不同的两个量怎么在一套体系里用?这里要引入转化、引入思想。我们的功能目标不是“位置怎样…且角度怎样…”么?这是一个同步的关系,比如车辆左边缘距离左车道线内边缘0.1m时我要求以-2°的朝向往回拉,距离0.6m时认为安全要求车与车道线平行即朝向为0°,中间过程角度逐渐减小,这样一来整个控制过程的位置->角度的转化关系就出来了,做到位置与角度并重,命名Pos2Angle,这个2不是二,是to。

        我没有闭门造车,和同事探讨过、实车验证过,这个方法真的可以。我们在LKA、ELK、ALC、LCK等L2/L2+/L3的横向控制功能上基本都尝试过了,我觉得如果能做好的话,L4/L5上也是可以用的。不过我也只说到“可以”吧,因为没赶上量产、没做很深入的分析与比较,它里面存在什么问题也不甚了了,比如中间过程是否确实线性。

        后来,有觉得这可能是一种内外双环控制的变种,在网上也看到过其它类似的设计,比如论文https://www.doc88.com/p-0708018509234.html?r=1里的图5.3、5.4。

        不管怎么说,自己的孩子自己疼,这是我原创的东西,我很珍惜,不管它以后被证明还是被证伪,甚至哪怕不被验证,我都很高兴。

        谢谢~

你可能感兴趣的:(算法,自动驾驶,汽车)