CN118550852A - 定位处理器及激光点数据处理系统 - Google Patents

定位处理器及激光点数据处理系统 Download PDF

Info

Publication number
CN118550852A
CN118550852A CN202310159818.7A CN202310159818A CN118550852A CN 118550852 A CN118550852 A CN 118550852A CN 202310159818 A CN202310159818 A CN 202310159818A CN 118550852 A CN118550852 A CN 118550852A
Authority
CN
China
Prior art keywords
coordinate
positioning
data
offset
deflection
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310159818.7A
Other languages
English (en)
Inventor
何再生
赖钦伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhuhai Amicro Semiconductor Co Ltd
Original Assignee
Zhuhai Amicro Semiconductor Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhuhai Amicro Semiconductor Co Ltd filed Critical Zhuhai Amicro Semiconductor Co Ltd
Priority to CN202310159818.7A priority Critical patent/CN118550852A/zh
Publication of CN118550852A publication Critical patent/CN118550852A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Numerical Control (AREA)

Abstract

本申请公开定位处理器及激光点数据处理系统,定位处理器的内部设置状态机控制模块和位置变换处理模块;位置变换处理模块在状态机控制模块的控制下,从cache存储器内突发读取出或单次读取出激光点数据,再将读取出的激光点数据同时传输给每条数据通道,并控制每条数据通道分别从对应的变换起点基准量开始同步进行多轮位置变换,获得多个目标偏移坐标及其对应的定位概率值;位置变换处理模块在每条数据通道中依次将由同一轮位置变换得到的目标偏移坐标所对应的定位概率值进行累加,得到定位概率和值,再突发写入或单次写入cache存储器;所述cache存储器,用于在状态机控制模块的控制下,将定位概率和值突发写入所述DDR存储器中。

Description

