发明内容
为了克服现有技术的不足,本发明的目的在于提供一种局部代价地图的生成方法、存储介质和智能无人巡检车,其能解决上述问题。
一种局部代价地图的生成方法,方法包括以下步骤:
S1、实时获取包含环境信息和位置矢量信息Vectormap的当前激光点云PClidar,同时获取包括位置信息特征的当前感知障碍Obstaclelidar;设定预生成的局部代价地图Costlocal的宽W和高H;
S2、坐标转换,将当前激光点云PClidar、当前感知障碍Obstaclelidar的位置信息转化到无人车基座坐标系下,并由雷达坐标系在局部代价地图坐标系中的位姿计算出无人车基座base在局部代价地图坐标系中的位姿;
S3、确定感兴趣区域ROI,裁剪去除不关注区域的点云信息;
S4、遍历当前激光点云PClidar中感兴趣区域ROI内的所有空间点pi,求取局部代价地图Costlocal的[m,n]区域内包含的点云数量countmn,区域[m,n]属于感兴趣区域ROI,每遍历完一个空间点pi后更新相应[m,n]区域的计数加1;
S5、在所有点云数量countmn,的计数中寻找最大值,记作count_max,即count_max=Max(countmn);
S6、位置矢量信息Vectormap左乘以转换矩阵Tmap base,以将其由地图坐标系转移到无人车基座base坐标下,得到Vectorbase,即Vectorbase=Tmap base×Vectormap。
S7、遍历当前局部代价地图Costlocal的所有位置,判定所有区域可通行情况进行标记,完成带有通行信息标记的局部代价地图Cost’local。
优选的,步骤S7包括以下步骤:
S71、提取无人车基座坐标系下的区域[m,n]内的矢量信息状态Vectorbase[m,n],若Vectorbase[m,n]=0,或该区域[m,n]在Obstaclebase内,则该区域[m,n]不可通行;若Vectormap[m,n]=1,则进入下一步;
S72、计算当前区域[m,n]的点云数量count’mn,设定预设通行阈值Tratio;
S73、将当前区域[m,n]的点云数量count’mn与步骤S5中的点云数量最大值Max(countmn)相比,若比值大于预设通行阈值Tratio,则该区域不可通行,标记为0,若比值小于等于预设通行阈值Tratio,则该区域可通行,标记为1;
S74、重复步骤S71-S73,遍历所有区域,完成对所有区域的通行可否的标记,生成带有通行信息标记的局部代价地图Cost’local。
本发明还提供了一种计算机可读存储介质,其中存储有计算机指令,所述计算机指令运行时执行前述的方法。
本发明还提供了一种智能无人巡检车,包括车体、建图雷达组件、卫星天线、避障监测组件以及智能巡检导航避障系统;
所述建图雷达组件包括前端激光雷达、中间激光雷达、和顶端激光雷达,用于获取3D点云形式的环境信息,智能巡检导航避障系统根据环境信息执行前述的方法,从而生成实时更新的局部代价地图Cost’local;
所述卫星天线用于获取全球地理位置信息,并提供点云地图PCMAP,所述智能巡检导航避障系统根据点云地图PCMAP生成全局代价地图Cost’global;
所述避障监测组件包括前端毫米波雷达、环视相机、顶端双目相机和超声波雷达;避障监测组件用于实时获取当前帧图像信息和/或点云信息,提取障碍目标特征,实现障碍信息感知;
所述智能巡检导航避障系统融合局部代价地图、全局代价地图和障碍目标的感知信息,输出规划地图以实现复杂环境的智能巡检。
相比现有技术,本发明的有益效果在于:本申请通过当前激光点云PClidar和当前感知障碍Obstaclelidar,经过坐标转换、阈值对比判定、Obstaclebase范围判定,快速生成带有通行信息标记的局部代价地图Cost’local。该局部代价地图Cost’local精度高,实时生成的效率高,便于在巡检车等无人驾驶或自动导航领域应用。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
本说明书中使用了流程图用来说明根据本说明书的实施例的系统所执行的操作。应当理解的是,前面或后面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各个步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
第一实施例
一种局部代价地图的生成方法,局部代价地图的生成参考如下算法伪代码进行,输入参数分别代表输入当前帧激光点云PCbase、准备生成的局部代价地图的宽W和高H、当前帧的传感器的转换矩阵Tmap base、提前在点云地图上进行标注的位置矢量信息Vectormap和障碍感知信息Obstaclebase;输出参数及为局部代价地图Costlocal。
具体的,参见图1,方法包括以下步骤。
S1、实时获取包含环境信息和位置矢量信息Vectormap的当前激光点云PClidar,同时获取包括位置信息特征的当前感知障碍Obstaclelidar。设定预生成的局部代价地图Costlocal的宽W和高H。
S2、坐标转换,将当前激光点云PClidar、当前感知障碍Obstaclelidar的位置信息转化到无人车基座坐标系下,并由雷达坐标系在局部代价地图坐标系中的位姿计算出无人车基座base在局部代价地图坐标系中的位姿。坐标转换的公式为:
式中,PCbase为在无人车基座坐标系下的输入点云,Tlidar base为雷达坐标系到基座坐标系的转换矩阵,PClidar为雷达坐标系下直接获取的点云,Tmap base为地图坐标系到基座坐标系的转换矩阵,Tmap lidar为地图坐标系到雷达坐标系的转换矩阵。Obstaclebase为障碍物在基座坐标系下的坐标,Obstaclelidar为障碍物在雷达坐标系下的坐标。
说明:在开始输入参数都是以无人车基座坐标系为基准的,而初始提供参数一般以激光雷达、传感器lidar等获取或所在的雷达坐标系为基准,因此需要进行坐标转换。将当前激光点云PClidar、当前感知障碍Obstaclelidar的位置信息转化到无人车基座坐标系下,并由雷达坐标系在局部代价地图中的位置推导出无人车基座base在地图中的位置。参见图2,为不同坐标系转换及最终地图的示意图,其中,①处的坐标系代表无人车基座坐标系在地图坐标系上的位置,对应转换矩阵Tmap base;②处的区域代表无人车基座坐标系下的输入点云,对应PCbase;③处的坐标系代表地图坐标系的原点位置,白点区域代表原始点云地图;④处代表在基座坐标系下的障碍物,也即障碍物在雷达坐标系下的坐标,对应Obstaclelidar;⑤处的白色线条代表地图坐标系下的位置矢量信息,对应Vectormap;⑥处黑白相间的矩形区域,既代表最终生成局部代价地图,对应Cost’local。
S3、确定感兴趣区域ROI,裁剪去除不关注区域的点云信息。考虑到局部代价地图需要实时更新,为节约计算量,会对不关注区域内的点云进行裁剪,此处,采用常规图像处理技术即可,以此保留感兴趣区域ROI。从而大大减小计算量。当然,如果计算量不大,也可保留全部区域。
S4、遍历当前激光点云PC
lidar中感兴趣区域ROI内的所有空间点p
i,求取局部代价地图Cost
local的[m,n]区域内包含的点云数量count
mn,区域[m,n]属于感兴趣区域ROI,每遍历完一个空间点p
i后更新相应[m,n]区域的计数加1,即:
进入下一区域计算点云数量。
在步骤S4中,区域[m,n]的确定公式为:
式中,pi.x为任一空间点pi处的横坐标,pi.y为空间点pi处的纵坐标,floor函数表示对括号内的变量值取整数部分。
说明:即用每一个点的pi.x和pi.y坐标值去除以宽W和高H,比值去除余数取整数即为m和n。
S5、在所有点云数量countmn,的计数中寻找最大值,记作count_max,即count_max=Max(countmn)。
S6、位置矢量信息Vectormap左乘以转换矩阵Tmap base,以将其由地图坐标系转移到无人车基座base坐标下,得到Vectorbase。
Vectorbase=Tmap base×Vectormap。………………………………式3;
式中,Vectormap为地图坐标系下空间点的位置矢量信息,Tmap base为地图坐标系到无人车基座坐标系的转换矩阵,Vectorbase为无人车基座坐标系下的位置矢量信息。
说明:该步骤相当于在地图坐标系下额外附着的一层指示信息,和原始点云地图配合使用,该技术采用常规或现有技术即可,此处不再详述。
S7、遍历当前局部代价地图Costlocal的所有位置,判定所有区域可通行情况进行标记,完成带有通行信息标记的局部代价地图Cost’local。
步骤S7包括以下步骤:
S71、提取无人车基座坐标系下的区域[m,n]内的矢量信息状态Vectorbase[m,n],若Vectorbase[m,n]=0,或该区域[m,n]在Obstaclebase内,则该区域[m,n]不可通行。若Vectormap[m,n]=1,则进入下一步。
S72、计算当前区域[m,n]的点云数量count’mn,设定预设通行阈值Tratio。
S73、将当前区域[m,n]的点云数量count’mn与步骤S5中的点云数量最大值Max(countmn)相比,若比值大于预设通行阈值Tratio,则该区域不可通行,标记为0,若比值小于等于预设通行阈值Tratio,则该区域可通行,标记为1。
可见,区域[m,n]是否在Obstaclebase内以及矢量信息状态Vectorbase[m,n]的优先级大于通行阈值Tratio的优先级。
详细的,Vectormap[m,n]=0,那么即便是count’mn/count_max<Tratio,该区域也会被当作不可通行来处理。总体判定如下:
S74、重复步骤S71-S73,遍历所有区域,完成对所有区域的通行可否的标记,生成带有通行信息标记的局部代价地图Cost’local。
至此便完成了局部代价地图的生成,局部代价地图在全局坐标系下的位姿即无人车基座在地图坐标系下的位姿,即局部代价地图是以当前无人车所在位置为原点建立的。
第二实施例
本发明还提供了一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令运行时执行第一实施例所述的方法。其中,所述方法请参见前述部分的详细介绍,此处不再赘述。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于计算机可读存储介质中,计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本申请各部分操作所需的计算机程序编码可以用任意一种或多种程序语言编写,包括面向对象编程语言如Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB.NET、Python等,常规程序化编程语言如C语言、VisualBasic、Fortran2003、Perl、COBOL2002、PHP、ABAP,动态编程语言如Python、Ruby和Groovy,或其他编程语言等。该程序编码可以完全在用户计算机上运行、或作为独立的软件包在用户计算机上运行、或部分在用户计算机上运行部分在远程计算机运行、或完全在远程计算机或处理设备上运行。在后种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(LAN)或广域网(WAN),或连接至外部计算机(例如通过因特网),或在云计算环境中,或作为服务使用如软件即服务(SaaS)。
第三实施例
一种智能无人巡检车,参见图3,包括车体1、建图雷达组件、卫星天线5、避障监测组件以及智能巡检导航避障系统;
所述建图雷达组件包括前端激光雷达2、中间激光雷达3、和顶端激光雷达4,用于获取3D点云形式的环境信息,智能巡检导航避障系统根据环境信息执行第一实施例所述的方法,从而生成实时更新的局部代价地图Cost’local;
所述卫星天线5用于获取全球地理位置信息,并提供点云地图PCMAP,所述智能巡检导航避障系统根据点云地图PCMAP生成全局代价地图Cost’global;
所述避障监测组件包括前端毫米波雷达6、环视相机7、顶端双目相机8和超声波雷达;避障监测组件用于实时获取当前帧图像信息和/或点云信息,提取障碍目标特征,实现障碍信息感知;
所述智能巡检导航避障系统融合局部代价地图、全局代价地图和障碍目标的感知信息,输出规划地图以实现复杂环境的智能巡检。
需要说明的是,不同实施例可能产生的有益效果不同,在不同的实施例里,可能产生的有益效果可以是以上任意一种或几种的组合,也可以是其他任何可能获得的有益效果。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。