发明内容
发明目的:本发明针对现有技术存在的问题,提出了一种高频、高精度的用于自动驾驶车辆的定位方法。
技术方案:为实现上述目的,本发明提供了一种用于自动驾驶车辆的定位方法,包括以下步骤,
NDT模块根据激光雷达提供的点云信息获取车辆在点云地图中的位姿信息;其中位姿信息包括观测位姿信息和定位位姿信息,其中观测位姿信息作为观测值无际卡尔曼滤波模块中;
车辆速度信息采集模块实时将采集到的车辆速度信息发送到无际卡尔曼滤波模块;
无际卡尔曼滤波模块根据接收到的车辆速度信息对车辆的位姿进行预测得到车辆的预测位姿信息;无际卡尔曼滤波模块根据接收到的观测位姿信息与车辆的预测位姿信息对车辆位姿信息进行更新并输出;无际卡尔曼滤波模块输出的车辆位姿信息与NDT模块输出的定位位姿信息融合得到车辆定位信息。
其中,所述NDT模块中根据车辆定位信息对NDT模块中获取的观测位姿信息进行时间补偿得到第二观测位姿信息,第二观测位姿信息作为观测值输入到无际卡尔曼滤波模块中,时间补偿的方法为:根据公式:
xcps=xndt+vprecos(yawpre)×(tnow-tndt_time);
ycps=yndt+vpresin(yawpre)×(tnow-tndt_time);
yawcps=yawndt+yaw_ratepre×(tnow-tndt_time);
完成时间补偿,其中,第二观测位姿信息包括xcps、ycps、yawcps,xcps、ycps、yawcps分别表示为经过时间补偿后的车辆的横坐标、纵坐标和航向角;观测位姿信息包括xndt、yndt、yawndt,xndt、yndt、yawndt分别表示NDT模块根据激光雷达提供的点云信息获取车辆在点云地图中的横坐标、纵坐标和航向角;vpre为上一时刻车辆定位信息中的车辆速度;yawpre为上一时刻车辆定位信息中的车辆的航向角;yaw_ratepre为上一时刻车辆定位信息中的车辆的角速度;tnow和tndt_time分别表示为当前时间和激光雷达点云输入NDT模块的时间。
进一步,根据NDT模块中的迭代次数或者运行系统中中央处理器的占用率来调整NDT模块接收激光雷达发送的点云数据的频率。
进一步,设置线速度阈值和角速度阈值,无际卡尔曼滤波模块输出的车辆位姿信息中车辆的线速度阈值和车辆的角速度阈值,当无际卡尔曼滤波模块输出的车辆位姿信息中车辆线速度大于线速度阈值时,则车辆位姿信息中的车辆速度为线速度阈值;当无际卡尔曼滤波模块输出的车辆位姿信息中车辆角速度大于角速度阈值时,则车辆位姿信息中的车辆角速度为角速度阈值。
本发明还提供了一种用于自动驾驶车辆的定位系统,包括:激光雷达、NDT模块、车辆速度信息采集模块和无际卡尔曼滤波模块;其中,
NDT模块根据激光雷达提供的点云信息获取车辆在点云地图中的位姿信息;其中位姿信息包括观测位姿信息和定位位姿信息,其中观测位姿信息作为观测值无际卡尔曼滤波模块中;
车辆速度信息采集模块实时将采集到的车辆速度信息发送到无际卡尔曼滤波模块;
无际卡尔曼滤波模块根据接收到的车辆速度信息对车辆的位姿进行预测得到车辆的预测位姿信息;无际卡尔曼滤波模块根据接收到的观测位姿信息与车辆的预测位姿信息对车辆位姿信息进行更新并输出;无际卡尔曼滤波模块输出的车辆位姿信息与NDT模块输出的定位位姿信息融合得到车辆定位信息。
进一步,还包括频率控制模块,所述频率控制模块根据NDT模块中的迭代次数或者运行系统中中央处理器的占用率来调整NDT模块接收激光雷达发送的点云数据的频率。
进一步,NDT模块中还包括时间补偿子模块,所述时间补偿子模块根据车辆定位信息对NDT模块中获取的观测位姿信息进行时间补偿得到第二观测位姿信息,第二观测位姿信息作为观测值输入到无际卡尔曼滤波模块中,其中根据公式:
xcps=xndt+vprecos(yawpre)×(tnow-tndt_time);
ycps=yndt+vpresin(yawpre)×(tnow-tndt_time);
yawcps=yawndt+yaw_ratepre×(tnow-tndt_time);
完成时间补偿,其中,第二观测位姿信息包括xcps、ycps、yawcps,xcps、ycps、yawcps分别表示为经过时间补偿后的车辆的横坐标、纵坐标和航向角;观测位姿信息包括xndt、yndt、yawndt,xndt、yndt、yawndt分别表示NDT模块根据激光雷达提供的点云信息获取车辆在点云地图中的横坐标、纵坐标和航向角;vpre为上一时刻车辆定位信息中的车辆速度;yawpre为上一时刻车辆定位信息中的车辆的航向角;yaw_ratepre为上一时刻车辆定位信息中的车辆的角速度;tnow和tndt_time分别表示为当前时间和激光雷达点云输入NDT模块的时间。
本发明还提供了一种存储软件的计算机可读介质,所述软件包括能通过一个或多个计算机执行的指令,所述指令通过这样的执行使得所述一个或多个计算机执行操作,所述操作包括如权利要求1-4中任意一项所述的用于自动驾驶车辆的定位方法的流程。
本发明还提供了一种计算机系统,包括:
一个或多个处理器;
存储器,存储可被操作的指令,所述指令在通过所述一个或多个处理器执行时使得所述一个或多个处理器执行操作,所述操作包括如权利要求1-4中任意一项所述的用于自动驾驶车辆的定位方法的流程。
工作原理:本发明将NDT模块输出的定位信息、车辆ODOM输出的速度信息在2D空间通过无际卡尔曼滤波(Unscented Kalman Filter,下文简称UKF)算法进行数据融合,其ODOM输出的数据代入预测模型推算车辆位姿信息,并将其与经过时间补偿后的NDT定位信息进行状态更新,将其结果与NDT的其它位姿信息进行组合得出3D信息,最终实现车辆定位,此外再把UKF输出的定位信息当做NDT的参考位置输入NDT模块。若在算力不高的嵌入式平台,可根据CPU性能,控制NDT的执行频率,将低频NDT结果输入UKF。由于ODOM的频率一般为50HZ,而NDT的频率为1-10HZ,UKF输出频率为50HZ,葱油能够有效的提高绝对定位的频率。
有益效果:与现有技术相比,本发明能够输出高频、高精度的定位信息,具有鲁棒性强,通用型广等优点,适用于车辆自动驾驶技术;同时,整个系统的稳定性高,本发明根据CPU占用率和NDT的迭代次数动态调整Lidar的输入频率,有效降低了嵌入式平台的计算压力。
具体实施方式
下面将结合本发明实例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1:
如图1所示,本实施例提供了一种用于自动驾驶车辆的定位方法,包括以下步骤:
点云地图和激光雷达采集到的点云信息输入到NDT模块,NDT模块根据激光雷达提供的点云信息获取车辆在点云地图中的位姿信息;其中位姿信息为车辆的三维坐标值(x,y,z)、车辆的航向角,车辆的俯仰角和滚转角;观测位姿信息包括车辆的横坐标x、纵坐标y和车辆的航向角;定位位姿信息包括车辆的高度坐标z、车辆的俯仰角和滚转角;观测位姿信息作为观测值无际卡尔曼滤波模块中。
NDT模块中设置了初始化的判断条件,其中包括,NDT模块输出分数score、计算时间time_cost、迭代次数iterations;NDT模块输出分数score正常值0.5~1.2,计算时间time_cost正常值30ms~80ms,迭代次数iterations正常值1-3。若NDT模块输出分数socore>1.5或者计算时间time_cost>100ms或者迭代次数Iterations>5则重新初始化NDT模块。
还包括频率控制模块,其根据NDT模块中的迭代次数或者NDT模块的中央处理器的占用率来调整NDT模块接收激光雷达发送的点云数据的频率。正常情况,激光雷达lidar发送点云的频率为10HZ,NDT模块的CPU占用率60%;若温度较热,或者其它原因导致NDT模块的CPU占用率达到80%,将lidar点云频率调节至5HZ。NDT模块的CPU占用率达90%时,lidar点云频率调节至2HZ。NDT模块的CPU占用率达95%时,lidar点云频率调节至1HZ。这样能够保障嵌入式平台的稳定性。
车辆速度信息采集模块实时将采集到的车辆速度信息发送到无际卡尔曼滤波模块;本实施中车辆速度信息采集模块为车辆的ODOM传感器;车辆速度信息包括车辆的线速度、角速度和数据采集和发送的时间节点。
无际卡尔曼滤波模块中包括预测子模块和更新子模块。
其中,预测子模块的工作方法为:
步骤1:以车辆当前状态为中心设置2n+1个采样点,其中,n为车辆位姿信息中参数的数量总数,本实施例中车辆位姿信息包括车辆的横坐标,纵坐标,航向角,车辆的角速度和车辆的线速度,所以本实施例中n等于5。
步骤2:根据预测模型分别计算每个采样点的位姿信息中的车辆的坐标和航向角,其中预测模型为:
其中,
分别表示预测后t时刻第i个采用的横坐标、纵坐标和航向角,
分别表示预测前t-1时刻第i个采用的横坐标、纵坐标和航向角;
和
的初始值由NDT模块提供,v
t和yaw_rate
t分别为ODOM传感器输出的车辆的线速度和角速度,t
t和t
t-1为t和t-1时刻的时间。
步骤3:根据每个采样点的位姿信息和其权重进行加权平均得到车辆预测位姿信息,并将获得的预测位姿信息发送到更新子模块。其中车辆当前状态的中心采样点的权重最大,为
其它采样点的权重相等,为
λ表示比例因子。
更新子模块根据观测位姿信息和车辆预测位姿信息的置信度计算卡尔曼增益,根据计算得到的卡尔曼增益更新车辆位姿信息,并输出完成车辆的定位。由于车辆的线速度和角速度是车辆运动状态的控制量,该值异常会导致定位结果极不稳定。为保障算法健壮性,本实施例中对输出的车辆位姿信息中车辆的线速度和角速度进行限幅控制,其计算公式如下:
其中,vmax为线速度阈值,yaw_ratemax为角速度阈值,本实施例中vmax优选为40
其中,vmax为线速度阈值,
米/秒,yaw_ratemax优选为50度/秒,v为车辆位姿信息中车辆的线速度,yaw_rate为车辆位姿信息中车辆的角速度。
无际卡尔曼滤波模块输出的车辆位姿信息与NDT模块输出的定位位姿信息融合得到车辆定位信息,车辆定位信息包括车辆的三维坐标、航向角,线速度、角速度、车辆的俯仰角和滚转角。
实施例2:
如图2所示,本实施例提供了一种用于自动驾驶车辆的定位方法,包括以下步骤:
点云地图和激光雷达采集到的点云信息输入到NDT模块,NDT模块根据激光雷达提供的点云信息获取车辆在点云地图中的位姿信息;其中位姿信息为车辆的三维坐标值(x,y,z)、车辆的航向角,车辆的俯仰角和滚转角;观测位姿信息包括车辆的横坐标x、纵坐标y和车辆的航向角;定位位姿信息包括车辆的高度坐标z、车辆的俯仰角和滚转角;观测位姿信息作为观测值无际卡尔曼滤波模块中。本实施例中,NDT模块输出的位姿信息为:车辆的横坐标x为1266.65米,车辆的纵坐标y为-814.83米,车辆的高度坐标z为-1.86米,车辆的滚转角roll为0.0090弧度,车辆的俯仰角pitch为0.00099弧度,车辆的航向角yaw:0.2191弧度。
NDT模块中包括时间补偿子模块,时间补偿子模块根据车辆定位信息对NDT模块中获取的观测位姿信息进行时间补偿得到第二观测位姿信息,第二观测位姿信息作为观测值输入到无际卡尔曼滤波模块中,其中根据公式:
xcps=xndt+vprecos(yawpre)×(tnow-tndt_time);
ycps=yndt+vpresin(yawpre)×(tnow-tndt_time);
yawcps=yawndt+yaw_ratepre×(tnow-tndt_time);
完成时间补偿,其中,第二观测位姿信息包括xcps、ycps、yawcps,xcps、ycps、yawcps分别表示为经过时间补偿后的车辆的横坐标、纵坐标和航向角;观测位姿信息包括xndt、yndt、yawndt,xndt、yndt、yawndt分别表示NDT模块根据激光雷达提供的点云信息获取车辆在点云地图中的横坐标、纵坐标和航向角;vpre为上一时刻车辆定位信息中的车辆速度;yawpre为上一时刻车辆定位信息中的车辆的航向角;yaw_ratepre为上一时刻车辆定位信息中的车辆的角速度;tnow和tndt_time分别表示为当前时间和激光雷达点云输入NDT模块的时间。本实施例中经过时间补偿后得到的第二观测位姿信息为:xcps为1267.20米,ycps为-814.71米,yawcps为0.22弧度。
NDT模块中设置了初始化的判断条件,其中包括,NDT模块输出分数score、计算时间time_cost、迭代次数iterations;NDT模块输出分数score正常值0.5~1.2,计算时间time_cost正常值30ms~80ms,迭代次数iterations正常值1-3。若NDT模块输出分数socore>1.5或者计算时间time_cost>100ms或者迭代次数Iterations>5则重新初始化NDT模块。
还包括频率控制模块,其根据NDT模块中的迭代次数或者NDT模块的中央处理器的占用率来调整NDT模块接收激光雷达发送的点云数据的频率。正常情况,激光雷达lidar发送点云的频率为10HZ,NDT模块的CPU占用率60%;若温度较热,或者其它原因导致NDT模块的CPU占用率达到80%,将lidar点云频率调节至5HZ。NDT模块的CPU占用率达90%时,lidar点云频率调节至2HZ。NDT模块的CPU占用率达95%时,lidar点云频率调节至1HZ。这样能够保障嵌入式平台的稳定性。
车辆速度信息采集模块实时将采集到的车辆速度信息发送到无际卡尔曼滤波模块;本实施中车辆速度信息采集模块为车辆的ODOM传感器;车辆速度信息包括车辆的线速度、角速度和数据采集和发送的时间节点。
无际卡尔曼滤波模块中包括预测子模块和更新子模块。
其中,预测子模块的工作方法为:
步骤1:以车辆当前状态为中心设置2n+1个采样点,其中,n为车辆位姿信息中参数的数量总数,本实施例中车辆位姿信息包括车辆的横坐标,纵坐标,航向角,车辆的角速度和车辆的线速度,所以本实施例中n等于5。
步骤2:根据预测模型分别计算每个采样点的位姿信息中的车辆的坐标和航向角,其中预测模型为:
其中,
分别表示预测后t时刻第i个采用的横坐标、纵坐标和航向角,
分别表示预测前t-1时刻第i个采用的横坐标、纵坐标和航向角;
和
的初始值由NDT模块提供,v
t和yaw_rate
t分别为ODOM传感器输出的车辆的线速度和角速度,t
t和t
t-1为t和t-1时刻的时间。本实施例中,此刻v
t为5.65米/秒,yaw_rate
t为0.085弧度/秒。
步骤3:根据每个采样点的位姿信息和其权重进行加权求和得到车辆预测位姿信息,并将获得的预测位姿信息发送到更新子模块。其中车辆当前状态的中心采样点的权重最大,为
其它采样点的权重相等,为
λ表示比例因子。经过预测后得到车辆的预测位姿信息为:车辆的横坐标为1267.44米,车辆的纵坐标为-814.48米,车辆的航向角为0.22弧度。
更新子模块根据观测位姿信息和车辆预测位姿信息的置信度计算卡尔曼增益,根据计算得到的卡尔曼增益更新车辆位姿信息,并输出。由于车辆的线速度和角速度是车辆运动状态的控制量,该值异常会导致定位结果极不稳定。为保障算法健壮性,本实施例中对输出的车辆位姿信息中车辆的线速度和角速度进行限幅控制,其计算公式如下:
其中,vmax为线速度阈值,yaw_ratemax为角速度阈值,本实施例中vmax优选为40米/秒,yaw_ratemax优选为50度/秒,v为车辆位姿信息中车辆的线速度,v为车辆位姿信息中车辆的线速度,yaw_rate为车辆位姿信息中车辆的角速度。本实施例中无际卡尔曼滤波模块输出的车辆位姿信息包括:车辆的横坐标:1267.17米,车辆的纵坐标:-814.54米,车辆的航向角:0.22弧度,车辆的线速度:5.66米/秒,车辆的角速度:0.086弧度/秒。
无际卡尔曼滤波模块输出的车辆位姿信息与NDT模块输出的定位位姿信息融合得到车辆定位信息,车辆定位信息包括车辆的三维坐标、航向角,线速度、角速度、车辆的俯仰角和滚转角。本实施例最后获得的车辆定位信息为:车辆的横坐标:1267.17米,车辆的纵坐标:-814.54米,车辆的高度坐标:-1.86米,车辆的滚转角:0.0090弧度,车辆的俯仰角:0.00099弧度,车辆的航向角:0.22弧度。
本发明还提供了一种存储软件的计算机可读介质,所述软件包括能通过一个或多个计算机执行的指令,所述指令通过这样的执行使得所述一个或多个计算机执行操作,所述操作包括如前述用于自动驾驶车辆的定位流程。
本发明还提供了一种计算机系统,包括:一个或多个处理器;存储器,存储可被操作的指令,所述指令在通过所述一个或多个处理器执行时使得所述一个或多个处理器执行操作,所述操作包括如前述用于自动驾驶车辆的定位方法的流程。
应当理解,本发明的前述用于自动驾驶车辆的定位方法的示例可以在任何包含具有数据存储和数据处理的计算机系统中,前述的计算机系统可以是至少一个包括处理器和存储器的电子处理系统或者电子设备,例如PC电脑,不论是个人用PC电脑、商用PC电脑,或者图形处理用PC电脑、服务器级PC电脑。这些PC电脑通过具有数据接口和/或网络接口,实现有线和/或无线的数据传输,尤其是车辆的各种数据。
在另一些实施例,该计算机系统还可以是服务器,尤其是云服务器,具有数据存储、处理以及网络通讯功能。
作为示例的计算机系统通常包括由系统总线连接的至少一个处理器、存储器和网络接口。网络接口用于与其他设备/系统进行通信。
处理器用于提供系统的计算和控制。
存储器包括非易失性存储器和缓存。
非易失性存储器通常具有海量存储能力,可以存储操作系统以及计算机程序,这些计算机程序可以包括可被操作的指令,这些指令在通过一个或多个处理器执行时使得一个或多个处理器能够执行本发明前述实施例的车辆定位的过程。
在需要或者合理的实现方式中,前述计算机系统,不论是PC设备或者服务器,还可以包括比图示中更多或者更少的部件,或者组合,或者采用不同的硬件、软件等不同部件或者不同的部署方式。