定位处理器及激光点数据处理系统
技术领域
本发明涉及算法硬件化实现的技术领域,具体涉及定位处理器及激光点数据处理系统。
背景技术
针对清洁机器人利用激光地图进行室内定位,业界多是采用的软件算法实现,进行大量迭代计算处理激光点云,从而求出在地图上的目标位置信息,非常消耗软件资源,挤占系统中其他应用程序对于同一访存带宽的需求,从而容易造成总线数据堵塞,降低算法定位速度。
现有技术会在硬件计算电路当中设置两条通道交替进行批量数据的乘加计算,或将多个数据信号都配置到一条通道上进行乘加计算,导致读写状态机每次进入新的工作状态之前都需要等待较长的延迟时间,例如等待至少一轮乘加运算时间后才能进行其它轮乘加运算,进而影响软件算法执行效率。
发明内容
本申请公开定位处理器及激光点数据处理系统,具体技术方案包括:
定位处理器,定位处理器被配置为与cache存储器连接,cache存储器与DDR存储器连接;定位处理器的内部设置状态机控制模块和位置变换处理模块;位置变换处理模块的内部设置多条数据通道;DDR存储器用于存储激光点数据;cache存储器,用于在状态机控制模块的控制下,从DDR存储器中突发读取出或单次读取出激光点数据;位置变换处理模块,用于在状态机控制模块的控制下,从cache存储器内突发读取出激光点数据,再将突发读取出的每个激光点数据同时传输给每条数据通道,并控制每条数据通道分别从对应的变换起点基准量开始同步进行多轮位置变换,以使每条数据通道同时获得多个目标偏移坐标及其对应的定位概率值;每条数据通道对应的变换起点基准量是彼此不同,每条数据通道所需进行的位置变换的轮数是相等;位置变换处理模块,用于在每条数据通道中依次将由同一轮位置变换得到的目标偏移坐标所对应的定位概率值进行累加,得到定位概率和值;定位处理器,用于在其内部的状态机控制模块的控制下,将累加得到的定位概率和值突发写入cache存储器、或单次写入cache存储器;所述cache存储器,用于在状态机控制模块的控制下,将定位概率和值突发写入所述DDR存储器中。
进一步地,所述定位处理器的内部不设置目标片内存储器,以使cache存储器代替目标片内存储器缓存所述定位处理器与DDR存储器之间传输的数据。
进一步地,所述定位处理器还用于支持软件指令从用于定位一个目标位置所需的所有定位概率和值当中,选择出数值最大的一个定位概率和值,再将数值最大的一个定位概率和值对应的修正位置设置为所述定位处理器在分块地图内重定位出的位置;每当预设定位数量个激光点数据全部被所述位置变换处理模块处理为对应修正位置处的定位概率和值输出后,获得用于定位一个目标位置所需的所有定位概率和值;其中,同一个激光点数据在一条数据通道内所需进行的位置变换的轮数等于预设定位数量个激光点数据在一条数据通道内累计获得的定位概率和值的数量;一个定位概率和值对应的修正位置表示在分块地图内,相对于坐标系原点作一轮目标变换得到的坐标位置;目标变换是为了得到同一个定位概率和值,所述位置变换处理模块所需进行的一轮位置变换。
进一步地,所述目标偏移坐标所对应的定位概率值表示经过一轮位置变换得到目标偏移坐标的激光点数据落入所述分块地图对应位置的概率大小,或表示激光传感器落入所述分块地图对应位置的概率大小,或表示分块地图的单元格位置被反射激光点数据的障碍物占用的概率;每个激光点数据经过一轮位置变换后得到的目标偏移坐标与一个定位概率值存在对应关系,且是预先设置好以便所述位置变换处理模块调用;所述DDR存储器的外部被构造为连接激光传感器,以使DDR存储器存储激光传感器采集的激光点数据;其中,以所述激光传感器的当前位置为坐标系原点,在所述激光传感器的有效探测范围内生成所述分块地图;分块地图是预设尺寸的局部地图。
进一步地,所述位置变换处理模块包括预设并行数量个角度偏转计算单元、预设并行数量个坐标偏移计算单元、以及预设并行数量个累加器;预设并行数量个角度偏转计算单元各标记一个序号,预设并行数量个坐标偏移计算单元各标记一个序号,预设并行数量个累加器各标记一个序号;预设并行数量个角度偏转计算单元标记的序号各不相同,预设并行数量个坐标偏移计算单元标记的序号各不相同,预设并行数量个累加器标记的序号各不相同;预设并行数量个角度偏转计算单元标记的序号、预设并行数量个坐标偏移计算单元标记的序号、以及预设并行数量个累加器标记的序号都处于相同的数值范围内;一个角度偏转计算单元连接序号相同的一个坐标偏移计算单元,一个坐标偏移计算单元连接序号相同的一个累加器,序号相同的一个角度偏转计算单元、一个坐标偏移计算单元以及一个累加器依次连接成一条所述数据通道,并标记为对应序号的一条数据通道;所述变换起点基准量表示为所述角度偏转计算单元所需的基准偏转角度时,第i个角度偏转计算单元的基准偏转角度与第(i-1)个角度偏转计算单元的基准偏转角度的差值等于目标偏转次数与角度偏转步长的乘积,其中,i是设置为大于或等于2,且i是设置为小于或等于所述预设并行数量;对于输入每条数据通道的同一个激光点数据而言,每个角度偏转计算单元所需执行的角度偏转次数是相等。
进一步地,所述状态机控制模块包括突发读控制模块、单次读控制模块和变换控制模块;角度偏转计算单元,用于在突发读控制模块发出的突发读命令的触发作用下,从cache存储器突发读取出一批激光点数据,其中,该一批激光点数据的数量等于突发长度;或者,在单次传输控制模块发出的单次读命令的触发作用下,从cache存储器单次读取出一批激光点数据,其中,该一批激光点数据的数量等于单次长度;突发读控制模块或单次读控制模块通过计数的方式调度角度偏转计算单元多次读取出激光点数据,以使预设定位数量个激光点数据被读入所述位置变换处理模块;预设并行数量个角度偏转计算单元,用于每当并行获取到激光点数据时,并行控制激光点数据进行角度偏转计算,获得对应的参考坐标,再将参考坐标传输给序号相同的坐标偏移计算单元;每个角度偏转计算单元内获得的参考坐标各不相同;预设并行数量个坐标偏移计算单元,用于每当并行获取到参考坐标时,并行地控制所述参考坐标沿着同一种坐标轴方向执行坐标偏移;预设并行数量个坐标偏移计算单元,还用于在并行获取的参考坐标经过一次第一坐标轴方向的坐标偏移和一次第二坐标轴方向的坐标偏移后,将经过同一轮位置变换后的参考坐标设置为目标偏移坐标,再索引出目标偏移坐标对应的定位概率值;在每条数据通道内,所述变换控制模块先通过计数的方式触发所述坐标偏移计算单元索引出由同一轮位置变换得到的目标偏移坐标所对应的定位概率值,再有序地向与所述坐标偏移计算单元相连接的累加器输出该由同一轮位置变换得到的目标偏移坐标所对应的定位概率值;预设并行数量个累加器,用于以先入先出的方式并行接收所述定位概率值,再在每个累加器内对每次接收到的定位概率值进行一次累加,每当所述变换控制模块统计到在累加器内累加的次数达到所述预设定位数量时,将当前累加的结果设置为一个定位概率和值,并确定参与同一轮位置变换的激光点数据的数量达到所述预设定位数量;其中,所述预设并行数量是预先配置;所述预设定位数量表示用于定位所述分块地图的一个目标位置所需的激光点数据的数量。
进一步地,每当对同一个激光点数据进行一次角度偏转计算,获得一个新的参考坐标,再对该新的参考坐标进行一次坐标偏移计算,获得一个新的目标偏移坐标并索引到对应的一个定位概率值;一轮位置变换包括一次角度偏转计算和一次坐标偏移计算,一次坐标偏移计算包括一次横坐标偏移计算和一次纵坐标偏移计算;其中,相同类型的角度偏转计算和相同类型的坐标偏移计算使用同一轮位置变换来表示;相同类型的角度偏转计算和相同类型的坐标偏移计算使用同一轮位置变换来表示的情况下,每个坐标偏移计算单元内,所述相同类型的坐标偏移计算是指横坐标偏移计算方式和纵坐标偏移计算方式都是相同的坐标变换计算,以使同一条数据通道内经过相同类型的角度偏转计算和相同类型的坐标偏移计算后的激光点数据与计算之前的激光点数据之间都存在相同的相对位姿关系;其中,同一个激光点数据在不同角度偏转计算单元内进行角度偏转计算时,所需的基准偏转角度是不同。
进一步地,一轮位置变换包括:每当所述位置变换处理模块执行过一次角度偏转运算时,所述位置变换处理模块控制相应的参考坐标先沿着第一坐标轴方向执行一次坐标偏移,再沿着第二坐标轴方向执行一次坐标偏移,以形成坐标偏移计算方式;其中,第一坐标轴方向表示横坐标轴方向时,第二坐标轴方向表示纵坐标轴方向;或者,第一坐标轴方向表示纵坐标轴方向时,第二坐标轴方向表示横坐标轴方向。
进一步地,所述分块地图表示为栅格地图时,所述分块地图的横坐标轴方向所允许容纳的最大栅格数量大于或等于同一个参考坐标在所述分块地图的横坐标轴方向上所允许的最大偏移次数与横坐标偏移步长的乘积,所述分块地图的纵坐标轴方向所允许容纳的最大栅格数量大于或等于同一个参考坐标在所述分块地图的纵坐标轴方向上所允许的最大偏移次数与纵坐标偏移步长的乘积;其中,所述位置变换处理模块预先配置有所述参考坐标在所述分块地图的横坐标轴方向上所允许的最大偏移次数及其在横坐标轴方向上的坐标偏移步长、所述参考坐标在分块地图的纵坐标轴方向上所允许的最大偏移次数及其在纵坐标轴方向上的坐标偏移步长。
进一步地,每个角度偏转计算单元,用于在获取到激光点数据后,分别从各自对应的基准偏转角度开始,沿着既定时针方向且绕着所述分块地图的坐标系原点旋转目标偏转次数,并依次保存每次旋转出的参考坐标,以使每个角度偏转计算单元各获得数量为目标偏转次数的参考坐标且传输给序号相同的坐标偏移计算单元;每个坐标偏移计算单元,用于在获取到参考坐标后,对参考坐标沿着所述分块地图的第一坐标轴方向执行第一预设遍历次数的坐标偏移计算并依次保存每次坐标偏移出的偏移结果,以获得所述分块地图的第一坐标轴方向上的数量为第一预设遍历次数的偏移结果;每个坐标偏移计算单元,还用于在每当一个参考坐标已经沿着所述分块地图的第一坐标轴方向执行一次坐标偏移计算,则控制前述一次坐标偏移后的参考坐标沿着所述分块地图的第二坐标轴方向执行第二预设遍历次数的坐标偏移计算并依次保存每次坐标偏移出的偏移结果,以获得第二坐标轴方向上的数量为第二预设遍历次数的偏移结果,直至一个参考坐标沿着第一坐标轴方向进行坐标偏移计算所得的偏移结果都是沿着第二坐标轴方向执行第二预设遍历次数的坐标偏移计算,累计获得数量为第一预设遍历次数与第二预设遍历次数的乘积的目标偏移坐标;进而在每条数据通道内,同一个激光点数据旋转过目标偏转次数的情况下,累计获得的目标偏移坐标的数量为目标偏转次数、预设并行数量、第一预设遍历次数与第二预设遍历次数的乘积;其中,坐标偏移的次数由所述变换控制模块计数获得,为其调度提供依据;其中,第一坐标轴是横坐标轴时,第二坐标轴是纵坐标轴;或者,第一坐标轴是纵坐标轴时,第二坐标轴是横坐标轴。
进一步地,角度偏转计算单元,用于利用预先配置的角度偏转信息对激光点数据执行一次角度偏转计算,获得一个参考坐标,参考坐标是经过一次角度偏转计算后的激光点数据在所述分块地图上的坐标;其中,同一个激光点数据在同一个角度偏转计算单元内执行的每一次角度偏转计算,对应获取的参考坐标是不同;同一个激光点数据在不同角度偏转计算单元内并行执行的每一次角度偏转计算,对应获取的参考坐标是不同;在不同角度偏转计算单元内,同一个激光点数据在同一偏转次数下获取的参考坐标与第一次角度偏转计算获取的参考坐标之间存在相同的相对位姿关系。
进一步地,所述利用预先配置的角度偏转信息对激光点数据执行一次角度偏转计算的过程包括:利用偏转角度步长和当前偏转次数的乘积、初始偏转角度与所述激光点数据对应的基准偏转角度的和值、激光传感器的扫描半径建立三角函数关系式,计算当前一次角度偏转计算所产生的参考坐标;其中,所述激光点数据携带的信息包括扫描半径、所述激光点数据对应坐标位置相对于所述分块地图的坐标轴形成的初始偏转角度、以及激光点数据的角度偏转信息,扫描半径是所述激光传感器与当前参与角度偏转计算的激光点数据对应坐标位置之间的距离;激光点数据的角度偏转信息包括所述激光点数据对应的坐标位置绕着所述分块地图的坐标系原点旋转所需配置的偏转角度步长、当前偏转次数和目标偏转次数;所述扫描半径不超出所述激光传感器的有效探测范围。
进一步地,所述状态机控制模块还包括单次写控制模块;所述定位处理器还包括写FIFO模块;所述位置变换处理模块,用于在单次写控制模块发出的单次写命令的触发作用下,按照既定的坐标遍历顺序将各个累加器计算出的定位概率和值单次写入写FIFO模块;其中,单次写入的定位概率和值的数量是所述单次长度;其中,既定的坐标遍历顺序是换行遍历所述分块地图内的坐标位置的顺序、或换列遍历所述分块地图内的坐标位置的顺序。
进一步地,所述状态机控制模块还包括突发写控制模块;写FIFO模块,用于以先入先出的存储方式缓存所述位置变换处理模块输出的定位概率和值,并在突发写控制模块发出的突发写命令的触发作用下,将已缓存的定位概率和值突发写入所述cache存储器;其中,每当写FIFO模块缓存的定位概率和值的数量达到所述突发长度时,所述突发写控制模块触发所述写FIFO模块将所述突发长度个定位概率和值一次性写入所述cache存储器;所述突发写控制模块通过计数的方式统计所述写FIFO模块缓存的定位概率和值的数量。
进一步地,所述突发读控制模块发出的命令、所述变换控制模块发出的命令、所述单次写控制模块发出的命令以及所述突发写控制模块发出的命令都支持使用使能信号、计数信号或置位信号表示,且由各个模块内设的寄存器配置出;其中,所述突发读控制模块、所述变换控制模块、所述单次写控制模块、以及所述突发写控制模块都是由硬件语言实现的状态机,状态机是由相应功能的状态寄存器和组合逻辑电路连接而成;用于调度所述定位处理器循环跳转于不同的工作状态以实现保持从所述cache存储器读取多个激光点数据,并保持向所述cache存储器写入多个定位概率和值。
一种激光点数据处理系统,激光点数据处理系统包括cache存储器、DDR存储器和所述定位处理器;cache存储器连接在定位处理器和DDR存储器之间,所述DDR存储器的外部被构造为连接激光传感器,DDR存储器存储激光传感器采集的激光点数据。
进一步地,所述cache存储器包括第一缓存行和第二缓存行;所述cache存储器,用于根据所述定位处理器的读请求指令,将所述DDR存储器内所存储的激光点数据读取出来并存储到第一缓存行中,然后通知所述定位处理器读取第一缓存行中的数据;其中,所述定位处理器的读请求指令当中的读取地址信息是来源于所述突发读控制模块发出的突发读命令;所述cache存储器,还用于根据所述定位处理器的写请求指令,接收所述定位处理器输出的定位概率和值,并将定位概率和值存储到第二缓存行中,然后通知所述DDR存储器读取第二缓存行中的定位概率和值;其中,所述定位处理器的写请求指令当中的写入地址信息是来源于所述突发写控制模块发出的突发写命令。
进一步地,所述定位处理器每次从所述cache存储器读取激光点数据之前,依次对各条第一缓存行进行数据索引;若所需读取的激光点数据存在于当前索引的一条第一缓存行中,则从当前索引的一条第一缓存行中读取所需读取的激光点数据;若所需读取的激光点数据不存在于所述cache存储器内所有的第一缓存行中,则触发所述cache存储器从所述DDR存储器中突发读取出数据,并存储起来以更新掉对应第一缓存行中的数据,直至所述定位处理器从第一缓存行中读取到所需的激光点数据。
进一步地,若所述cache存储器从所述DDR存储器中突发读取一次所获得的激光点数据的数量小于或等于缓存行长度时,从所述DDR存储器中突发读取出的数据缓存到预先设置的最早被所述定位处理器读取的一条第一缓存行中,以更新掉预先设置的最早被所述定位处理器读取的一条第一缓存行中部分或全部的数据;其中,缓存行长度是一条第一缓存行当中设置的连续的地址单元的数量,以确定一条第一缓存行当中地址单元连续的数据的数量;每个地址单元的数据存储容量相等。
进一步地,所述定位处理器在一个时钟周期内对所述cache存储器突发传输操作过的地址单元的数量等于所述定位处理器在一个时钟周期内对所述cache存储器单次传输操作过的地址单元的数量;所述定位处理器以目标类型传输操作的方式访问外部存储器的情况下,从cache存储器内获取数据是快于从DDR存储器内获取数据;其中,目标类型传输操作是突发传输操作或单次传输操作;其中,突发传输操作是突发读操作或突发写操作,单次传输操作是单次读操作或单次写操作。
本申请的技术效果在于:
与现有技术相比,本申请公开的定位处理器内设置多条变换起点基准量不同的数据通道,从而支持同一个激光点数据并行执行不同轮位置变换,且可以通过设置角度偏转差异来在各条数据通道同步启动相应轮位置变换,每条条数据通道不对同一激光点数据反复执行同一轮位置变换(角度偏转计算相同(从同一变换起点基准量开始,在相同偏转次数下转动过的角度相等)且坐标偏移计算都相同(在同一坐标轴方向下以相同的偏移次数偏移过的坐标偏移量相等))。基于状态机控制逻辑,定位处理器在内设的状态机控制模块的控制下,将从cache存储器读入预设定位数量个激光点数据,作为源数据(可以组成激光点云),则共享到各条数据通道中,并在各条数据通道中为每个源数据分配对应的多轮位置变换(以变换起点基准量进行区分),使每条数据通道同步进行互不相同的多轮位置变换,则将状态机进入新的工作状态所需延迟的时间缩短,缩短的倍数与数据通道的数量正相关。
定位处理器内部的位置变换处理模块会通过进行与位置变换的轮数相同次角度偏转计算以获得多个参考坐标,再将计算得到的参考坐标同步进行各个坐标轴方向的遍历和坐标偏移计算,以便于索引获得相应的坐标偏移范围内对应的定位概率值;然后可以通过累加器将数据通道中由同一轮位置变换而获得的对应定位概率值累加,对于预设定位数量的激光点数量在同一条数据通道内依次进行所述同一轮位置变换后,获得预设定位数量个目标偏移坐标并索引出相同数量个定位概率值,送往所在数据通道的累加器后,在状态机控制模块的计数控制下,每当累加器连续累加的次数等于预设定位数量时,得到一个定位概率和值,进而由多条数据通道同步计算出同一激光点数据在各轮位置变换中对应的定位概率和值,节省所述位置变换处理模块需要等待运算的时间,提升所述位置变换处理模块对激光点数据的复用能力和迭代处理速度;因而在硬件资源和占用芯片面积一定的情况下,用于位置变换的数据通道的数量越多,获取定位概率和值的速度就越快,加快定位软件算法的执行效率,整体上等效于缩短处理器的输出延迟时间。
为了获得一个定位概率和值,需要在同一条数据通道内同步控制经过不同类型角度偏转计算而得到的参考坐标沿着分块地图的横坐标轴方向发生偏移、沿着分块地图的纵坐标轴方向发生偏移,为重定位算法的在软件执行层面的定位并行输出足够多的坐标偏移状态,保证重定位的准确性;再将同一条数据通道经过索引缓存而同步输出的定位概率值(对应于由相同类型的角度偏转计算和相同类型的坐标偏移计算得到的目标偏移坐标)进行累加,以使每条数据通道可以单独获得具备定位价值的一个定位概率和值,不需设置两条通道交替进行批量数据的乘加计算,以加速软件指令从用于定位一个目标位置所需的所有定位概率和值当中,选择出数值最大的一个定位概率和值,再将数值最大的一个定位概率和值对应的修正位置设置为所述定位处理器在分块地图内重定位出的位置。
在所述预设并行数量个角度偏转计算单元同时控制激光点数据进行角度偏转计算的情况下,第i个角度偏转计算单元的基准偏转角度与第(i-1)个角度偏转计算单元的基准偏转角度的差值等于目标偏转次数(所述位置变换处理模块所允许的最大角度偏转次数)与角度偏转步长的乘积,从而将序号相邻的两个角度偏转起点的角度差构造成变换起点基准量的差异,对于同一个激光点数据,在所有数据通道角度内,并行执行的角度偏转情况才完整地反映为一个激光点数据在连续进行的所有角度偏转情况),而在本实施例中通过设置多条数据通道来同步进行不同轮位置变换;即使激光点在分块地图内是离散分布的,但通过累加器的遍历和缓存,使得并行传输的多个定位概率值都是由不同轮位置变换得到的目标偏移坐标所对应的定位概率值,则可以直接遍历的方式通过累加来获得定位概率和值。从而加快获取定位概率和值,加快定位软件算法的执行效率,整体上等效于缩短处理器的输出延迟时间。若定位处理器所在的机器人发生移动,则角度偏转计算单元内的激光点数据会被新采集的更新掉,只要定位处理器保持在状态机控制模块的循环调度下实时刷新定位概率值,就可以通过新的定位概率和值匹配出新的重定位位置,加快克服激光传感器采集的点云数据噪声和定位误差的影响,提高定位系处理器在各种定位环境下的实时性,能够高效完成分块地图所在的激光地图的重定位。
在本申请中,若装配所述定位处理器的机器人出现定位丢失时,所述定位处理器通过控制所述角度偏转计算单元按照设定的角度偏转步长对激光点数据进行偏移操作,获得相应激光点数据在角度偏转后变换成的参考坐标,以纠正机器人位姿的角度偏转误差,方便现有技术的定位算法获取相应坐标位置处的概率值和在小范围内进行坐标轴方向的偏移计算。以适应于在移动机器人重定位过程中出现左右偏转的现象。用于定位一个目标位置所需的所有定位概率和值的数量是等于同一个激光点数据在分块地图的纵坐标轴方向上的最大偏移次数、同一激光点数据在分块地图的横坐标轴方向上的最大偏移次数与同一激光点数据绕着分块地图的坐标系原点的最大角度偏转次数的乘积,其中,各种坐标轴方向上的最大偏移次数和绕着分块地图的坐标系原点的最大角度偏转次数是预先设置,以允许当前场景所使用的定位算法筛选出数值最大的一个定位概率和值。
与现有技术软件CPU处理同样大小的点云数据相比,在本申请公开的激光点数据处理系统中,状态机控制模块的工作状态控制和位置变换处理模块并行执行的角度偏转计算和坐标偏移计算,兼顾激光传感器旋转或激光点数据处理系统移动过程中产生的误差,而且cache存储器作为缓存中介设置在定位处理器和DDR存储器之间,支持缓存激光点数据和地图信息(角度、坐标和概率值),在定位处理器通过cache存储器访问DDR存储器时,不会占用大量DDR带宽,降低对频率要求,也可以实现在最大程度节省硬件资源的基础上,加快参考坐标在所述分块地图的偏移区域范围内的并行计算速度。缩短位置概率信息的计算时间;再将定位概率和值通过cache存储器突发写入DDR存储器以供软件调用来完成重定位,实现定位处理器多通道、分批量地同步累加运算输出定位概率和值。
在定位处理器不采用大容量的内嵌SRAM和内嵌flash进行激光点数据和地图数据缓存的前提下,在定位处理器与其外部的DDR存储器之间连接上专门的cache存储器,以代替所片内存储器执行大容量的应用程序存储功能和进行激光点数据(采样数据)和地图数据(定位计算所需的坐标概率信息)缓存,从而不需在激光点数据处理系统中开发一款更大容量的处理器芯片,克服因内嵌存储器的容量而需要扩大处理器芯片面积的问题,降低处理器芯片的开发成本。在所述cache存储器允许采用突发传输操作的方式访问所述DDR存储器,定位处理器允许采用单次传输操作的方式访问所述cache存储器的情况下,由于定位处理器在一个时钟周期内对所述cache存储器突发传输操作过的地址单元的数量等于定位处理器在一个时钟周期内对所述cache存储器单次传输操作过的地址单元的数量,以使得定位处理器采用突发传输操作访问所述cache存储器和采用单次传输操作的方式访问所述cache存储器在同一时钟周期内的传输过的数据的数量是一样;所以,定位处理器在不设置目标片内存储器的情况下对DDR存储器的访问不会受到单次传输操作的影响(来源于单次传输操作的访问效率制约),由于定位处理器以相同类型传输操作的方式进行访问的情况下,访问所述cache存储器是快于访问所述DDR存储器;所以,在所述cache存储器预先存有所述定位处理器所需访问的数据的情况下,所述定位处理器会以突发传输操作的方式或单次传输操作的方式优先在所述cache存储器对应缓存行中查找,提高对DDR存储器的访问效率。而且,cache存储器被配置为以突发传输操作的方式访问DDR存储器且定位处理器被配置为以单次传输操作的方式访问cache存储器的情况下,对应产生的读写效率比定位处理器以单次传输操作方式访问DDR存储器所产生的读写效率高。解决定位处理器以单次传输操作的方式直接访问DDR存储器存在的效率过低的问题。从而通过所述cache存储器与DDR存储器的协作来保证定位处理器的取指操作能够快速高效地进行。
在定位处理器之外,cache存储器能够一次性地从大容量的DDR存储器内读取一个缓存行的数据,以便于更新替换cache存储器内对应一个缓存行的数据,从而以一个缓存行长度为粒度进行缓存数据的刷新,实现定位处理器以一个缓存行长度为粒度从外挂的相应缓存行内索引出所需读取的第一目标数据,既兼顾到定位处理器访问数据的准确性和实时性,又考虑到定位处理器内嵌存储器的空间容量负担;不需要定位处理器将激光点数据和地图数据搬运到片内存储区之中,只需按需访问并较由cache存储器刷新缓存数据,减少软件对定位处理器的干预,让定位处理器释放更多的硬件计算资源给位置变换处理模块进行角度偏转计算和坐标偏移计算,加快定位处理器产生定位概率和值。
附图说明
图1为本实施例公开一种装配有定位处理器的激光点数据处理系统的框架示意图。
实施方式
下面结合附图对本发明的具体实施方式作进一步说明。以下实施方式中所涉及到的各模块均为逻辑电路单元,一个逻辑电路单元可以是一个物理单元、也可以是由多个逻辑器件按照一定的读写时序和信号逻辑变化组合而成的状态机,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本申请的创新部分,本申请实施方式中没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本发明实施方式中不存在其它的单元。
移动机器人在行走于环境区域内,采用激光传感器扫描周围的环境,采集各个方位处反馈回的激光点,并转换到统一坐标系内,建立起激光地图,也可以视为由多个局部坐标系下的分块地图组合成激光地图;然后能根据采集的激光点落入相应的地图坐标位置的概率信息确定目标位置,使得移动机器人能够利用激光地图对目标位置进行重定位,该目标位置是机器人曾经定位过但丢失其坐标信息的位置。具体地,激光传感器是可以360度旋转的激光雷达,激光雷达内置激光探头和动作旋转机构,动作旋转机构能支持激光探头360度旋转,所以在动作旋转机构的驱动作用下,激光探头绕着激光雷达的旋转中心,每旋转一圈就得到激光点云数据,即在激光探头周围形成的激光点的集合。分散在分块地图内的激光点数据都是进行定位的必要数据,在地图中丢失所需定位的目标位置时,需要恢复对该目标位置的定位,而大批量的地图信息或激光点的分布‍往往是离散,因此,本申请设计逻辑电路模块并行处理数据,具体利用片外存储器保存激光扫描出的激光点数据和预先构建的分块地图的地图数据,然后使用硬件电路实施重定位算法,即利用硬件电路的方式完成对激光点数据迭代处理以求出概率和值,再将概率和值写入专门的存储器件中,加速遍历求概率和的进程,实现由软件仅仅通过概率和比较就在地图上得出目标位置。
作为一种实施例,公开一种定位处理器,参阅图1可知,定位处理器被配置为与cache存储器连接,cache存储器与DDR存储器连接;定位处理器的内部设置状态机控制模块和位置变换处理模块;状态机控制模块采用状态机控制方式,产生控制信号,用于控制位置变换处理模块的运行,也视为控制定位处理器的运行;若位置变换处理模块内划分出多种计算单元,而且每种计算单元都有相应迭代起点的迭代计算需求,则状态机控制模块为每种计算单元配置一个状态机以保证计算单元从对应的迭代起点开始迭代计算,同时状态机控制模块还设置相关的寄存器,专门为各个状态机提供读指令和写指令,包括但不限于起到触发、使能、置位、复位、清零、工作状态的转换、打拍计数等控制作用。位置变换处理模块内设置有多条数据通道,每条数据通道都包括前述的各种计算单元,而且是在状态机的控制下支持读写和迭代计算,而且是并行运行。DDR存储器用于存储外部的激光传感器采集的激光点数据,为定位处理器提供用于索引概率信息的源数据。
在本实施例中,定位处理器,用于在内部设置的状态机控制模块的控制下,从cache存储器内突发读取出或单次读取出激光点数据,再将读取出的每个激光点数据同时传输到各条数据通道中,以使各条数据数据通道在同一时间内获得相同的激光点数据;定位处理器还控制每条数据通道分别从对应的变换起点基准量开始同步进行多轮位置变换,以使每条数据通道同步获得多个不同的目标偏移坐标及其对应的定位概率值,其中,每条数据通道对应的变换起点基准量是彼此不同,每条数据通道缓存的激光点数据进行位置变换的起点是不同且会在同一时钟周期内进行不同类型的角度偏转计算,以分别进行不同轮位置变换。为了保证每条数据通道获得定位概率值的数量相等,则需要控制每条数据通道所需进行的位置变换的轮数是相等,即需要控制每条数据通道输出的目标偏移坐标的数量是相等。
需要说明的是,所述定位处理器中计算获得的一个目标偏移坐标是一个激光点数据在一条数据通道内经过一轮位置变换得到的结果,一个目标偏移坐标可以索引到对应的定位概率值,一条数据通道内可以执行多轮位置变换或先后执行过多轮位置变换,以使一条数据通道可以获得多个目标偏移坐标及其对应的定位概率值,但其它数据通道对于同一个激光点数据执行的是其它轮位置变换,可以是更大轮次的位置变换,即角度偏转次数更多(相对于变换起点基准量产生更大的偏转角度)或坐标偏移次数更多(相对于变换起点基准量产生更大的坐标偏移量)。
位置变换处理模块,用于在每条数据通道中依次将由同一轮位置变换得到的目标偏移坐标所对应的定位概率值进行累加,得到定位概率和值,以使得位置变换处理模块的每条数据通道同时获得多个定位概率和值,其中,定位概率和值是在一条数据通道内由预设定位数量个定位概率值累加得到,预设定位数量个定位概率值对应的目标偏移坐标分别来源于同一条数据通道中执行过同一轮位置变换的各个激光点数据。一轮位置变换表示对一个激光点数据先执行一次角度偏转,再沿着一种坐标轴方向执行的一次坐标偏移,再沿着另一种坐标轴方向执行的一次坐标偏移;对于多个不同的激光点数据经过同一轮位置变换产生的目标偏移坐标,相对于变换起点基准量产生的角度偏转量不一定相等,且相对于变换起点基准量产生的角度偏转量也不一定相等。在所述定位处理器内部,数据通道的数量是固定设置,不因指令的变化而变化。
定位处理器,用于在其内部的状态机控制模块的控制下,将其内部设置的位置变换处理模块获得的定位概率和值突发写入cache存储器,或者将其内部设置的位置变换处理模块获得的定位概率和值单次写入cache存储器。所述cache存储器,用于在状态机控制模块的控制下,将定位概率和值突发写入所述DDR存储器中,比所述cache存储器在相等的时间内将定位概率和值单次写入所述DDR存储器的效率高。
在本实施例中,cache存储器作为缓存中介设置在定位处理器和DDR存储器之间,支持缓存激光点数据和地图信息(角度、坐标和概率值),在所述定位处理器通过cache存储器访问DDR存储器时,不会占用大量DDR带宽,降低对频率要求,也可以实现在最大程度节省硬件资源的基础上,加快参考坐标在所述分块地图匹配的偏移区域范围内的并行计算速度。另一方面,在定位处理器(视为一种通用微控制器)与cache存储器之间,所述定位处理器在一个时钟周期内对所述cache存储器突发传输操作过的地址单元的数量等于所述定位处理器在一个时钟周期内对所述cache存储器单次传输操作过的地址单元的数量;其中,突发传输操作是突发读操作或突发写操作,单次传输操作是单次读操作或单次写操作。
与现有技术相比,本申请公开的定位处理器内设置多条变换起点基准量不同的数据通道,从而支持同一个激光点数据并行执行不同轮位置变换,且可以通过设置角度偏转差异来在各条数据通道同步启动相应轮位置变换,每条数据通道不对同一激光点数据反复执行同一轮位置变换(角度偏转计算相同(从同一变换起点基准量开始,在相同偏转次数下转动过的角度相等)且坐标偏移计算都相同(在同一坐标轴方向下以相同的偏移次数偏移过的坐标偏移量相等));但会连续执行多轮位置变换(角度偏转计算不同(从同一变换起点基准量开始,在不同偏转次数下转动过的角度不相等)且坐标偏移计算不同(在同一坐标轴方向下以不同偏移次数偏移过的坐标偏移量不相等))。基于状态机控制逻辑,定位处理器在内设的状态机控制模块的控制下,将从cache存储器读入预设定位数量个激光点数据,作为源数据(可以组成激光点云),则共享到各条数据通道中,并在各条数据通道中为每个源数据分配对应的多轮位置变换(以变换起点基准量进行区分),使每条数据通道同步进行互不相同的多轮位置变换,则将状态机进入新的工作状态所需延迟的时间缩短,缩短的倍数与数据通道的数量正相关。
所述定位处理器内部的位置变换处理模块会通过进行与位置变换的轮数相同次角度偏转计算以获得多个参考坐标,再将计算得到的参考坐标同步进行各个坐标轴方向的遍历和坐标偏移计算,以便于索引获得相应的坐标偏移范围内对应的定位概率值;然后可以通过累加器将数据通道中由同一轮位置变换而获得的对应定位概率值累加,对于预设定位数量的激光点数量在同一条数据通道内依次进行同一轮位置变换后,获得预设定位数量个目标偏移坐标并索引出相同数量个定位概率值,送往所在数据通道的累加器后,在状态机控制模块的计数控制下,每当累加器连续累加的次数等于预设定位数量时,得到一个定位概率和值,进而由多条数据通道同步计算出同一激光点数据在各轮位置变换中对应的定位概率和值,节省所述位置变换处理模块需要等待运算的时间,提升所述位置变换处理模块对激光点数据的复用能力和迭代处理速度;因而在硬件资源和占用芯片面积一定的情况下,用于位置变换的数据通道的数量越多,获取定位概率和值的速度就越快,加快定位软件算法的执行效率,整体上等效于缩短处理器的输出延迟时间。
特别地,所述定位处理器的内部不设置目标片内存储器,目标片内存储器例如片内SARM存储器或片内flash存储器,用于缓存从DDR存储器内所需访问的数据;转而在定位处理器的外部设置cache存储器以缓存从DDR存储器内所需访问的数据,尽可能减少对定位处理器的片内缓存空间的占用。优选地,所述目标片内存储器包括嵌入式SRAM和嵌入式flash;所述定位处理器、所述cache存储器和所述DDR存储器设置在同一电路板的情况下,所述目标片内存储器嵌入到所述定位处理器所在的芯片内部,但嵌入式SRAM和嵌入式flash的设计成本很高,因此二者的晶圆面积不能做得很大,会制约所述定位处理器的使用,因此需要使用前述实施例公开的cache存储器和DDR存储器作为片外存储器,不保留嵌入式SRAM和嵌入式flash的数据缓存功能,则所述定位处理器、所述cache存储器和所述DDR存储器设置在同一电路板的情况下,所述定位处理器不嵌入所述目标片内存储器,则直接使用前述实施例公开的cache存储器和DDR存储器作为片外存储器,不再使用所述目标片内存储器进行数据缓存,节约所述定位处理器的设计成本。
优选地,将AHB总线解析模块归属于状态机控制模块当中的一种状态机,起到传输控制作用;所述定位处理器可以采用AHB总线解析模块(可以理解为寄存器模组)与cache存储器进行AHB总线上的数据交互,cache存储器也可以采用AHB总线解析模块(可以理解为寄存器模组)与DDR存储器进行AHB总线上的数据交互;AHB总线解析模块,用于解析总线协议指令,将总线传送的数据信号和地址信号进行转化,在所述定位处理器发出取址指令后按照总线地址访问cache存储器,cache存储器也可以按照总线地址访问所述定位处理器的各条数据通道,因此,总线地址包括cache存储器的寻址地址,总线地址包括各条数据通道的寻址地址。本实施中使用的总线协议是AHB总线协议,其中,突发读取操作的控制作用、单次写操作的控制作用和突发写操作的控制作用,且均由AHB总线协议规范(这一作为SOC的片上系统总线协议)规定的,使得AHB总线解析模块可以划分为图1所示的突发读控制模块、单次读控制模块、单次写控制模块和突发写控制模块。所述定位处理器通过内部的状态机控制模块进行数据的突发传输操作的过程中,发出的地址都是对齐的,则以对齐地址的形式来对存储空间(逻辑 Bank)进行划分,在外部访问突发读取或者突发写入数据时,要以这种划分为前提进行,对齐地址是由每拍传输的数据的宽度来决定的,对齐地址是属于连续地址,存在的地址数量是突发长度。所述定位处理器通过内部的状态机控制模块进行数据的单次写操作的过程中,一次性传输的连续地址的数量是单次长度,在外部单次读取或者单次写入数据时,单次长度是由每拍传输的地址连续的数据来决定的。其中,单次长度小于突发长度,单次长度大于或等于数值1;突发长度表示一次突发传输操作下传输的连续的地址单元的数量;突发传输操作是突发读操作或突发写操作;单次长度表示一次单次传输操作下传输的连续的地址单元的数量;单次传输操作是单次读操作或单次写操作。在本实施例中,一次突发读取的数据数量与一次单次读取的数据数量的比值是预设整数值,使得所述定位处理器经过预设整数值的单次写操作将定位概率和值写入写FIFO模块,才能将所述定位处理器一次突发读取到的激光点数据进行新的一轮位置变换,避免多通道突发传输数据的速度快于每轮位置变换的计算速度,造成AHB总线的数据堵塞。
需要说明的是,DDR SDRAM(简称为DDR)双倍速率同步动态随机存储器,DDR存储器可以通过DDR接口与定位处理器外部的总线建立电气连接关系,以将所述重定位系统中的内存系统变成双倍数据速率 (DDR) 内存系统。DDR存储器不仅可以作为所述重定位系统中容量最大的存储器,DDR存储器的DDR接口可以在不改变系统最大信号频率的情况下显着提高数据传输速率;即使数据信号的最大频率增加了两倍,DDR信号使外部的访问设备能够在保持当前可行的最大时钟频率的同时将吞吐量提高一倍。
作为一种实施例,所述定位处理器支持软件指令从用于定位一个目标位置所需的所有定位概率和值当中,选择出数值最大的一个定位概率和值,再将数值最大的一个定位概率和值对应的修正位置设置为所述重定位系统在分块地图内重定位出的位置,其中,定位概率和值对应的修正位置作为目标位置的候选坐标位置,不等效于所述目标偏移坐标。为了减少定位处理器的访问次数及其内部计算资源的使用量,每当预设定位数量个激光点数据全部被所述位置变换处理模块处理为对应修正位置处的定位概率和值输出后,软件指令可以从DDR存储器中筛选出数值相对大的定位概率和值并索引到对应的修正坐标,然后随着机器运动,这个最大的定位概率和值会随之更新。
在所述定位处理器中,每当预设定位数量个激光点数据全部被所述位置变换处理模块处理为对应修正位置处的定位概率和值输出后,获得用于定位一个目标位置所需的所有定位概率和值,同一个激光点数据所需经过的位置变换的轮数等于所述位置变换处理模块在相应位置变换过程中累计所产生的角度偏转次数、横坐标偏移次数与纵坐标偏移次数的乘积,是所有数据通道在相应位置变换过程中累计输出的所有定位概率和值,每条数据通道内累计输出的定位概率和值的数量是等于所述同一个激光点数据所需经过的所有位置变换的轮数(不限于数据通道)与数据通道的数量的比值。
一个定位概率和值对应的修正位置表示在分块地图内,相对于坐标系原点作一轮目标变换得到的坐标位置;目标变换是为了得到同一个定位概率和值,所述位置变换处理模块所需进行的一轮位置变换;以使目标变换与所述位置变换在角度偏转计算方式上是相同,且目标变换与所述位置变换在横坐标偏移计算方式上都是相同,且目标变换与所述位置变换在纵坐标偏移计算方式上都是相同;其中,以所述激光传感器的当前位置为坐标系原点,在所述激光传感器的有效探测范围内生成所述分块地图。
作为一种实施例,所述定位处理器设置在可移动装置的内部,可移动装置装配至少一个激光传感器,所述重定位系统的外部被构造为连接激光传感器,以使DDR存储器存储激光传感器采集的激光点数据;可移动装置可以是机器人,激光传感器则可以是机体上装配的激光雷达。其中,所述预设定位数量个激光点数据是机器人在所述目标位置处使用激光雷达扫描一圈而获得的一批激光点数据,可标记为激光点云数据。所述目标偏移坐标所对应的定位概率值表示经过一轮位置变换得到目标偏移坐标的激光点数据落入所述分块地图对应位置的概率大小,或表示可移动装置落入所述分块地图对应位置的概率大小,或表示分块地图的单元格位置被反射激光点数据的障碍物占用的概率;每个激光点数据经过一轮位置变换后得到的目标偏移坐标与一个定位概率值存在对应关系,且是预先设置好,以便所述位置变换处理模块调用。
在本实施例中,以所述激光传感器的当前位置为坐标系原点,在所述激光传感器的有效探测范围内生成所述分块地图;所述分块地图是预设尺寸的局部地图,用于描述处于所述激光传感器的有效探测范围之内的区域,覆盖到各种角度和坐标轴方向上产生的位置漂移范围。优选地,分块地图是根据当前场景所使用的定位算法配置的预设尺寸的局部地图,且是处于所述激光传感器的有效探测范围之内的栅格地图;当所述激光传感器被移动至新的位置时,所述激光传感器的有效探测范围得到更新,使得定位算法配置的分块地图的信息也发生改变。
需要强调的是,实施例以部分环境地图为例,即以装配所述定位处理器的机器人的当前位置为原点,在设定激光传感器的有效搜索范围内生成分块地图。考虑到激光传感器所发射的激光束具有一定的射程,即只能扫描到一定范围内的区域,优选地,在确定搜索范围时,可以以激光束的射程为依据,可以在机器人前后左右5米射程的范围内生成分块地图。机器人出现定位丢失时,当前位姿存在一定的偏差,为此,本实施例在当前位姿的基础上按照设定的角度偏转量和坐标偏移量进行位置变换;机器人在移动时,当前位姿存在一定的漂移误差,为此,实施例在当前位姿的基础上按照环境地图上设定的坐标偏移量和角度偏转量进行栅格位置变换,得到变换后的机器人位姿信息。进一步地,所述定位概率和值用于反映了机器人的准确定位在该分块地图一位置的可能性的大小,定位概率和值越大,表示机器人的准确定位在该分块地图一位置的可能性越大。可选的,在确定环境地图中区域的定位概率值时,可以对环境地图进行处理,得到对应的栅格地图,栅格地图中的障碍物所对应的定位概率可以服从正态分布。栅格地图中每一个栅格长度存在对应的坐标范围,环境地图中包含障碍物和空白区域;栅格地图确定之后,可以进行保存,以便在下次进行定位恢复时可以直接使用。在此基础上,根据机器人的当前位姿,可以确定机器人在栅格地图中的位置,然后根据激光探头所扫描到各个对应的栅格点的定位概率值的和值,得到定位概率和值。
因此,所述定位处理器通过其内部的位置变换处理模块将预设定位数量个激光点数据全部被处理为用于定位一个目标位置所需的所有定位概率和值时,重定位算法可以从中选择数值最大的定位概率和值对应的修正位置作为重定位出的位置,即以预设定位数量个激光点数据为单位,在分块地图地图上定位恢复回的位置。若定位处理器所在的机器人发生移动,存储于cache存储器内的激光点数据会被新采集的更新掉,只要定位处理器保持在状态机控制模块的循环调度下实时刷新定位概率值,就可以通过新的定位概率和值匹配出新的重定位位置,加快克服激光传感器采集的点云数据噪声和定位误差的影响,使所述定位处理器在各种定位环境下都保持较高的系统性能,能够高效完成分块地图所在的激光地图的重定位。
作为一种实施例,参阅图1可知,所述cache存储器连接在所述定位处理器和所述DDR存储器之间,所述DDR存储器和所述cache存储器都是所述定位处理器的片外存储器;如图1所示,所述DDR存储器和所述cache存储器连接,所述DDR存储器和所述cache存储器之间向上的箭头表示所述cache存储器从所述DDR存储器的接口读取数据,所述DDR存储器和所述cache存储器之间向下的箭头表示所述cache存储器向所述DDR存储器的接口写入数据。cache存储器,简称为cache,用于缓存所述定位处理器从所述DDR存储器内所需读取的数据、以及所述定位处理器所需写入述DDR存储器的数据,则所述定位处理器可以通过cache存储器来间接访问所述DDR存储器,每次可以直接从cache存储器读取所需访问的数据当中的一部分(相当于原本存储于所述DDR存储器内的一段指令集当中的若干条指令,若干条指令是预先被读取到cache存储器),当然所述定位处理器也可以将少部分指令写入cache存储器内以起到数据备份的作用。值得注意的是,cache存储器的接口所支持的输入速率与其输出速率最好不存在差异,则不需要在所访问cache存储器的设备中设置数据缓冲区来平衡这一差异,减少所述定位处理器访问控制的复杂度。
在本实施例中,相对于所述定位处理器,所述DDR存储器内存储的数据是外部数据,包括需要被所述定位处理器调取的指令和数据块;为了满足激光点数据和地图信息的存储量需求,所述DDR存储器的容量大于所述cache存储器的容量。
作为一种实施例,所述位置变换处理模块包括预设并行数量个角度偏转计算单元、预设并行数量个坐标偏移计算单元、以及预设并行数量个累加器;位置变换处理模块的内部有序设置多条所述数据通道,每条数据通道都标记一个序号,可以是数值由小到大的顺序依次设置出来。如图1所示,预设并行数量使用n来表示,优选地,n是大于3的整数。预设并行数量个角度偏转计算单元各标记一个序号,对应地,在图1中,n个角度偏转计算单元,自上而下依次表示为角度偏转计算单元_1、角度偏转计算单元_2、...、角度偏转计算单元_n来区别表示;预设并行数量个坐标偏移计算单元各标记一个序号,对应地,在图1中,n个坐标偏移计算单元,自上而下依次表示为坐标偏移计算单元_1、坐标偏移计算单元_2、...、坐标偏移计算单元_n来区别表示;预设并行数量个累加器各标记一个序号,对应地,在图1中,n个累加器自上而下依次表示为累加器_1、累加器_2、...、累加器_n来区别表示。一个角度偏转计算单元连接序号相同的一个坐标偏移计算单元,一个坐标偏移计算单元连接序号相同的一个累加器,序号相同的一个角度偏转计算单元、一个坐标偏移计算单元以及一个累加器依次连接成一条所述数据通道;对应地,在图1中,角度偏转计算单元_1连接坐标偏移计算单元_1,坐标偏移计算单元_1连接累加器_1,以在所述位置变换处理模块内连接形成数据通道1。角度偏转计算单元_2连接坐标偏移计算单元_2,坐标偏移计算单元_2连接累加器_2,以在所述位置变换处理模块内连接形成数据通道2。角度偏转计算单元_n连接坐标偏移计算单元_n,坐标偏移计算单元_n连接累加器_n,以在所述位置变换处理模块内连接形成数据通道n。值得注意的是,所述变换起点基准量表示为所述角度偏转计算单元所需的基准偏转角度时,第i个角度偏转计算单元的基准偏转角度与第(i-1)角度偏转计算单元的基准偏转角度的差值等于目标偏转次数与角度偏转步长的乘积,以使相邻序号的角度偏转计算单元所需的基准偏转角度之间存在差异且对应产生的角度差值是固定,其中,i是设置为大于或等于2,且i是设置为小于或等于n,每次角度偏转计算所需的角度偏转步长是相等,不限于使用哪一个激光点数据执行哪一轮位置变换;对于输入每条数据通道的同一个激光点数据而言,每个角度偏转计算单元所需执行的角度偏转次数是相等,都等于所述位置变换处理模块所允许的最大角度偏转次数与预设并行数量的比值,以在每条数据通道内都从不同的基准偏转角度开始产生相等的角度偏转量。
需要说明的是,变换控制模块作为调度所述角度偏转计算单元、所述坐标偏移计算单元、和所述累加器循环处理数据的状态机,可以在执行旧数据的计算功能时让新数据等待。结合前述实施例可知,在变换控制模块的调度下,每当所述累加器中存在闲置的数据缓存空间时,与所述累加器相连接的所述坐标偏移计算单元将其索引到的定位概率值输入累加器中,则累加器可以以先入先出的存储方式接收所述坐标偏移计算单元所输入的定位概率值。另外,在变换控制模块的调度下,每当所述坐标偏移计算单元中存在闲置的数据缓存空间时,与所述坐标偏移计算单元相连接的角度偏转计算单元将各次角度偏转计算下获得参考坐标输入所述坐标偏移计算单元中。以触发所述数据通道继续对激光点数据进行新的一轮位置变换。
必要时在所述坐标偏移计算单元内构建坐标与定位概率值之间的映射关系,则所述坐标偏移计算单元将索引到的定位概率值存储到对应的地址单元处。
需要说明的是,所述坐标偏移计算单元内可以设置存储阵列,可以将坐标或定位概率值“填”进去,和表格的检索原理一样,先指定一个行,再指定一个列,就准确地找到所必需的单元格,这就是内存芯片寻址的基本原理。同理地,也可以通过指定存储的定位概率值的地址信息来读取出来,加快数据通道的数据传输速度。
作为一种实施例,所述状态机控制模块包括突发读控制模块、单次读控制模块和变换控制模块;角度偏转计算单元,用于在突发读控制模块发出的突发读命令的触发作用下,从cache存储器突发读取出一批激光点数据,其中,该一批激光点数据的数量等于突发长度;突发读控制模块通过计数的方式调度角度偏转计算单元多次突发读取出激光点数据,以使预设定位数量个激光点数据被读入所述位置变换处理模块;每次突发读取出激光点数据的数量是所述突发长度。或者,在单次传输控制模块发出的单次读命令的触发作用下,从cache存储器单次读取出一批激光点数据,其中,该一批激光点数据的数量等于单次长度;突发读控制模块或单次传输控制模块通过计数的方式调度点云存储模块多次读取出激光点数据以使预设定位数量个激光点数据依次传输到位置变换处理模块,每次单次读取出激光点数据的数量是单次长度,一般地,突发长度大于单次长度。
在本实施例中,预设并行数量个角度偏转计算单元,用于每当并行获取到激光点数据时,并行控制该激光点数据进行角度偏转计算,获得对应参考坐标,参考坐标的数量等于角度偏转计算的次数,每个角度偏转计算单元内获得的每个参考坐标各不相同;再将参考坐标传输给序号相同的坐标偏移计算单元;则在每条数据通道内,一个激光点数据被一个角度偏转计算单元控制为发生目标偏转次数的角度偏转计算,从而,在同一条数据通道内获得的参考坐标的数量等于目标偏转次数,所述位置变换处理模块所允许的最大角度偏转次数与预设并行数量的比值等于所述目标偏转次数,从而由预设并行数量个角度偏转计算单元对同一个激光点数据所执行的所有角度偏转计算代表激光点数据的所有角度偏转情况,并输出数量为所述目标偏转次数的不同参考坐标。
预设并行数量个坐标偏移计算单元,用于每当并行获取到参考坐标时,并行地控制所述参考坐标沿着同一种坐标轴方向执行坐标偏移;预设并行数量个坐标偏移计算单元,还用于在并行获取的参考坐标经过一次第一坐标轴方向的坐标偏移和一次第二坐标轴方向的坐标偏移后,将经过同一轮位置变换后的参考坐标设置为目标偏移坐标,再索引出目标偏移坐标对应的定位概率值。在每条数据通道内,对于突发读入的所述预设定位数量的激光点数据,由同一轮位置变换得到的目标偏移坐标所对应的定位概率值的数量都是所述预设定位数量,其中,所述预设并行数量是预先配置;所述预设定位数量表示用于定位所述分块地图的一个目标位置所需的激光点数据的数量。
基于电路芯片的面积成本制约,所述预设定位数量优选为数值200,预设并行数量优选为数值4,则在每条数据通道内,由同一轮位置变换得到的目标偏移坐标所对应的定位概率值的数量都是数值4,但还没达到所述预设定位数量,因此需要继续对新输入的激光点数据进行所述同一轮位置变换,以并行索引出多批由所述同一轮位置变换得到的目标偏移坐标所对应的定位概率值,数量达到所述预设定位数量之后,继续并行索引出多批由其它轮位置变换得到的目标偏移坐标所对应的定位概率值。
优选地,一个参考坐标经过第一预设遍历次数的横坐标轴方向的坐标偏移后,获得第一预设遍历次数个横轴偏移结果,在每个横轴偏移结果都经过第二预设遍历次数的纵坐标轴方向的坐标偏移后,由同一个激光点数据累计获得第一预设遍历次数与第二预设遍历次数的乘积个目标偏移坐标;进而在每条数据通道内,同一个激光点数据旋转过目标偏转次数的情况下,累计获得的目标偏移坐标的数量为目标偏转次数、第一预设遍历次数与第二预设遍历次数的乘积。在一些并行计算电路中可以是并行获得。为定位算法的在软件执行层面的定位提供足够多的坐标偏移状态,保证定位或重定位的准确性。
在每条所述数据通道内,所述变换控制模块先通过计数的方式触发所述坐标偏移计算单元索引出由同一轮位置变换得到的目标偏移坐标所对应的定位概率值,再有序地向与所述坐标偏移计算单元相连接的累加器输出该由同一轮位置变换得到的目标偏移坐标所对应的定位概率值,其中,先输出所述预设定位数量个由一轮位置变换得到的目标偏移坐标所对应的定位概率值,再输出所述预设定位数量个由另一轮位置变换得到的目标偏移坐标所对应的定位概率值,以实现累加器对所述预设定位数量个由一轮位置变换得到的目标偏移坐标所对应的定位概率值进行累加计算。
预设并行数量个累加器,用于以先入先出的方式并行接收所述定位概率值,即在每个累计器都是接收到不同轮位置变换得到的目标偏移坐标所对应的定位概率值;再在每个累加器内对每次接收到的定位概率值进行一次累加,将当前累加的结果设置为一个定位概率和值,并将当前累加的结果作为参与下一次累加的初始和值;每当所述变换控制模块统计到累加次数达到所述预设定位数量时,将当前累加的结果设置为一个定位概率和值,再将累加的初始和值设置为数值0,并确定参与同一轮位置变换的激光点数据的数量达到所述预设定位数量;同时,其它的累加器(其它累加器内统计出的累加次数也达到所述预设定位数量)并行输出定位概率和值,输出的每个定位概率和值分别对应一轮位置变换。
需要说明的是,所述变换控制模块当中的计数的方式可以是由所述变换控制模块内设的计数器在相同的时钟边沿处进行计数获得,作为各个工作状态的调度基础,即计数到一定的时钟周期时,满足相关单元的计算时长需求,即可进行工作状态的调度,避免总线上传输的数据、相关单元之间传输数据出现堵塞。
为了获得一个定位概率和值,所述位置变换处理模块需要在同一条数据通道内同步控制经过同一类型角度偏转计算而得到的参考坐标沿着分块地图的横坐标轴方向发生偏移、沿着分块地图的纵坐标轴方向发生偏移,为重定位算法的在软件执行层面的定位并行输出足够多的坐标偏移状态,保证重定位的准确性;再将同一条数据通道经过索引缓存而同步输出的定位概率值(对应于由相同类型的角度偏转计算和相同类型的坐标偏移计算得到的目标偏移坐标)进行累加,以使每条数据通道可以单独获得具备定位价值的一个定位概率和值,不需设置两条通道交替进行批量数据的乘加计算,以加速软件指令从用于定位一个目标位置所需的所有定位概率和值当中,选择出数值最大的一个定位概率和值,再将数值最大的一个定位概率和值对应的修正位置设置为所述定位处理器在分块地图内重定位出的位置。
在一些实施例中,所述预设定位数量是数值200,预设并行数量是数值4;同一个激光点数据所需执行的角度偏转计算的次数是数值20,平均分配到每个角度偏转计算单元后,每个角度偏转计算单元所需执行的角度偏转计算的次数是数值5,即所述目标偏转次数是数值5;若角度偏转步长是10度,则第一个角度偏转计算单元的基准偏转角度是0度,第二个角度偏转计算单元的基准偏转角度是50度,第三个角度偏转计算单元的基准偏转角度是100度,第四个角度偏转计算单元的基准偏转角度是150度;标记有同一序号的坐标偏移计算单元执行横坐标偏移计算的次数是数值7,标记有同一序号的坐标偏移计算单元执行纵坐标偏移计算的次数是数值7;若以200个激光点数据为单位,求出一个定位概率和值,那么用于定位一个目标位置所需的所有定位概率和值的数量是20x7x7=280个;因此所述位置变换处理模块对激光点数据进行位置变换所需消耗的坐标遍历时间是仅使用单通道对200个激光点数据进行位置变换所需的遍历计算时间的四分之一。
优选地,预设定位数量设置为200,预设定位数量的激光点数据表示200个激光点数据,具体是存在200个横坐标轴(横坐标轴)坐标和200个纵坐标轴(纵坐标轴)坐标。突发长度可以设置为8,则一个突发长度的地址单元上的激光点数据表示8个连续的地址单元上的坐标值。
在硬件实现过程中,坐标偏移计算单元所执行的坐标偏移是由加减法器执行,也可以使用移位寄存器组成的运算逻辑电路执行坐标偏移操作;坐标偏移方向,即用于坐标偏移所沿的坐标轴方向是:根据所述定位算法的需求自适应配置在相关联的寄存器内。
综上,在所述预设并行数量个角度偏转计算单元同时控制激光点数据进行角度偏转计算的情况下,第i个角度偏转计算单元的基准偏转角度与第(i-1)个角度偏转计算单元的基准偏转角度的差值等于目标偏转次数(所述位置变换处理模块所允许的最大角度偏转次数)与角度偏转步长的乘积,从而将序号相邻的两个角度偏转起点的角度差构造成变换起点基准量的差异,对于同一个激光点数据,在所有数据通道角度内,并行执行的角度偏转情况才完整地反映为一个激光点数据在连续进行的所有角度偏转情况),而在本实施例中通过设置多条数据通道来同步进行不同轮位置变换;即使激光点在分块地图内是离散分布的,但通过累加器的遍历和缓存,使得并行传输的多个定位概率值都是由不同轮位置变换得到的目标偏移坐标所对应的定位概率值,则可以直接遍历的方式通过累加来获得定位概率和值。从而加快获取定位概率和值,加快定位软件算法的执行效率,整体上等效于缩短处理器的输出延迟时间。若定位处理器所在的机器人发生移动,则角度偏转计算单元内的激光点数据会被新采集的更新掉,只要定位处理器保持在状态机控制模块的循环调度下实时刷新定位概率值,就可以通过新的定位概率和值匹配出新的重定位位置,加快克服激光传感器采集的点云数据噪声和定位误差的影响,提高定位系处理器在各种定位环境下的实时性,能够高效完成分块地图所在的激光地图的重定位。
在上述实施例的基础上,每当对同一个激光点数据进行一次角度偏转计算,获得一个新的参考坐标,再对该新的参考坐标进行一次坐标偏移计算,获得一个新的目标偏移坐标并索引到对应的一个定位概率值;一轮位置变换包括一次角度偏转计算和一次坐标偏移计算,一次坐标偏移计算包括一次横坐标偏移计算和一次纵坐标偏移计算。相同类型的角度偏转计算和相同类型的坐标偏移计算使用同一轮位置变换来表示;对于同一个激光点数据所需进行的角度偏转计算的次数是预先设置,等于所述目标偏转次数与预设并行数量的乘积;对于同一个参考坐标所需进行的坐标偏移计算的次数是预先设置,并由所述位置变换处理模块内设的寄存器进行配置。相同类型的角度偏转计算和相同类型的坐标偏移计算使用同一轮位置变换来表示的情况下,每个坐标偏移计算单元内,所述相同类型的坐标偏移计算是指横坐标偏移计算方式和纵坐标偏移计算方式都是相同的坐标变换计算,相同类型的横坐标偏移计算是指横坐标轴偏移方向、横坐标偏移步长、当前偏移次数都相同的至少两种用于一个参考坐标的横坐标偏转的计算方式;相同类型的纵坐标偏移计算是指纵坐标轴偏移方向、纵坐标偏移步长、当前偏移次数都相同的至少两种用于一个参考坐标的纵坐标偏转的计算方式;所述相同类型的角度偏转计算是指偏转次数、当前偏转次数、角度偏转步长以及偏转方向都相同的至少两种用于一个激光点数据的角度偏转的计算方式。以使同一条数据通道内经过相同类型的角度偏转计算和相同类型的坐标偏移计算后的激光点数据与计算之前的激光点数据之间都存在相同的相对位姿关系。在本实施例中,同一个激光点数据在不同角度偏转计算单元内进行角度偏转计算时,所需的基准偏转角度是不同,以通过不同角度偏转计算单元并行执行不同类型的角度偏转计算,从而在不同数据通道内并行执行不同轮的位置变换。
需要强调的是,在所述分块地图的一种坐标轴方向执行的坐标偏移中,每一次坐标偏移相对于所述分块地图的坐标系原点的偏移量是不同,但是沿着同一种坐标轴方向发生的坐标偏移步长是相同。
一轮位置变换包括:每当所述位置变换处理模块执行过一次角度偏转运算时,所述位置变换处理模块控制相应的参考坐标先沿着第一坐标轴方向执行一次坐标偏移,再沿着第二坐标轴方向执行一次坐标偏移,以形成坐标偏移计算方式;其中,第一坐标轴方向表示横坐标轴方向时,第二坐标轴方向表示纵坐标轴方向的情况下,等效于先执行一次横坐标偏移计算,再执行一次纵坐标偏移计算。或者,第一坐标轴方向表示纵坐标轴方向时,第二坐标轴方向表示横坐标轴方向,等效于先执行一次纵坐标偏移计算,再执行一次横坐标偏移计算。在所述分块地图的坐标系内,第一坐标轴方向与第二坐标轴方向是垂直设置。
在一些实施例中,用于定位一个目标位置所需的所有定位概率和值的数量是等于同一激光点数据在分块地图的纵坐标轴方向上的最大偏移次数、同一激光点数据在分块地图的横坐标轴方向上的最大偏移次数与同一激光点数据绕着分块地图的坐标系原点的最大角度偏转次数的乘积,同一激光点数据绕着分块地图的坐标系原点的最大角度偏转次数则分配到各条数据通道内,依靠不同角度偏转计算单元所需的基准偏转角度同步进行对应次数的角度偏转计算;其中,各种坐标轴方向上的最大偏移次数和绕着分块地图的坐标系原点的最大角度偏转次数是预先设置。
在所述分块地图表示为栅格地图的情况下,所述分块地图的横坐标轴方向所允许容纳的最大栅格数量大于或等于同一个参考坐标在所述分块地图的横坐标轴方向上所允许的最大偏移次数与横坐标偏移步长的乘积,所述分块地图的纵坐标轴方向所允许容纳的最大栅格数量大于或等于同一个参考坐标在所述分块地图的纵坐标轴方向上所允许的最大偏移次数与纵坐标偏移步长的乘积;在该实施方式中,所述位置变换处理模块不在一轮位置变换中对横坐标偏移计算和纵坐标偏移计算之间的执行顺序作限制。其中,所述位置变换处理模块预先配置有所述参考坐标在所述分块地图的横坐标轴方向上所允许的最大偏移次数及其在横坐标轴方向上的坐标偏移步长、所述参考坐标在分块地图的纵坐标轴方向上所允许的最大偏移次数及其在纵坐标轴方向上的坐标偏移步长,能够被每条数据通道所调用。
作为一种实施例,每个角度偏转计算单元,用于在获取到激光点数据后,对于同一个激光点数据,分别从各自对应的基准偏转角度开始,沿着既定时针方向且绕着所述分块地图的坐标系原点旋转目标偏转次数,并依次保存每次旋转出的参考坐标,以使每个角度偏转计算单元各获得数量为目标偏转次数的参考坐标且传输给序号相同的坐标偏移计算单元,让每个参考坐标在对应序号的坐标偏移计算单元内执行坐标偏移计算;每次角度偏转计算是在上一次角度偏转结果的基础上继续沿着既定时针方向进行一次角度偏转计算,直至沿着既定时针方向且绕着所述分块地图的坐标系原点旋转目标偏转次数,结束对同一个激光点数据沿着既定时针方向且绕着所述分块地图的坐标系原点旋转,即停止对同一个激光点数据进行角度偏转计算。每个角度偏转计算单元在同一偏转次数后各获得的参考坐标是不同;这里的旋转理解为前述各个实施例中的偏转,偏转中心则使用所述分块地图的坐标系原点,偏转次数等效于旋转次数,既定时针方向可以是顺时针方向或逆时针方向,偏转起点等效于基准偏转角度与激光点数据中的初始偏转角度的和值。
在突发读控制模块发出的突发读命令的触发作用下,角度偏转计算单元_1至角度偏转计算单元_n同时从cache存储器内突发读取出一个突发长度的相同激光点数据(同一批激光点数据);在单次读控制模块发出的单次读命令的触发作用下,角度偏转计算单元_1至角度偏转计算单元_n同时从cache存储器内突发读取出一个单次长度的相同激光点数据(同一批激光点数据)。
突发读控制模块通过计数的方式调度所述角度偏转计算单元_1至所述角度偏转计算单元_n多次突发读取出激光点数据以使预设定位数量个激光点数据被读入位置变换处理模块,每次突发读取出激光点数据的数量是所述突发长度。突发读取出的激光点数据缓存到角度偏转计算单元内设的中间缓存空间中。或者单次读控制模块通过计数的方式调度所述角度偏转计算单元_1至所述角度偏转计算单元_n多次单次读取出激光点数据以使预设定位数量个激光点数据被读入位置变换处理模块,每次单次读取出激光点数据的数量是所述突发长度。单次读取出的激光点数据缓存到角度偏转计算单元内设的中间缓存空间中。
每当角度偏转计算单元调用中间缓存空间内的一个激光点数据进行过一次或多次角度偏转计算后,该激光点数据会被读走,为中间缓存空间腾出闲置内存空间,则后续传输过来的激光点数据可以填充到该闲置内存空间,使中间缓存空间起到持续缓存数据的功能。
每个坐标偏移计算单元,用于在获取到一个参考坐标后,对一个参考坐标沿着所述分块地图的第一坐标轴方向执行第一预设遍历次数的坐标偏移计算并依次保存每次坐标偏移出的偏移结果,以获得所述分块地图的第一坐标轴方向上的数量为第一预设遍历次数的偏移结果,即沿着第一坐标轴方向分布数量为第一预设遍历次数的偏移结果。其中,坐标偏移的次数由所述变换控制模块计数获得,为所述变换控制模块的工作状态调度提供依据,例如调度所述坐标偏移计算单元控制参考坐标沿着所述分块地图的第一坐标轴方向发生第一预设遍历次数的坐标偏移,每次的坐标偏移是在上一次坐标偏移结果的基础上继续沿着所述分块地图的第一坐标轴方向进行一次坐标偏移计算,直至沿着所述分块地图的第一坐标轴方向已经发生第一预设遍历次数的坐标偏移计算,结束对同一个参考坐标沿着所述分块地图的第一坐标轴方向进行坐标偏移计算。
每个坐标偏移计算单元,还用于在每当一个参考坐标已经沿着所述分块地图的第一坐标轴方向执行一次坐标偏移计算,则控制前述一次坐标偏移后的参考坐标沿着所述分块地图的第二坐标轴方向执行第二预设遍历次数的坐标偏移计算并依次保存每次坐标偏移出的偏移结果,以获得第二坐标轴方向上的数量为第二预设遍历次数的偏移结果,直至一个参考坐标沿着第一坐标轴方向进行坐标偏移计算所得的偏移结果都是沿着第二坐标轴方向执行第二预设遍历次数的坐标偏移计算,累计获得数量为第一预设遍历次数与第二预设遍历次数的乘积的目标偏移坐标;进而在每条数据通道内,同一个激光点数据旋转过目标偏转次数的情况下,累计获得的目标偏移坐标的数量为目标偏转次数、预设并行数量、第一预设遍历次数与第二预设遍历次数的乘积。
具体地,一个参考坐标沿着第一坐标轴方向进行坐标偏移计算所得的偏移结果标记为横轴偏移结果,对于同一个横轴偏移结果,每次的坐标偏移是在上一次坐标偏移结果的基础上继续沿着所述分块地图的第二坐标轴方向进行一次坐标偏移计算,直至沿着所述分块地图的第二坐标轴方向已经发生第二预设遍历次数的坐标偏移计算,结束对同一个参考坐标沿着所述分块地图的第二坐标轴方向进行坐标偏移计算。其中,第一坐标轴是横坐标轴时,第二坐标轴是纵坐标轴;或者,第一坐标轴是纵坐标轴时,第二坐标轴是横纵坐标轴。在本实施例中,无论是在所述分块地图的一种坐标轴方向并行执行的第一预设遍历次数的坐标偏移还是在所述分块地图的另一种坐标轴方向并行执行的第二预设遍历次数的坐标偏移,每一次坐标偏移相对于所述分块地图的坐标系原点的坐标偏移量都是不同,但是沿着同一种坐标轴方向发生的坐标偏移步长是相同。
作为一种实施例,所述角度偏转计算单元,用于利用预先配置的角度偏转信息对激光点数据执行一次角度偏转计算,获得一个参考坐标,参考坐标是经过一次角度偏转计算后的激光点数据在所述分块地图上的坐标;其中,从对应的基准偏转角度,同一个激光点数据在同一个角度偏转计算单元内执行的每一次角度偏转计算,对应获取的参考坐标是不同,各个参考坐标与原点之间的连线相对于同一坐标轴所形成的角度是不同,但每次角度偏转计算所需的角度偏转步长是相等,相邻两次偏转产生的角度是呈递增或递减。在本实施例中,每个激光点数据包括存储在相邻地址单元上的横坐标和纵坐标;所述变换控制模块内部设置寄存器,用于配置突发读命令并记录角度偏转计算的执行次数,即规定激光点数据在分块地图内的最大角度偏转次数。在每个角度偏转计算单元中,每当执行一次角度偏转计算,所述激光点数据对应的坐标位置等效于绕着所述分块地图的坐标系原点位置旋转一个偏转角度步长,而且是朝着既定时针方向转动。同一个激光点数据在同一个角度偏转计算单元内执行的每一次角度偏转计算,对应获取的参考坐标是不同;同一个激光点数据在不同角度偏转计算单元内并行执行的每一次角度偏转计算,对应获取的参考坐标是不同;在不同角度偏转计算单元内,同一个激光点数据在同一偏转次数下获取的参考坐标与第一次角度偏转计算获取的参考坐标之间存在相同的相对位姿关系,即在经过相等的偏转次数后,产生相等的角度偏转量。
具体地,所述激光点数据携带的信息包括扫描半径、所述激光点数据对应坐标位置相对于所述分块地图的坐标轴形成的初始偏转角度、以及激光点数据的角度偏转信息,扫描半径是所述激光传感器与当前参与角度偏转计算的激光点数据对应坐标位置之间的距离;激光点数据的角度偏转信息包括所述激光点数据对应的坐标位置绕着所述分块地图的坐标系原点旋转所需配置的偏转角度步长、当前偏转次数和目标偏转次数(单个角度偏转计算单元所允许执行的最大角度偏转次数);所述扫描半径不超出所述激光传感器的有效探测范围;所述当前偏转次数小于或等于最大角度偏转次数;所述分块地图是栅格地图的情况下,所述扫描半径按比例收缩为使用栅格数目表示。所述参考坐标可以转换为用栅格数目表示,方便后续获取相应坐标位置处的定位概率值。不同的角度偏转计算单元中,各自读取到的激光点数据对应坐标位置都会按照对应的基准偏转角度进行旋转以达到所在角度偏转计算单元中所需的变换起点,不同的角度偏转计算单元中的变换起点各不相同。
所述利用预先配置的角度偏转信息对激光点数据执行一次角度偏转计算的过程包括:利用偏转角度步长和当前偏转次数的乘积、初始偏转角度与所述激光点数据对应的基准偏转角度的和值、激光传感器的扫描半径建立三角函数关系式,计算当前一次角度偏转计算所产生的参考坐标,等效于通过旋转矩阵来获得所述角度偏转计算单元读取的每个激光点数据发生当前一次角度偏转所产生的参考坐标;其中,当前偏转次数是由所述变换控制模块实时记录到,三角函数关系式可以在所述角度偏转计算单元内使用基本的加法和移位运算寄存器实现,具体可以借鉴现有技术公开的CORDIC运算框架实现矩阵运算,以获得角度旋转变换的结果,具体的运算方式在此不再赘述。在本实施例中,若装配所述定位处理器的的机器人出现定位丢失,则所述定位处理器通过控制所述角度偏转计算单元按照设定的角度偏转步长对激光点数据进行偏移操作,获得相应激光点数据在角度偏转后变换成的参考坐标,以纠正机器人位姿的角度偏转误差,方便现有技术的定位算法获取相应坐标位置处的概率值和在小范围内进行坐标轴方向的偏移计算。以适应于在移动机器人重定位过程中出现左右偏转的现象。
作为一种实施例,对于(4个栅格)x(4个栅格)的分块地图进行定位,本实施例设置4个角度偏转计算单元、4个坐标偏移计算单元以及4个累加器,连接形成支持并行计算的4条数据通道;横坐标轴的坐标偏移步长等于1个栅格,纵坐标轴的坐标偏移步长等于1个栅格。在每条数据通道内的参考坐标,先沿着横坐标轴方向并行执行一次坐标偏移,使得4个坐标偏移计算单元控制各自获取的参考坐标沿着所述分块地图的横坐标轴方向累计完成4次坐标偏移,依次获得不同的偏移结果,通过4条数据通道来实现所述分块地图的横坐标轴方向的坐标偏移次数达到横坐标轴方向的最大偏移次数,即所述第一预设遍历次数,等于所述分块地图的横坐标轴方向所允许容纳的最大栅格数量。各条数据通道并行完成横坐标轴方向的坐标偏移后,继续在各自数据通道内沿着纵坐标轴方向执行4次坐标偏移,即在单条数据通道内达到纵坐标轴方向的最大偏移次数,即达到所述第二预设遍历次数,等于所述分块地图的纵坐标轴方向所允许容纳的最大栅格数量。以克服激光点数据在分块地图内可能中存在的漂移误差。然后在各条数据通道内将同一轮位置变换后对应的定位概率值并行累加,直到经过同一轮位置变换的参考坐标的数目达到预设定位数量(比如200个)时,每条数据通道得到4个定位概率和值,使得4个累加器并行获得16个定位概率和值。这里的16是横坐标轴方向的最大偏移次数与纵坐标轴方向的最大偏移次数的乘积,也是4个角度偏转计算单元对预设定位数量的激光点数据并行执行一次角度偏转计算后,每个角度偏转计算单元获得一个参考坐标,再在对应的条数据通道内进行前述计算。具体地,在并行执行的每一轮位置变换后(包括沿着各个坐标轴方向的坐标偏移及一次角度偏转计算)4个累加器以200个参考坐标对应的定位概率值为计算单位,进行累加求和,同步获得前述的16个定位概率和值。与此同时,4个角度偏转计算单元对预设定位数量个激光点数据并行执行不同类型的角度偏转计算,角度偏转运算获得的新的一个参考坐标在排队等待AHB总线读取,再交由4个坐标偏移计算单元和4个累加器并行计算以获得的另外16个定位概率和值。每个角度偏转计算单元会同时从不同的基准偏转角度开始,朝着同一偏转方向(与上一次旋转方向相同)完成对应一次旋转(分别在原来的偏转角度的基础上继续旋转一次所述偏转角度步长),且每一次角度偏转计算都是针对所述预设定位数量个激光点数据进行,每个角度偏转计算单元获得的参考坐标的数量是等于所述预设定位数量与所述目标偏转次数的乘积;然后将这些参考坐标逐个地交由4个坐标偏移计算单元和4个累加器执行并行计算,进而获取16个新的定位概率和值。当4个角度偏转计算单元执行角度偏转计算的次数之和累计达到所述位置变换处理模块所允许的最大角度偏转次数时,所述状态机控制模块触发4个累加器并行获取的定位概率和值的数目总和为:数值4、所述目标偏转次数、数值4、与数值4的乘积,才达到定位一个目标位置所需的所有定位概率和值的数量,才允许当前场景所使用的定位算法从该数量条件下的定位概率和值中筛选出数值最大的一个定位概率和值。然后,4个角度偏转计算单元接受cache存储器突发传输过来的新的一批激光点云数据,并通过多次突发读取操作将的新的预设定位数量(200个)的激光点数据同时缓存到4个角度偏转计算单元内,此时所述分块地图内相应位置处的概率信息被更新。
作为一种实施例,如图1所示,所述状态机控制模块还包括单次写控制模块;所述定位处理器还包括写FIFO模块。所述位置变换处理模块,用于在单次写控制模块发出的单次写命令的触发作用下,按照既定的坐标遍历顺序将各个累加器计算出的定位概率和值单次写入所述写FIFO模块;其中,单次写入的定位概率和值的数量是所述单次长度。其中,既定的坐标遍历顺序是换行遍历所述分块地图内的坐标位置的顺序、或换列遍历所述分块地图内的坐标位置的顺序;所述分块地图内的坐标位置优选为定位概率和值对应的修正坐标在分块地图内的位置。
在本实施例中,所述位置变换处理模块,用于每当累加计算出的定位概率和值的数量达到一个单次长度时,在单次写控制模块发出的单次写命令的触发作用下,按照既定的坐标遍历顺序将这个单次长度的定位概率和值依次写入所述写FIFO模块。一个单次长度是数值2,则单次写入的两个地址值是横坐标x所在的地址值和纵坐标y所在的地址值,以构成一个修正坐标对应的定位概率和值的存储地址。
在一些实施例中,所述既定的坐标遍历顺序表现为:x0、y0、...、x0、yn、x1、y0、...、x1、yn,形成在所述分块地图内遍历定位概率和值对应的修正坐标的顺序,等效于逐列遍历二维地图区域的顺序,具体可以是沿着横坐标轴的正方向换列遍历分块地图,使得所述写FIFO模块以换列遍历的方式获取修正坐标及其对应的定位概率和值。或者,所述既定的坐标遍历顺序表现为:x0、y0、...、xn、y0、x0、y1、...、xn、y1,在所述分块地图内遍历定位概率和值对应的修正坐标的顺序,等效于逐行遍历二维地图区域的顺序,具体可以是沿着纵坐标轴的正方向换行遍历分块地图,使得所述写FIFO模块以换行遍历的方式获取修正坐标及其对应的定位概率和值。
在上述实施例的基础上,所述状态机控制模块还包括突发写控制模块;写FIFO模块,用于以先入先出的存储方式缓存所述位置变换处理模块输出的定位概率和值,并在突发写控制模块发出的突发写命令的触发作用下,将已缓存的定位概率和值突发写入所述cache存储器;其中,每当写FIFO模块缓存的定位概率和值的数量达到所述突发长度时,所述突发写控制模块触发所述写FIFO模块将所述突发长度个定位概率和值一次性写入所述cache存储器;所述突发写控制模块通过计数的方式统计所述写FIFO模块缓存的定位概率和值的数量。
在一些实施例中,写FIFO模块,还可以用于在单次写控制模块发出的单次写命令的触发作用下,将已缓存的定位概率和值突发写入所述cache存储器;其中,每当写FIFO模块缓存的定位概率和值的数量达到所述单次长度时,所述单次写控制模块触发所述写FIFO模块将所述单次长度个定位概率和值一次性写入所述cache存储器;所述单次写控制模块通过计数的方式统计所述写FIFO模块缓存的定位概率和值的数量。
本申请公开的先入先出的存储方式是指一种数据发送缓存空间(例如FIFO)最先送出的寻址地址被所述数据接收缓存空间最先存放,所述数据发送缓存空间的队头存放的寻址地址最先发送给外部的所述数据接收缓存空间。
需要说明的是,所述突发读控制模块发出的命令、所述变换控制模块发出的命令、所述单次读控制模块发出的命令、所述单次写控制模块发出的命令以及所述突发写控制模块发出的命令都支持使用使能信号、计数信号或置位信号表示,且由各个模块内设的寄存器配置出;其中,所述突发读控制模块、所述变换控制模块、所述单次读控制模块、所述单次写控制模块、以及所述突发写控制模块都是由硬件语言实现的状态机,状态机是由相应功能的状态寄存器和组合逻辑电路连接而成;用于调度所述定位处理器循环跳转于不同的工作状态以实现保持从所述cache存储器读取多个激光点数据,并保持向所述cache存储器写入多个定位概率和值。具体地,状态机能够在各个工作状态跳转运行需要配置前述位置变换处理模块、写FIFO模块、各种寄存器、定时器和/或计数器。状态跳转调度的步骤可以有所差别,但跳转的条件离不开这些器件的支持;以实现保持从所述cache存储器读取多个激光点数据,并保持向所述cache存储器写入多个定位概率和值,从而实现激光点数据的角度偏转计算、参考坐标在各种坐标轴方向上的坐标偏移计算(等效于平移计算)及其突发读写控制状态、单次读写控制状态的自动运转,所以前述实施例中涉及的各个模块均支持由数字运算电路构建成并支持状态机的控制。
基于定位处理器的任一实施例,本实施例还公开一种激光点数据处理系统,激光点数据处理系统包括cache存储器、DDR存储器和所述定位处理器;cache存储器连接在定位处理器和DDR存储器之间,所述DDR存储器的外部被构造为连接激光传感器,DDR存储器存储激光传感器采集的激光点数据。与现有技术软件CPU处理同样大小的点云数据相比,在本实施例公开的激光点数据处理系统中,状态机控制模块的工作状态调度控制和位置变换处理模块并行执行的角度偏转计算和坐标偏移计算,兼顾激光传感器旋转或激光点数据处理系统移动过程中产生的误差,而且cache存储器作为缓存中介设置在定位处理器和DDR存储器之间,支持缓存激光点数据和地图信息(角度、坐标和概率值),在定位处理器通过cache存储器访问DDR存储器时,不会占用大量DDR带宽,降低对频率要求,也可以实现在最大程度节省硬件资源的基础上,加快参考坐标在所述分块地图的偏移区域范围内的并行计算速度。缩短位置概率信息的计算时间;再将定位概率和值通过cache存储器突发写入DDR存储器以供软件调用来完成重定位,实现定位处理器多通道、分批量地同步累加运算输出各个定位概率和值,不用在定位处理器的外围接口连接过多的存储器。
优选地,所述目标片内存储器包括嵌入式SRAM和嵌入式flash;所述定位处理器、所述cache存储器和所述DDR存储器设置在同一电路板的情况下,所述目标片内存储器嵌入到所述定位处理器所在的芯片内部,但嵌入式SRAM和嵌入式flash的设计成本很高,因此二者的晶圆面积不能做得很大,会制约所述定位处理器的使用,因此需要使用前述实施例公开的cache存储器和DDR存储器作为片外存储器,不保留嵌入式SRAM和嵌入式flash的数据缓存功能,则所述定位处理器、所述cache存储器和所述DDR存储器设置在同一电路板的情况下,所述定位处理器不嵌入所述目标片内存储器,则直接使用前述实施例公开的cache存储器和DDR存储器作为片外存储器,不专门设置所述目标片内存储器进行数据缓存,节约所述定位处理器的设计成本。
本实施例公开的激光点数据处理系统中,在定位处理器不采用大容量的内嵌SRAM和内嵌flash进行激光点数据和地图数据缓存的前提下,在定位处理器与其外部的DDR存储器之间连接上专门的cache存储器,以代替所片内存储器执行大容量的应用程序存储功能和进行激光点数据(采样数据)和地图数据(定位计算所需的坐标概率信息)缓存,从而不需在激光点数据处理系统中开发一款更大容量的处理器芯片,克服因内嵌存储器的容量而需要扩大处理器芯片面积的问题,既可以发挥DDR存储器大容量的优势,又可以降低处理器芯片的开发成本。在所述cache存储器允许采用突发传输操作的方式访问所述DDR存储器,定位处理器允许采用单次传输操作的方式访问所述cache存储器的情况下,由于定位处理器在一个时钟周期内对所述cache存储器突发传输操作过的地址单元的数量等于定位处理器在一个时钟周期内对所述cache存储器单次传输操作过的地址单元的数量,以使得定位处理器采用突发传输操作访问所述cache存储器和采用单次传输操作的方式访问所述cache存储器在同一时钟周期内的传输过的数据的数量是一样;所以,定位处理器在不设置目标片内存储器的情况下对DDR存储器的访问不会受到单次传输操作的影响(来源于单次传输操作的访问效率制约)。
所述cache存储器包括多条第一缓存行和多条第二缓存行;所述cache存储器,用于根据所述定位处理器的读请求指令,将所述DDR存储器内所存储的激光点数据读取出来并存储到第一缓存行中,然后通知所述定位处理器读取第一缓存行中的数据,以使所述定位处理器索引到激光点数据,其中,所述定位处理器的读请求指令当中的读取地址信息是来源于所述突发读控制模块发出的突发读命令,各条第一缓存行是专门为所述位置变换处理模块提供用于定位一个目标位置所需的所有激光点数据的缓存空间,具体可以缓存所述激光传感器在一个位置处扫描获得的预设定位数量个激光点数据;各条第一缓存行内缓存的旧数据被所述定位处理器读走后,被读走的旧数据所在的地址单元可以被所述DDR存储器输出的新数据缓存,以使第一缓存行得到刷新。所述定位处理器的读请求指令包括激光点数据在所述DDR存储器内的存储地址、或激光点数据在所述cache存储器的第一缓存行的存储地址。在所述cache存储器预先存储好激光点数据的情况下,所述定位处理器的读请求指令还可以支持所述定位处理器直接从所述cache存储器内读取对应缓存行中的激光点数据,提高所述定位处理器访问速度。
所述cache存储器,还用于根据所述定位处理器的写请求指令,接收所述定位处理器输出的定位概率和值,并将定位概率和值存储到第二缓存行中,然后通知所述DDR存储器读取第二缓存行中的定位概率和值;其中,所述定位处理器的写请求指令包括定位概率和值在所述DDR存储器内的存储地址、或定位概率和值在所述cache存储器的第二缓存行的存储地址;所述定位处理器的写请求指令当中的写入地址信息是来源于所述突发写控制模块发出的突发写命令。各条第二缓存行专门为所述定位处理器提供用于定位一个目标位置所需的定位概率和值及其对应的修正坐标的缓存空间;各条第二缓存行内缓存的旧数据被所述DDR存储器读走后,被读走的旧数据所在的地址单元可以被所述定位处理器传输的新数据缓存,以使第二缓存行得到刷新,进而便于软件指令从所述DDR存储器内实时筛选出数值最大的一个定位概率和值对应的修正位置。
需要说明的是,所述定位处理器的写请求指令和读请求指令都是由所述定位处理器的取指令接口所控制,并且遵循所述定位处理器支持的AHB总线协议的时序特征,以保障所述定位处理器可以一次性访问所述cache存储器内的多个激光点数据。
当所述定位处理器访问所述cache存储器时,所述定位处理器会先在在所述cache存储器中对应缓存行中查找;当所述cache存储器中没有所述定位处理器所需访问的数据时,才启动所述cache存储器访问所述DDR存储器,从而加快所述定位处理器访问速率。具体地,所述定位处理器每次从所述cache存储器读取激光点数据之前,依次对各条第一缓存行进行数据索引,包括按照索引号由小到大的顺序依次索引各条第一缓存行;并在当前一条第一缓存行中按照地址值由小到大的顺序依次索引各个地址单元,然后换行继续索引下一条第一缓存行中的地址单元。若所述激光点数据存在于当前索引的一条第一缓存行中,则从当前索引的一条第一缓存行中读取所述激光点数据。若所述激光点数据不存在于所述cache存储器内所有的第一缓存行中,则触发所述cache存储器从所述DDR存储器中突发读取出数据,并存储起来以更新掉对应第一缓存行中的数据,即替换旧的缓存数据,替换掉对应缓存行中的数据后,通知所述定位处理器读取更新后的第一缓存行中的数据(也可视为当前索引的一条第一缓存行中的数据),并判断当前索引的一条缓存行中的数据是否存在所述激光点数据,是则确定地址匹配并确定索引完成,但不一定遍历完整条第一缓存行;否则确定缓存丢失,需要继续触发所述cache存储器继续从所述DDR存储器中突发读取出数据,如此重复更新和索引,直至所述定位处理器从当前索引的一条第一缓存行中读取出新的激光点数据。在本实施例中,整个索引过程中可以视为由所述定位处理器的硬件读写操作逻辑(突发读控制模块)发出相应的突发读命令以控制完成。
所述定位处理器以目标类型传输操作的方式进行访问的情况下,从cache存储器内获取数据是快于从DDR存储器内获取数据,以使所述定位处理器在同一时钟周期内以相同类型传输操作对外部存储器进行访问的情况下,访问所述cache存储器获得的数据量是大于访问所述DDR存储器所获得的数据量,其中,所述定位处理器从DDR存储器内获取第一个数据相对于所述定位处理器从cache存储器内获取第一个数据产生延迟时间;具体地,所述定位处理器以同一类型传输操作的方式进行访问的情况下,从DDR存储器内获取数据相对于从cache存储器内获取数据产生的延迟时间取决于当前访问DDR存储器的主机(例如cache存储器或定位处理器)的数量、各个主机的访问优先级、DDR存储器内的数据读取机制所要求的延时等因素。在本实施例中,目标类型传输操作是突发传输操作或单次传输操作;突发传输操作是突发读取或突发写入,单次传输操作是单次读取或单次写入。又由于所述定位处理器在一个时钟周期内对所述cache存储器突发传输操作过的地址单元的数量等于所述定位处理器在一个时钟周期内对所述cache存储器单次传输操作过的地址单元的数量;从而在所述cache存储器预先存有所述定位处理器所需访问的数据的情况下,所述定位处理器会以突发传输操作的方式或单次传输操作的方式先在所述cache存储器对应缓存行中查找,而不是直接以单次传输操作的方式访问DDR存储器,从而解决所述定位处理器以单次传输操作的方式访问DDR存储器存在的效率过低的问题。而且,cache存储器被配置为以突发传输操作的方式访问DDR存储器且定位处理器被配置为以单次传输操作的方式访问cache存储器的情况下,对应产生的读写效率比内设SRAM的定位处理器以单次传输操作方式访问DDR存储器所产生的读写效率高。解决设置片内目标存储器的定位处理器以单次传输操作的方式直接访问DDR存储器存在的效率过低的问题。
作为一种实施例,若所述cache存储器从所述DDR存储器中突发读取一次所获得的激光点数据的数量小于或等于缓存行长度,则从所述DDR存储器中突发读取出的数据缓存到预先设置的最早被所述定位处理器读取的一条第一缓存行中,以更新掉预先设置的最早被所述定位处理器读取的一条第一缓存行中部分或全部的数据,可以实现所述cache存储器以一条缓存行为访问单位对所述DDR存储器进行访问,其中,缓存行长度等于突发长度。该实施例可以发生在所述定位处理器检测到所述激光点数据不存在于所述cache存储器内所有的第一缓存行中的情况下,也可以发生在所述定位处理器第一次访问所述cache存储器之前。因而,cache存储器能够一次性地从大容量的DDR存储器内读取一个缓存行的数据,以便于更新替换cache存储器内对应一个缓存行的数据,从而以一个缓存行长度为粒度进行缓存数据的刷新,进而辅助所述定位处理器以一个缓存行长度为粒度从相应缓存行内索引出所需读取的激光点数据,既兼顾到所述定位处理器访问数据的准确性和实时性,又为所述定位处理器的内嵌存储器分担空间容量压力。不需要定位处理器将激光点数据和地图数据搬运到片内存储区之中,只需按需访问并较由cache存储器并刷新缓存数据,减少软件对定位处理器的干预,让定位处理器释放更多的硬件计算资源给位置变换处理模块进行角度偏转计算和坐标偏移计算,加快定位处理器输出定位概率和值。
需要说明的是,所述缓存行长度是一条第一缓存行当中设置的连续的地址单元的数量,也表示一条第一缓存行当中地址连续的数据的数量;每个地址单元的数据存储容量相等,则一条第一缓存行中缓存的最大数据容量等于缓存行长度与单个地址单元的数据位宽之间的乘积;第一缓存行中一个地址单元存储一个数据,缓存行长度等于一条第一缓存行当中存储的数据的数量。优选地,所述cache存储器的接口位宽等于所述DDR存储器的DDR接口的位宽,所述cache存储器的接口位宽等于所述定位处理器的取指接口的位宽,减少因为位宽不兼容而需要对传输的数据进行拆分现象,有利于形成高效的数据通路。
在一些实施例中,所述cache存储器一次性从所述DDR存储器中读取出一个单位访问长度的地址单元内的数据的方式是突发读操作,即所述cache存储器在一个读时钟周期内一次性从所述DDR存储器中读取出单位访问长度个数据,可以由所述cache存储器、所述定位处理器或所述DDR存储器内设的突发读模式状态机控制实现;所述cache存储器还支持通过突发写操作来将一个单位访问长度的数据一次性写入所述DDR存储器中,即所述cache存储器在一个写时钟周期内一次性向所述DDR存储器中写入所述单位访问长度个数据,可以由所述cache存储器、所述定位处理器或DDR存储器内设的突发写模式状态机控制实现。在本实施例中,单位访问长度等于预设整数倍与突发长度的乘积,突发长度优选为4个、8个或16个,则预设整数倍取相匹配的整数值,以满足所述定位处理器每次从所述cache存储器读取的数据长度要求,优选地,所述预设定位数量是所述单位访问长度的整数倍,从而所述定位处理器可以通过重复执行突发读操作来从所述cache存储器内获取所述预设定位数量个激光点数据。
需要说明的是,突发长度表示一次突发操作下传输的连续的地址单元的数量;突发操作是突发读操作或突发写操作,因所述cache存储器所处的工作状态而作出相应的转换;突发读操作归属于突发读模式状态机在突发读模式下实施的操作,突发写操作归属于突发写模式状态机在突发写模式下实施的操作。突发读模式和突发写模式分别有专用的寄存器进行工作模式的配置,其中,突发读模式状态机是图1公开的突发读控制模块,突发写模式状态机是图1公开的突发写控制模块。
在所述cache存储器属于SRAM存储器的应用场景中,所述定位处理器对所述cache存储器的访问都是基于AHB协议或AXI协议设计,以使所述定位处理器对所述cache存储器的读操作是突发读操作或单次读操作,所述定位处理器对所述cache存储器的写操作是突发写操作或单次写操作,实现基于硬件逻辑实现的对所述cache存储器的访问,至少由所述定位处理器的取指接口参与,并根据AHB或AXI协议传输数据。所述定位处理器对所述cache存储器的读操作是突发读操作或单次读操作,所述定位处理器对所述cache存储器的写操作是突发写操作或单次写操作;所述定位处理器在一个时钟周期内对所述cache存储器突发传输操作过的地址单元的数量等于所述定位处理器在一个时钟周期内对所述cache存储器单次传输操作过的地址单元的数量;因而,所述cache存储器是SRAM存储器的情况下,所述突发传输操作和所述单次传输操作的访问速度之间没有区别,相对于采用片外flash,不存在输入输出接口之间的速度差异,减少设置额外的缓存区来平衡速度差,减少对所述MCU外部的总线仲裁占用资源,简化所述MCU的访问控制逻辑。
需要说明的是,单次长度表示一次单次传输操作下传输的连续的地址单元的数量,即一次单次传输操作下传输的地址单元连续的数据的数量;所述单次长度小于所述突发长度,优选为2个;突发传输操作是突发读操作或突发写操作,单次传输操作是单次读操作或单次写操作;cache存储器被配置为以突发传输操作的方式访问DDR存储器,以提高对DDR存储器的访问效率,比所述定位处理器或cache存储器对DDR存储器单次传输操作下产生的访问效率高;所述定位处理器被配置为以单次传输操作的方式访问cache存储器,以使所述定位处理器对DDR存储器的访问不受到具体总线传输操作类型的影响,所以,cache存储器被配置为以突发传输操作的方式访问DDR存储器的情况下,即使所述定位处理器被配置为单次传输操作的方式访问cache存储器,对应产生的读写效率也比所述定位处理器被配置为单次传输操作的方式访问DDR存储器所产生的读写效率高。
优选地,在所述cache存储器中,每条缓存行中的地址单元的数量都是相等,而且,每个地址单元设置的数据位宽是相等,以使所述cache存储器由多行多列的数据块组成,某行某列的一个数据块等效于设置在该行处的一条缓存行(第一缓存行中的地址单元的数量与第二缓存行中的地址单元的数量是相等)中的对应列的地址单元,所述缓存行长度在此作为划分一行地址的标准,在外部访问读取或者存储数据时,要以这种划分为前提进行,划分出的地址的数据容量可以由每个时钟节拍传输的数据的宽度来决定;优选地,每个地址单元设置的数据位宽是64比特位、32比特位或16比特位,可以作为所述定位处理器访问所述cache存储器的最小单位。具体地,缓存行长度是一条缓存行当中设置的连续的地址单元的数量时,所述cache存储器的容量是等于缓存行的总条数、缓存行长度与预设数据位宽的乘积,其中,每条缓存行当中指示的连续的地址的数量是相等且固定;每个地址单元存储的数据都是预设数据位宽的指令,预设数据位宽可以设置为32比特位,当缓存行长度是设置为16时,一条缓存行存储16条32比特位的指令,进一步地,所述cache存储器设置有32条缓存行时,所述cache存储器的容量是32*16*32bit。
在本申请所提供的实施例中,应该理解到,所揭露的系统、处理器,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述模块、单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

