回顾一下103公里的那次“非法上路”,贝莎·本茨是怎么做到的?她当时没打招呼,直接把那辆奔驰 Patent-Motorwagen Model III从曼海姆开到了普福尔茨海姆。这事后来成了汽车历史上的首秀,她也成了第一个敢开上公开道路的人。为了纪念她,德国卡尔斯鲁厄理工学院和奔驰给新一代无人车起了个特别的名字——“贝莎”。 2013年8月,这辆车自己把103公里跑完了,还在欧洲大型合作驾驶挑战赛(GCDC)上赢了好几项冠军。 那它到底是怎么算出那条完美路线的呢?传统的做法是把路面拆成网格再去搜索,网格越密、维度越高,运算量就越爆炸。这次研究完全不用这个套路,直接用变分法推导出了一条局部连续的轨迹。 他们的目标函数很聪明,把车辆的“能不能动”和“坐得舒不舒服”合在了一起。障碍物和边界都用多边形凸包来表示。通过这些精心设计的约束条件,算法即使没有初始值也能一步到位找到全局最优解。 具体来说有五步曲: 第一步是设计目标函数。作者把它写成五项惩罚的组合,比如跟车道线的距离、速度偏差、加速度和加加速度这些指标。把这些积分后转成泛函形式,再用固定步长的时间戳把位置坐标映射出来,就把无限维的问题变成了有限项求和。 第二步是约束函数。车体不是个硬邦邦的方块,他们用N个圆环把车身包起来。每个圆环的圆心都要跟障碍物保持最小距离。 第三步是把工作空间变凸。原来的欧氏空间和速度空间都是凹凸不平的,优化器很容易掉坑里。他们先对障碍物做了凸包分解,再加上车道边缘的边界线,把整个工作空间都凸化了。 第四步是搞伪距离。为了计算任意一点到多边形的最近距离,他们避开了传统方法在角点处不可导的问题。通过插值构造了一个光滑的伪距离函数,还顺便弄出了伪梯度场。 第五步是用序列二次规划(SQP)求解非线性规划(NLP)问题。KKT条件保证每一步迭代都朝着正确的方向走。 最后结果怎么样?这辆车在103公里的混合路况上全程自主行驶,中间没人插手。在环形路上高速过弯时横向加速度最小;右转弯时障碍物随机移动也能生成平滑的路径;对面来车突然减速它能果断急转避让。乘客说感觉就像有人在旁边开车一样自然。 这套方法不用改参数就能用到不同车型和路线上,真正做到了“一次训练、多场景通用”。