发明内容
有鉴于此,有必要提供一种自动驾驶的能见度动态地图的产生方法、装置、计算机设备及存储介质,可以准确地提供自动驾驶过程中周围环境数据的变化情况。
第一方面,本发明提供一种能见度动态地图的产生方法,所述方法包括:
利用三维传感器获取周围环境数据,生成三维点云数据;
利用所述三维点云数据生成若干区块;
计算每一所述区块到所述三维传感器的距离,得到期望距离;
利用所述三维传感器沿所述区块方向上所获取的三维点云数据的距离信息,得到测算距离;
根据所述期望距离与所述测算距离的差异获得每一所述区块的状态信息;
根据所述状态信息对应地标注出所述三维点云数据中所述区块的状态,形成能见度动态地图。
在一些可行的实施例中,所述区块为三维空间中的体积像素的集合,所述体积像素的深度值储存在深度缓冲区中;计算每一所述区块到所述三维传感器的距离,得到期望距离,具体包括:
读取所述体积像素在深度缓冲区中的深度值;
根据所述读取的深度值,计算出所述体积像素到所述三维传感器的距离,得到所述期望距离
在一些可行的实施例中,所述区块包含深度缓冲区。计算每一所述区块到所述三维传感器的距离,得到期望距离,具体包括:
将所述深度缓冲区投影到二维平面上,得到二维可见度网格;
将所述三维传感器投影到所述二维平面上,得到三维传感器投影;
计算所述二维可见度网格与所述三维传感器投影之间的距离,得到期望距离。
在一些可行的实施例中,根据所述期望距离与所述测算距离的差异获得每一所述区块的状态信息,具体包括:
标记所述若干区块中所述期望距离等于所述测算距离的区块为未被遮挡状态或障碍物表面状态;和/或
标记所述若干区块中所述期望距离大于所述测算距离的区块为被遮挡状态;和/或
标记所述若干区块中未标记为未被遮挡状态或障碍物表面状态或被遮挡状态的区块为空缺状态。
第二方面,本发明还提供一种用于自动驾驶的能见度动态地图的产生装置。能见度动态地图装置包括:
感知模块,用于利用三维传感器获取周围环境数据,生成三维点云数据;
空间划分模块,用于利用所述三维点云数据生成若干区块;
期望距离计算模块,用于计算每一所述区块到所述三维传感器的距离,得到期望距离;
测算距离计算模块,用于利用所述三维传感器沿所述区块方向上所获取的三维点云数据的距离信息,得到测算距离;
区块状态获取模块,用于根据所述期望距离与所述测算距离的差异获得每一所述区块的状态信息。
地图生成模块,根据所述状态信息对应地标注出所述三维点云数据中所述区块的状态,形成能见度动态地图。
在一些可行的实施例中,所述区块为三维空间中的体积像素的集合,所述体积像素的深度值储存在深度缓冲区中;计算每一所述区块到所述三维传感器的距离,得到期望距离,具体包括:
深度值读取模块,用于读取所述体积像素在深度缓冲区中的深度值;
三维期望距离计算模块,根据所述读取的深度值,计算出所述体积像素到所述三维传感器的距离,得到所述期望距离。
在一些可行的实施例中,所述区块包含深度缓冲区;计算每一所述区块到所述三维传感器的距离,得到期望距离,具体包括:
深度缓冲区投影模块,用于将所述深度缓冲区投影到二维平面上,得到二维可见度网格;
传感器投影模块,用于将所述三维传感器投影到所述二维平面上,得到三维传感器投影;
二维期望距离计算模块,用于计算所述二维可见度网格与所述三维传感器投影之间的距离,得到期望距离。
在一些可行的实施例中,所述区块状态获取模块,用于根据所述期望距离与所述测算距离的差异获得每一所述区块的状态信息,具体包括:
标记所述若干区块中所述期望距离等于所述测算距离的区块为未被遮挡状态或障碍物表面状态;和/或
标记所述若干区块中所述期望距离大于所述测算距离的区块为被遮挡状态;和/或
标记所述若干区块中未标记为未被遮挡状态或障碍物表面状态或被遮挡状态的区块为空缺状态。
第三方面,本发明还提供一种用于自动驾驶能见度动态地图产生方法的计算机设备,所述计算机设备包括处理器和存储器,所述处理器用于生成能见度动态地图的程序指令,所述存储器用于储存所述程序指令,以实现用于自动驾驶的能见度动态地图的产生方法,所述方法包括:
利用三维传感器获取周围环境数据,生成三维点云数据;
利用所述三维点云数据生成若干区块;
计算每一所述区块到所述三维传感器的距离,得到期望距离;
利用所述三维传感器沿所述区块方向上所获取的三维点云数据的距离信息,得到测算距离;
根据所述期望距离与所述测算距离的差异获得每一所述区块的状态信息;
根据所述状态信息对应地标注出所述三维点云数据中所述区块的状态,形成能见度动态地图。
第四方面,本发明还提供一种用于生成自动驾驶的存储介质,所述存储介质用于存储生成能见度动态地图的程序指令,所述生成能见度动态地图的程序指令由处理器执行以实现自动驾驶能见度动态地图的产生方法。
上述能见度动态地图的产生方法,可以根据自动驾驶车辆在行驶时获得的点云数据计算出各区块的状态信息,从而构建出对区块标注有状态信息的能见度动态地图,使得能见度动态地图准确地提供自动驾驶过程中周围环境数据的变化情况。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,换句话说,描述的实施例根据除了这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,还可以包含其它内容,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于只清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者多个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
请参看图1,其为本发明实施例提供的自动驾驶车辆能见度动态地图产生方法的流程示意图。该自动驾驶车辆能见度动态地图产生方法包括以下步骤。
步骤101,利用三维传感器获取周围环境数据,生成三维点云数据。三维传感器包括自动驾驶车辆本身的传感器,如激光雷达(Li-Dar)、毫米波雷达(Radar)、摄像头(Camera)等;还包括非车辆本身但是给车辆分享的信息的外部传感器,如路端的智慧交通传感器等。摄像头包括但不限于单目相机、双目相机、深度图像相机、全景相机、RGB-D相机等。该自动驾驶车辆能见度动态地图产生方法将传感器获取到的周围环境数据进行传感器数据融合,生成三维点云数据。
步骤103,利用三维点云数据生成若干区块。在一些可行的实施例中,每一区块在三维空间中为体积像素的集合,在二维空间中为可见度网格的集合。在三维空间中,体积像素的深度值储存在深度缓冲区中;在二维空间中,将深度缓冲区投影到二维平面上,得到二维可见度网格。
步骤105,计算每一区块到三维传感器的距离,得到期望距离。
在一些可行的实施例中,当区块为三维空间中的体素时,步骤105包括:通过读取深度缓冲区的深度值,计算传感器所处的体素与目标体素之间的深度值差异,得到期望距离。
在一些可行的实施例中,当区块为二维空间中的可见度网格时,步骤105包括:将三维传感器投影到二维平面上,得到三维传感器投影;计算二维可见度网格与三维传感器投影之间的距离,得到期望距离。具体地,将三维空间中的点云数据投影到二维空间中生成二维点云矩阵,深度缓冲区投影到二维平面上的数据存储在二维点云矩阵中。计算期望距离时,读取二维点云矩阵中的可见度网格的位置数据,利用笛卡尔坐标系中两点之间的距离计算公式,计算得到二维空间中的期望距离。
步骤107,利用三维传感器沿区块方向上所获取的三维点云数据的距离信息,得到测算距离。具体地,该测算距离利用光线投射或者光线追踪算法计算得到。
步骤109,根据期望距离与测算距离的差异,获得每一区块的状态信息。在本实施例中,区块的状态信息包括未被遮挡状态或障碍物表面状态、被遮挡状态、空缺状态。若期望距离等于测算距离,则该区块为未被遮挡状态或障碍物表面状态;若期望距离大于测算距离,则该区块为被遮挡状态;若期望距离小于测算距离,则该区块为空缺状态。
步骤111,根据状态信息对应地标注出三维点云数据中区块的状态,形成能见度动态地图。所有区块每一次被标记状态后形成一帧图片,当所有区块连续被标注后,形成随着时间多帧连续变化的图片生成能见度动态地图。
请结合参看图2和图3,分别为本发明实施例提供的自动驾驶车辆能见度动态地图装置120的组成示意图和装置中期望距离计算模块123的组成示意图。该自动驾驶车辆能见度动态地图装置120包括以下模块。
感知模块121,用于利用三维传感器获取周围环境数据,生成三维点云数据。传感器包括自动驾驶车辆本身的传感器,如激光雷达(Li-Dar)、毫米波雷达(Radar)、摄像头(Camera)等;还包括非车辆本身但是分享给车辆的信息,如路端的智慧交通传感器等。具体地,摄像头包括但不限于单目相机、双目相机、深度图像相机、全景相机、RGB-D相机等。将传感器获取到的周围环境数据进行传感器数据融合,生成三维点云数据。
空间划分模块122,用于利用三维点云数据生成若干区块。在一些可行的实施例中,每一区块在三维空间中为体积像素的集合,在二维空间中为可见度网格的集合。在三维空间中,体积像素的深度值储存在深度缓冲区中;在二维空间中,将深度缓冲区投影到二维平面上,得到二维可见度网格。
期望距离计算模块123,用于计算每一区块到三维传感器的距离,得到期望距离。
在一些可行的实施例中,当区块为三维空间中的体素时,期望距离计算模块123包括深度值读取模块131和三维期望距离计算模块132。深度值读取模块131用于读取深度缓冲区的深度值,三维期望距离计算模块132用于计算传感器所处的体素与目标体素之间的深度值差异,得到期望距离。
在一些可行的实施例中,当区块为二维空间中的可见度网格时,期望距离计算模块123包括深度缓冲区投影模块135、传感器投影模块136、二维期望距离计算模块137。深度缓冲区投影模块135用于将三维传感器投影到二维平面上,将三维空间中的点云数据投影到二维空间中生成二维点云矩阵,深度缓冲区投影到二维平面上的数据存储在二维点云矩阵中。传感器投影模块136用于将三维传感器投影到二维平面上,得到三维传感器投影。二维期望距离计算模块137用于计算二维可见度网格与三维传感器投影之间的距离,得到期望距离。具体地,读取二维点云矩阵中的可见度网格的位置数据,利用笛卡尔坐标系中两点之间的距离计算公式,计算得到二维空间中的期望距离。
测算距离计算模块124,用于利用三维传感器沿区块方向上所获取的三维点云数据的距离信息,得到测算距离。具体地,该测算距离利用光线投射或者光线追踪算法计算得到。
区块状态获取模块125,用于根据期望距离与测算距离的差异,获得每一区块的状态信息。在本实施例中,区块的状态信息包括未被遮挡状态或障碍物表面状态、被遮挡状态、空缺状态。若期望距离等于测算距离,则该区块为未被遮挡状态或障碍物表面状态;若期望距离大于测算距离,则该区块为被遮挡状态;若期望距离小于测算距离,则该区块为空缺状态。
地图生成模块126,用于根据状态信息对应地标注出三维点云数据中区块的状态,形成能见度动态地图。所有区块每一次被标记状态后形成一帧图片,当所有区块连续被标注后,形成随着时间多帧连续变化的图片生成能见度动态地图。
应当说明,图2和图3所对应的本发明优选的实施例中,模块的设置仅作为举例使用,模块的具体数量可以不局限于本优选实施例的数量,模块运行的顺序也可以不局限于本优选实施例的顺序,其它合理的模块数量、合理的分布顺序的实施例也在本专利保护范围内。
请参看图4,其为本发明实施例提供的自动驾驶车辆的二维能见度动态地图的示意图。自动驾驶车辆C1将传感器的感测范围在二维空间内划分为若干二维可见度网格。通过分析传感器感测到的数据,对二维可见度网格进行标记。将障碍物所处的网格标记为障碍物表面状态301,障碍物后面的网格标记为被遮挡状态300,剩余的网格标记为空缺状态302。网格的状态随着时间变化,生成能见度动态地图。
进一步地,能见度动态动态地图可以用于为自动驾驶车辆周围环境的感知提供更丰富的信息。
在一些可行的实施例中,能见度动态地图可以用于物体跟踪。当自动驾驶车辆跟踪的物体被障碍物遮挡时,感知模块会丢失被跟踪物体的位置信息。例如,行人被自动驾驶车辆周围的汽车遮挡,行人会无法被感知模块探测到。结合行人被遮挡的前后若干帧图像,能见度动态地图会补充行人被遮挡而不是消失的信息。当行人再次出现时,感知模块可以根据前后若干帧图像的变化,判断出是否和被遮挡的行人相同。对于物体的准确跟踪,能够帮助自动驾驶车辆更加准确地判断周围的环境信息,提高规划、决策的安全性和合理性。
在一些可行的实施例中,能见度动态地图可以用于物体识别。物体识别的功能可以避免由于遮挡,错误地把一个物体的多个部分识别成多个物体的情况发生。例如,一列火车运行到平交道口,被建筑物、树木或者其它车辆遮挡,相机中的火车的图像会被分成若干部分,由此感知模块会难以判断该图像是一个物体还是多个物体。通过能见度动态地图前后帧的对比,可以确认被遮挡的部分与未被遮挡的部分是同一辆列车的不同部分。能见度动态地图对物体的正确识别,有利于自动驾驶车辆做出合理的行驶行为。
在一些可行的实施例中,区块的状态信息可以用于占据栅格地图。区块的状态信息表达二维、三维空间中哪些部分是空的,哪些区域是被遮挡的(而非空的)。计算占据栅格的时候,一般采用连续多帧的数据。对某一栅格单元,之前认为有Li-Dar或Radar点,但是当前帧的数据指示这一栅格单元没有点,那么可以通过遮挡判断此处没有点的原因是被遮挡还是没有点。如果是遮挡,那么就不应该推翻前帧数据认为此处有点的结论;如果此处没有点,那么就要考虑推翻前帧数据认为此处有点的结论,因为可能是前帧数据不可靠,有噪点。
在一些可行的实施例中,能见度动态地图可以用于为规划、决策***提供更丰富障碍物查询。具体地,通过向规划、决策***开放能见度动态地图的接口,自动驾驶车辆不仅可以确定待查询物体所在位置,而且可以判断待查询物体可能的所在位置与不可能的所在位置。例如,可以通过能见度动态地图得知,被汽车遮挡的行人处于哪个范围内的障碍物后面,不可能处于哪个范围内的障碍物后面。丰富的障碍物查询信息为自动驾驶车辆提供了更加准确的路径规划依据。
在一些可行的实施例中,能见度动态地图可以用于向自动驾驶车辆提供周围环境不确定性的判断与车辆行驶的规划、决策的调整。
具体地,当能见度动态地图判断出能见度不足时,自动驾驶车辆对于周围环境感知的不确定度较高,进行规划和决策时会有障碍,此时可以通过控制车辆进行小幅移动来提高能见度动态地图的能见度,以提高对于周围环境感知的确定性。例如,当自动驾驶车辆准备右转时看不见左侧车流,无法判断安全右转的适当时机,此时自动驾驶***可决策进行小幅度位移,使车辆右转时将车身向左进行小幅移动,从而能更好看清左侧车流,提高能见度,降低对周围环境感知的不确定性,进一步提高规划、决策的合理性。
具体地,当能见度动态地图判断出能见度不足时,自动驾驶车辆可以进行规划、决策的策略调整。例如,当自动驾驶车辆前方有大量行人一起过马路,有一些行人能够被自动驾驶车辆的感知模块识别,有一些行人被遮挡不能被识别。此时,自动驾驶车辆的会把可能因为遮挡而没被识别到的行人做出规划、决策上的预留,提高车辆行驶的安全性和合理性。
具体地,当自动驾驶车辆所处环境中存在很有可能移动的障碍物时,不确定性较大,能见度动态地图的变化较为复杂,此时,应当对自动驾驶车辆的行驶策略做出相应调整。例如,当自动驾驶车辆遭遇堵车、在停有很多车辆的车库中行驶、经过停有一长列车辆的路边时,对于周围车辆移动的可能性无法准确预判,对于是否会有行人从车辆中间突然穿出也存在很大的不确定性,此时自动驾驶车辆可以调整规划、决策策略,可以降低车速、预留更大的安全空间,以降低行驶环境的不确定性,提高自动驾驶车辆行驶的安全性和合理性。
请参看图5,其为本发明实施例提供的计算机设备200的内部结构示意图。计算机设备200包括处理器201、存储器202和总线203。
其中,处理器201在一些实施例中可以是一中央处理器(Central ProcessingUnit, CPU)、控制器、微控制器、微处理器或其它数据处理芯片,用于运行存储器202中存储的程序代码或处理数据。
存储器202至少包括一种类型的可读存储介质,该可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器202在一些实施例中可以是计算机设备200的内部存储单元,例如计算机设备200的硬盘。存储器202在另一些实施例中也可以是的外部计算机设备200存储设备,例如计算机设备200上配备的插接式硬盘,智能存储卡(Smart Media Card, SMC),安全数字(SecureDigital, SD)卡,闪存卡(Flash Card)等。进一步地,存储器202还可以既包括计算机设备200的内部存储单元也包括外部存储设备。存储器202不仅可以用于存储安装于计算机设备200的应用软件及各类数据,还可以用于暂时地存储已经输出或者将要输出的数据。
总线203可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
进一步地,计算机设备200还可以包括显示组件204。显示组件204可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(OrganicLight-Emitting Diode,有机发光二极管)触摸器等。其中,显示组件204也可以适当的称为显示装置或显示单元,用于显示在计算机设备200中处理的信息以及用于显示可视化的用户界面。
进一步地,计算机设备200还可以包括通信组件205,通信组件205可选的可以包括有线通信组件和/或无线通信组件(如Wi-Fi通信组件、蓝牙通信组件等),通常用于在计算机设备200与其它计算机设备之间建立通信连接。
图5仅示出了具有组件201-205以及计算机设备200,本领域技术人员可以理解的是,图5示出的结构并不构成对计算机设备200的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本发明实施例的流程或功能。该计算机设备可以是通用计算机、专用计算机、计算机网络、或者其它可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如DVD)、或者半导体介质(例如固态硬盘SolidState Disk,SSD)等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
该作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、流动硬盘、只读存储介质(ROM,Read-OnlyMemory)、随机存取存储介质(RAM,RandomAccess Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。并且本文中的术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围内。