Claims (20)

1.定位处理器,其特征在于,定位处理器被配置为与cache存储器连接,cache存储器与DDR存储器连接;
定位处理器的内部设置状态机控制模块和位置变换处理模块;
位置变换处理模块的内部设置多条数据通道;
DDR存储器用于存储激光点数据;cache存储器,用于在状态机控制模块的控制下,从DDR存储器中突发读取出激光点数据;
位置变换处理模块,用于在状态机控制模块的控制下,从cache存储器内突发读取出或单次读取出激光点数据,再将读取出的每个激光点数据同时传输给每条数据通道,并控制每条数据通道分别从对应的变换起点基准量开始同步进行多轮位置变换,以使每条数据通道同时获得多个目标偏移坐标及其对应的定位概率值;每条数据通道对应的变换起点基准量是彼此不同,每条数据通道所需进行的位置变换的轮数是相等;
位置变换处理模块,用于在每条数据通道中依次将由同一轮位置变换得到的目标偏移坐标所对应的定位概率值进行累加,得到定位概率和值;
定位处理器,用于在其内部的状态机控制模块的控制下,将累加得到的定位概率和值突发写入cache存储器、或单次写入cache存储器;
所述cache存储器,用于在状态机控制模块的控制下,将定位概率和值突发写入所述DDR存储器中。
2.根据权利要求1所述定位处理器,其特征在于,所述定位处理器的内部不设置目标片内存储器,以使cache存储器代替目标片内存储器缓存所述定位处理器与DDR存储器之间传输的数据。
3.根据权利要求2所述定位处理器,其特征在于,所述定位处理器还用于支持软件指令从用于定位一个目标位置所需的所有定位概率和值当中,选择出数值最大的一个定位概率和值,再将数值最大的一个定位概率和值对应的修正位置设置为所述定位处理器在分块地图内重定位出的位置;
每当预设定位数量个激光点数据全部被所述位置变换处理模块处理为对应修正位置处的定位概率和值输出后,获得用于定位一个目标位置所需的所有定位概率和值;其中,同一个激光点数据在一条数据通道内所需进行的位置变换的轮数等于预设定位数量个激光点数据在一条数据通道内累计获得的定位概率和值的数量;
一个定位概率和值对应的修正位置表示在分块地图内,相对于坐标系原点作一轮目标变换得到的坐标位置;目标变换是为了得到同一个定位概率和值,所述位置变换处理模块所需进行的一轮位置变换。
4.根据权利要求3所述定位处理器,其特征在于,所述目标偏移坐标所对应的定位概率值表示经过一轮位置变换得到目标偏移坐标的激光点数据落入所述分块地图对应位置的概率大小,或表示激光传感器落入所述分块地图对应位置的概率大小,或表示分块地图的单元格位置被反射激光点数据的障碍物占用的概率;每个激光点数据经过一轮位置变换后得到的目标偏移坐标与一个定位概率值存在对应关系,且是预先设置好以便所述位置变换处理模块调用;
所述DDR存储器的外部被构造为连接激光传感器,以使DDR存储器存储激光传感器采集的激光点数据;其中,以所述激光传感器的当前位置为坐标系原点,在所述激光传感器的有效探测范围内生成所述分块地图;分块地图是预设尺寸的局部地图。
5.根据权利要求4所述定位处理器,其特征在于,所述位置变换处理模块包括预设并行数量个角度偏转计算单元、预设并行数量个坐标偏移计算单元、以及预设并行数量个累加器;
预设并行数量个角度偏转计算单元各标记一个序号,预设并行数量个坐标偏移计算单元各标记一个序号,预设并行数量个累加器各标记一个序号;
预设并行数量个角度偏转计算单元标记的序号各不相同,预设并行数量个坐标偏移计算单元标记的序号各不相同,预设并行数量个累加器标记的序号各不相同;预设并行数量个角度偏转计算单元标记的序号、预设并行数量个坐标偏移计算单元标记的序号、以及预设并行数量个累加器标记的序号都处于相同的数值范围内;
一个角度偏转计算单元连接序号相同的一个坐标偏移计算单元,一个坐标偏移计算单元连接序号相同的一个累加器,序号相同的一个角度偏转计算单元、一个坐标偏移计算单元以及一个累加器依次连接成一条所述数据通道,并标记为对应序号的一条数据通道;
所述变换起点基准量表示为所述角度偏转计算单元所需的基准偏转角度时,第i个角度偏转计算单元的基准偏转角度与第(i-1)个角度偏转计算单元的基准偏转角度的差值等于目标偏转次数与角度偏转步长的乘积,其中,i是设置为大于或等于2,且i是设置为小于或等于所述预设并行数量;
对于输入每条数据通道的同一个激光点数据而言,每个角度偏转计算单元所需执行的角度偏转次数是相等。
6.根据权利要求5所述定位处理器,其特征在于,所述状态机控制模块包括突发读控制模块、单次读控制模块和变换控制模块;
角度偏转计算单元,用于在突发读控制模块发出的突发读命令的触发作用下,从cache存储器突发读取出一批激光点数据,其中,该一批激光点数据的数量等于突发长度;或者,在单次传输控制模块发出的单次读命令的触发作用下,从cache存储器单次读取出一批激光点数据,其中,该一批激光点数据的数量等于单次长度;
突发读控制模块或单次读控制模块通过计数的方式调度角度偏转计算单元多次读取出激光点数据,以使预设定位数量个激光点数据被读入所述位置变换处理模块;
预设并行数量个角度偏转计算单元,用于每当并行获取到激光点数据时,并行控制激光点数据进行角度偏转计算,获得对应的参考坐标,再将参考坐标传输给序号相同的坐标偏移计算单元;每个角度偏转计算单元内获得的参考坐标各不相同;
预设并行数量个坐标偏移计算单元,用于每当并行获取到参考坐标时,并行地控制所述参考坐标沿着同一种坐标轴方向执行坐标偏移;
预设并行数量个坐标偏移计算单元,还用于在并行获取的参考坐标经过一次第一坐标轴方向的坐标偏移和一次第二坐标轴方向的坐标偏移后,将经过同一轮位置变换后的参考坐标设置为目标偏移坐标,再索引出目标偏移坐标对应的定位概率值;
在每条数据通道内,所述变换控制模块先通过计数的方式触发所述坐标偏移计算单元索引出由同一轮位置变换得到的目标偏移坐标所对应的定位概率值,再有序地向与所述坐标偏移计算单元相连接的累加器输出该由同一轮位置变换得到的目标偏移坐标所对应的定位概率值;
预设并行数量个累加器,用于以先入先出的方式并行接收所述定位概率值,再在每个累加器内对每次接收到的定位概率值进行一次累加,每当所述变换控制模块统计到在累加器内累加的次数达到所述预设定位数量时,将当前累加的结果设置为一个定位概率和值,并确定参与同一轮位置变换的激光点数据的数量达到所述预设定位数量;
其中,所述预设并行数量是预先配置;所述预设定位数量表示用于定位所述分块地图的一个目标位置所需的激光点数据的数量。
7.根据权利要求6所述定位处理器,其特征在于,每当对同一个激光点数据进行一次角度偏转计算,获得一个新的参考坐标,再对该新的参考坐标进行一次坐标偏移计算,获得一个新的目标偏移坐标并索引到对应的一个定位概率值;
一轮位置变换包括一次角度偏转计算和一次坐标偏移计算,一次坐标偏移计算包括一次横坐标偏移计算和一次纵坐标偏移计算;其中,相同类型的角度偏转计算和相同类型的坐标偏移计算使用同一轮位置变换来表示;
相同类型的角度偏转计算和相同类型的坐标偏移计算使用同一轮位置变换来表示的情况下,每个坐标偏移计算单元内,所述相同类型的坐标偏移计算是指横坐标偏移计算方式和纵坐标偏移计算方式都是相同的坐标变换计算,以使同一条数据通道内经过相同类型的角度偏转计算和相同类型的坐标偏移计算后的激光点数据与计算之前的激光点数据之间都存在相同的相对位姿关系;
其中,同一个激光点数据在不同角度偏转计算单元内进行角度偏转计算时,所需的基准偏转角度是不同。
8.根据权利要求7所述定位处理器,其特征在于,一轮位置变换包括:每当所述位置变换处理模块执行过一次角度偏转运算时,所述位置变换处理模块控制相应的参考坐标先沿着第一坐标轴方向执行一次坐标偏移,再沿着第二坐标轴方向执行一次坐标偏移,以形成坐标偏移计算方式;
其中,第一坐标轴方向表示横坐标轴方向时,第二坐标轴方向表示纵坐标轴方向;或者,第一坐标轴方向表示纵坐标轴方向时,第二坐标轴方向表示横坐标轴方向。
9.根据权利要求8所述定位处理器,其特征在于,所述分块地图表示为栅格地图时,所述分块地图的横坐标轴方向所允许容纳的最大栅格数量大于或等于同一个参考坐标在所述分块地图的横坐标轴方向上所允许的最大偏移次数与横坐标偏移步长的乘积,所述分块地图的纵坐标轴方向所允许容纳的最大栅格数量大于或等于同一个参考坐标在所述分块地图的纵坐标轴方向上所允许的最大偏移次数与纵坐标偏移步长的乘积;
其中,所述位置变换处理模块预先配置有所述参考坐标在所述分块地图的横坐标轴方向上所允许的最大偏移次数及其在横坐标轴方向上的坐标偏移步长、所述参考坐标在分块地图的纵坐标轴方向上所允许的最大偏移次数及其在纵坐标轴方向上的坐标偏移步长。
10.根据权利要求6所述定位处理器,其特征在于,每个角度偏转计算单元,用于在获取到激光点数据后,分别从各自对应的基准偏转角度开始,沿着既定时针方向且绕着所述分块地图的坐标系原点旋转目标偏转次数,并依次保存每次旋转出的参考坐标,以使每个角度偏转计算单元各获得数量为目标偏转次数的参考坐标且传输给序号相同的坐标偏移计算单元;
每个坐标偏移计算单元,用于在获取到参考坐标后,对参考坐标沿着所述分块地图的第一坐标轴方向执行第一预设遍历次数的坐标偏移计算并依次保存每次坐标偏移出的偏移结果,以获得所述分块地图的第一坐标轴方向上的数量为第一预设遍历次数的偏移结果;
每个坐标偏移计算单元,还用于在每当一个参考坐标已经沿着所述分块地图的第一坐标轴方向执行一次坐标偏移计算,则控制前述一次坐标偏移后的参考坐标沿着所述分块地图的第二坐标轴方向执行第二预设遍历次数的坐标偏移计算并依次保存每次坐标偏移出的偏移结果,以获得第二坐标轴方向上的数量为第二预设遍历次数的偏移结果,直至一个参考坐标沿着第一坐标轴方向进行坐标偏移计算所得的偏移结果都是沿着第二坐标轴方向执行第二预设遍历次数的坐标偏移计算,累计获得数量为第一预设遍历次数与第二预设遍历次数的乘积的目标偏移坐标;进而在每条数据通道内,同一个激光点数据旋转过目标偏转次数的情况下,累计获得的目标偏移坐标的数量为目标偏转次数、预设并行数量、第一预设遍历次数与第二预设遍历次数的乘积;
其中,坐标偏移的次数由所述变换控制模块计数获得,为其调度提供依据;
其中,第一坐标轴是横坐标轴时,第二坐标轴是纵坐标轴;或者,第一坐标轴是纵坐标轴时,第二坐标轴是横坐标轴。
11.根据权利要求10所述定位处理器,其特征在于,角度偏转计算单元,用于利用预先配置的角度偏转信息对激光点数据执行一次角度偏转计算,获得一个参考坐标,参考坐标是经过一次角度偏转计算后的激光点数据在所述分块地图上的坐标;其中,同一个激光点数据在同一个角度偏转计算单元内执行的每一次角度偏转计算,对应获取的参考坐标是不同;同一个激光点数据在不同角度偏转计算单元内并行执行的每一次角度偏转计算,对应获取的参考坐标是不同;在不同角度偏转计算单元内,同一个激光点数据在同一偏转次数下获取的参考坐标与第一次角度偏转计算获取的参考坐标之间存在相同的相对位姿关系。
12.根据权利要求11所述定位处理器,其特征在于,所述利用预先配置的角度偏转信息对激光点数据执行一次角度偏转计算的过程包括:
利用偏转角度步长和当前偏转次数的乘积、初始偏转角度与所述激光点数据对应的基准偏转角度的和值、激光传感器的扫描半径建立三角函数关系式,计算当前一次角度偏转计算所产生的参考坐标;
其中,所述激光点数据携带的信息包括扫描半径、所述激光点数据对应坐标位置相对于所述分块地图的坐标轴形成的初始偏转角度、以及激光点数据的角度偏转信息,扫描半径是所述激光传感器与当前参与角度偏转计算的激光点数据对应坐标位置之间的距离;激光点数据的角度偏转信息包括所述激光点数据对应的坐标位置绕着所述分块地图的坐标系原点旋转所需配置的偏转角度步长、当前偏转次数和目标偏转次数;所述扫描半径不超出所述激光传感器的有效探测范围。
13.根据权利要求12所述定位处理器,其特征在于,所述状态机控制模块还包括单次写控制模块;所述定位处理器还包括写FIFO模块;
所述位置变换处理模块,用于在单次写控制模块发出的单次写命令的触发作用下,按照既定的坐标遍历顺序将各个累加器计算出的定位概率和值单次写入写FIFO模块;其中,单次写入的定位概率和值的数量是所述单次长度;
其中,既定的坐标遍历顺序是换行遍历所述分块地图内的坐标位置的顺序、或换列遍历所述分块地图内的坐标位置的顺序。
14.根据权利要求13所述定位处理器,其特征在于,所述状态机控制模块还包括突发写控制模块;
写FIFO模块,用于以先入先出的存储方式缓存所述位置变换处理模块输出的定位概率和值,并在突发写控制模块发出的突发写命令的触发作用下,将已缓存的定位概率和值突发写入所述cache存储器,或在单次传输控制模块发出的单次写命令的触发作用下,将已缓存的定位概率和值单次写入所述cache存储器。
15.根据权利要求14所述定位处理器,其特征在于,所述突发读控制模块发出的命令、所述变换控制模块发出的命令、所述单次写控制模块发出的命令以及所述突发写控制模块发出的命令都支持使用使能信号、计数信号或置位信号表示,且由各个模块内设的寄存器配置出;
其中,所述突发读控制模块、所述变换控制模块、所述单次读控制模块、所述单次写控制模块、以及所述突发写控制模块都是由硬件语言实现的状态机,状态机是由相应功能的状态寄存器和组合逻辑电路连接而成;
用于调度所述定位处理器循环跳转于不同的工作状态以实现保持从所述cache存储器读取多个激光点数据,并保持向所述cache存储器写入多个定位概率和值。
16.一种激光点数据处理系统,其特征在于,激光点数据处理系统包括cache存储器、DDR存储器和权利要求1至15任一项所述定位处理器;
cache存储器连接在定位处理器和DDR存储器之间,所述DDR存储器的外部被构造为连接激光传感器,DDR存储器存储激光传感器采集的激光点数据。
17.根据权利要求16所述激光点数据处理系统,其特征在于,所述cache存储器包括第一缓存行和第二缓存行;
所述cache存储器,用于根据所述定位处理器的读请求指令,将所述DDR存储器内所存储的激光点数据读取出来并存储到第一缓存行中,然后通知所述定位处理器读取第一缓存行中的数据;其中,所述定位处理器的读请求指令当中的读取地址信息是来源于所述突发读控制模块发出的突发读命令;
所述cache存储器,还用于根据所述定位处理器的写请求指令,接收所述定位处理器输出的定位概率和值,并将定位概率和值存储到第二缓存行中,然后通知所述DDR存储器读取第二缓存行中的定位概率和值;其中,所述定位处理器的写请求指令当中的写入地址信息是来源于所述突发写控制模块发出的突发写命令。
18.根据权利要求17所述激光点数据处理系统,其特征在于,所述定位处理器每次从所述cache存储器读取激光点数据之前,依次对各条第一缓存行进行数据索引;
若所需读取的激光点数据存在于当前索引的一条第一缓存行中,则从当前索引的一条第一缓存行中读取所需读取的激光点数据;
若所需读取的激光点数据不存在于所述cache存储器内所有的第一缓存行中,则触发所述cache存储器从所述DDR存储器中突发读取出数据,并存储起来以更新掉对应第一缓存行中的数据,直至所述定位处理器从第一缓存行中读取到所需的激光点数据。
19.根据权利要求18所述激光点数据处理系统,其特征在于,若所述cache存储器从所述DDR存储器中突发读取一次所获得的激光点数据的数量小于或等于缓存行长度时,从所述DDR存储器中突发读取出的数据缓存到预先设置的最早被所述定位处理器读取的一条第一缓存行中;
其中,缓存行长度是一条第一缓存行当中设置的连续的地址单元的数量,以确定一条第一缓存行当中地址单元连续的数据的数量;每个地址单元的数据存储容量相等。
20.根据权利要求19所述激光点数据处理系统,其特征在于,所述定位处理器在一个时钟周期内对所述cache存储器突发传输操作过的地址单元的数量等于所述定位处理器在一个时钟周期内对所述cache存储器单次传输操作过的地址单元的数量;
所述定位处理器以目标类型传输操作的方式访问外部存储器的情况下,从cache存储器内获取数据是快于从DDR存储器内获取数据;
其中,目标类型传输操作是突发传输操作或单次传输操作;
其中,突发传输操作是突发读操作或突发写操作,单次传输操作是单次读操作或单次写操作。
CN202310159818.7A 2023-02-24 2023-02-24 定位处理器及激光点数据处理系统 Pending CN118550852A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310159818.7A CN118550852A (zh) 2023-02-24 2023-02-24 定位处理器及激光点数据处理系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310159818.7A CN118550852A (zh) 2023-02-24 2023-02-24 定位处理器及激光点数据处理系统

Publications (1)

Publication Number Publication Date
CN118550852A true CN118550852A (zh) 2024-08-27

Family

ID=92452459

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310159818.7A Pending CN118550852A (zh) 2023-02-24 2023-02-24 定位处理器及激光点数据处理系统

Country Status (1)

Country Link
CN (1) CN118550852A (zh)

Similar Documents

Publication Publication Date Title
CN109857702B (zh) 一种基于机器人的激光雷达数据读写控制系统及芯片
EP3091439B1 (en) Multi-bank memory with multiple read ports and multiple write ports per cycle
CN113190515B (zh) 基于异构并行计算的城市级海量点云坐标转换方法
EP3657337B1 (en) Method, apparatus, device and storage medium for accessing static random access memory
CN102446159B (zh) 多核处理器的数据管理方法及装置
CN111679286B (zh) 一种基于硬件加速的激光定位系统及芯片
CN114297097B (zh) 一种众核可定义分布式共享存储结构
CN108415859B (zh) 一种激光陀螺仪数据的硬件加速电路
CN108959149B (zh) 一种基于共享内存的多核处理器交互总线设计方法
CN113641603A (zh) 一种基于axi协议的ddr仲裁与调度方法及系统
US8549261B2 (en) Parallel computing apparatus and parallel computing method
US10534562B2 (en) Solid state drive
US20130339583A1 (en) Systems and methods for transferring data out of order in next generation solid state drive controllers
TWI696949B (zh) 直接記憶體存取方法、裝置、專用計算晶片及異構計算系統
CN118550852A (zh) 定位处理器及激光点数据处理系统
WO2022095439A1 (zh) 一种用于数据处理的硬件加速系统及芯片
CN107783909B (zh) 一种内存地址总线扩展方法及装置
CN116107923B (zh) 一种基于bram的多对多高速访存架构和访存系统
CN118548884A (zh) 基于激光点数据的重定位系统
EP3627316B1 (en) Real-time data processing and storage apparatus
CN113205554B (zh) 一种基于硬件加速的激光点云处理系统及芯片
CN113643326B (zh) 一种基于SoC的KNN计算装置和路径规划系统
CN114443264B (zh) 一种基于硬件加速的激光重定位系统及芯片
CN101002272A (zh) 动态随机存取存储器内的数据寻址
CN107807888B (zh) 一种用于soc架构的数据预取系统及其方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination