CN113776517A - 地图生成方法、装置、系统、存储介质及电子设备 - Google Patents

地图生成方法、装置、系统、存储介质及电子设备 Download PDF

Info

Publication number
CN113776517A
CN113776517A CN202111034115.9A CN202111034115A CN113776517A CN 113776517 A CN113776517 A CN 113776517A CN 202111034115 A CN202111034115 A CN 202111034115A CN 113776517 A CN113776517 A CN 113776517A
Authority
CN
China
Prior art keywords
point cloud
cloud data
data
pose
coordinate system
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.)
Granted
Application number
CN202111034115.9A
Other languages
English (en)
Other versions
CN113776517B (zh
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.)
Guangdong Oppo Mobile Telecommunications Corp Ltd
Original Assignee
Guangdong Oppo Mobile Telecommunications Corp 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 Guangdong Oppo Mobile Telecommunications Corp Ltd filed Critical Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority to CN202111034115.9A priority Critical patent/CN113776517B/zh
Priority claimed from CN202111034115.9A external-priority patent/CN113776517B/zh
Publication of CN113776517A publication Critical patent/CN113776517A/zh
Application granted granted Critical
Publication of CN113776517B publication Critical patent/CN113776517B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/38Electronic maps specially adapted for navigation; Updating thereof
    • G01C21/3804Creation or updating of map data

Landscapes

  • Engineering & Computer Science (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Automation & Control Theory (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Manipulator (AREA)

Abstract

本申请公开了一种地图生成方法、装置、系统、存储介质及电子设备,该方法包括获取多个位置各自对应的位姿数据;获取每个位姿数据对应的第一点云数据,并对第一点云数据进行处理,得到第二点云数据;第一点云数据的数据量大于第二点云数据的数据量;根据每个位姿数据以及与位姿数据对应的第二点云数据生成地图。本申请可在根据点云数据生成地图的过程中对获取的点云数据进行处理,在保障点云数据有效性的情况下减少点云数据的数据量,以提高生成地图的效率;同时,点云数据数据量的减少可降低处理数据的运行内存大小,进而降低了地图生成的运行成本,给用户带来更好的使用体验。

Description

地图生成方法、装置、系统、存储介质及电子设备
技术领域
本申请涉及机器人视觉领域,特别的涉及一种地图生成方法、装置、系统、存储介质及电子设备。
背景技术
随着科技的快速发展,越来越多的行业视野中开始出现便于向用户提供服务的机器人。机器人可通过自身携带的传感器感知外部信息,并同时进行定位和建立三维稠密点云地图的过程,其中传统的视觉技术可使用摄像头作为传感器,利用图像特征点(如ORB,SIFT等等)计算图像之间的匹配关系,并通过将这些特征点投影到三维空间建立地图。
然而在现有机器人构建的三维稠密点云地图过程中数据处理的效率低下,同时数据处理的成本较高,影响了用户对机器人的使用体验。
发明内容
本申请实施例提供了一种地图生成方法、装置、系统、存储介质及电子设备,通过对获取的点云数据进行轻量化处理以保留点云数据中的主要特征信息,可减少构建三维稠密点云地图过程中的数据处理量,提高整体数据处理的效率。
第一方面,本申请实施例提供了一种地图生成方法,包括:
获取多个位置各自对应的位姿数据;
获取每个位姿数据对应的第一点云数据,并对第一点云数据进行处理,得到第二点云数据;第一点云数据的数据量大于第二点云数据的数据量;
根据每个位姿数据以及与位姿数据对应的第二点云数据生成地图。
第二方面,本申请实施例提供了一种地图生成装置,包括:
第一获取模块,用于获取多个位置各自对应的位姿数据;
第二获取模块,用于获取每个位姿数据对应的第一点云数据,并对第一点云数据进行优化处理,得到第二点云数据;第一点云数据的数据量大于第二点云数据的数据量;
第一处理模块,用于根据每个位姿数据以及与位姿数据对应的第二点云数据生成地图。
第三方面,本申请实施例提供了一种电子设备,包括处理器以及存储器;
处理器与存储器相连;
存储器,用于存储可执行程序代码;
处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于执行本申请实施例第一方面或第一方面的任意一种实现方式提供的地图生成方法。
第四方面,本申请实施例提供了一种地图生成系统,包括:
第一采集单元,用于获取多个位置各自对应的位姿数据;
第二采集单元,用于获取每个位姿数据对应的第一点云数据,并对第一点云数据进行优化处理,得到第二点云数据;第一点云数据的数据量大于第二点云数据的数据量;
处理单元,用于根据每个所述位姿数据以及与所述位姿数据对应的所述第二点云数据生成地图。
第五方面,本申请实施例还提供了一种地图生成系统,包括:
电机编码器,用于获取多个位置各自对应的位姿数据;
激光雷达,用于获取每个位姿数据对应的第一点云数据,并对第一点云数据进行优化处理,得到第二点云数据;第一点云数据的数据量大于第二点云数据的数据量:
处理器,用于根据每个位姿数据以及与位姿数据对应的第二点云数据生成地图。
第六方面,本申请实施例提供了一种计算机存储介质,计算机存储介质存储有计算机程序,计算机程序包括程序指令,程序指令当被处理器执行时,可实现本申请实施例第一方面或第一方面的任意一种实现方式提供的地图生成方法。
在本申请实施例中,获取多个位置各自对应的位姿数据;获取每个位姿数据对应的第一点云数据,并对第一点云数据进行处理,得到第二点云数据;第一点云数据的数据量大于第二点云数据的数据量;根据每个位姿数据以及与位姿数据对应的第二点云数据生成地图。可在根据点云数据生成地图的过程中对获取的点云数据进行处理,在保障点云数据有效性的情况下减少点云数据的数据量,以提高生成地图的效率;同时,点云数据数据量的减少可降低处理数据的运行内存大小,进而降低了地图生成的运行成本,给用户带来更好的使用体验。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例中所需使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种地图生成系统的架构示意图;
图2为本申请实施例提供的基于地图生成系统的足式机器人结构示意图;
图3为本申请实施例提供的一种地图生成方法的流程示意图;
图4为本申请实施例提供的一种坐标系旋转角度示意图;
图5为本申请实施例提供的一种点云数据屏蔽效果示意图;
图6为本申请实施例提供的又一种地图生成方法的流程示意图;
图7为本申请实施例提供的一种运动轨迹优化处理示意图;
图8为本申请实施例提供的又一种地图生成方法的流程示意图;
图9为本申请实施例提供的又一种地图生成方法的流程示意图;
图10为本申请实施例提供的一种地图生成装置的结构示意图;
图11为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
请参阅图1,图1示出了本申请实施例提供的一种地图生成系统的架构示意图。
如图1所示,该地图生成系统100至少可以包括第一采集单元101、第二采集单元102以及处理单元103,其中:
第一采集单元101可获取多个位置各自对应的位姿数据,每个位姿数据包括对应位置在坐标系下的坐标以及姿态角。其中,每个位置所处的坐标系在应用该地图生成系统100的执行体中各不相同,此处以应用该地图生成系统的执行体100为足式机器人为例,第一采集单元101可基于电机编码器获取每个位置在足式机器人坐标系下的坐标以及对应的姿态角,该足式机器人坐标系可理解为以足式机器人某固定位置为原点建立的三维直角坐标系,也即是说获取的每个位置对应的位姿数据可表示为(x,y,z,θ),x可表示位置在足式机器人坐标系中x轴上的数值,y可表示位置在足式机器人坐标系中y轴上的数值,z可表示位置在足式机器人坐标系中z轴上的数值,θ可表示位置在足式机器人坐标系下的姿态角。此处提到的足式机器人某固定位置可以但不局限于为足式机器人的任意一个足底中心点,本实施例不限定于此。
可以理解的是,足式机器人坐标系还可设定为以足式机器人某固定位置为原点建立的直角坐标系,其对应的位姿数据可表示为(x,y,θ),x可表示位置在足式机器人坐标系中x轴上的数值,y可表示位置在足式机器人坐标系中y轴上的数值,θ可表示位置在足式机器人坐标系下的姿态角。
需要说明的是,基于电机编码器直接获取的姿态角误差较大,本申请实施例还可通过惯性传感器对姿态角进行校正,例如可通过加速度传感器、陀螺仪传感器以及磁力传感器对姿态角进行校正,计算得到每一个位置对应的姿态角可表示为(roll,pitch,yaw),roll可表示当前位置围绕x轴旋转的角度(也可称为俯仰角),pitch可表示当前位置围绕y轴旋转的角度(也可称为偏航角),yaw可表示当前位置围绕z轴旋转的角度(也可称为翻滚角),基于此获取的每一个位置对应的位姿数据还可表示为(x,y,z,roll,pitch,yaw)。
还可以理解的是,第一采集单元101可基于预设时段获取该多个位置各自对应的位姿数据,其中预设时段可划分为多个时间戳,每一个时间戳可对应有一个位置以及相应的位姿数据,以保障多个位置对应的位姿数据的有效性和实时性。例如,以预设时段为以当前时刻到当前时刻的下一秒为例,该一秒内可划分为10个时间戳,每个时间戳对应的时间为0.1秒,也即是说第一采集单元101可基于该预设时段每隔0.1秒获取一个位置所对应的位姿数据。
第二采集单元102可获取与每个位姿数据对应的第一点云数据,也可以理解为每个位置可对应有位姿数据以及第一点云数据。其中,第一点云数据可基于激光雷达获取,每帧第一点云数据所包括的点可基于雷达坐标系进行表示。具体地,以雷达坐标系为激光雷达中心作为原点建立的三维直角坐标系为例,每帧第一点云数据所包括的点均为在雷达坐标系下的坐标,例如可表示为(x,y,z)。当然,雷达坐标系也可为以激光雷达中心作为原点建立的三维直角坐标系,每帧第一点云数据所包括的点均为在雷达坐标系下的坐标,例如可表示为(x,y)。可以理解的是,参照上述以应用该地图生成系统100的执行体为足式机器人为例,雷达坐标系与足式机器人坐标系不为同一个坐标系,两个坐标系之间存在有偏移量,也即各坐标系原点位置的不同以及各坐标系中任意相邻轴所在平面的夹角不同。
进一步的,在获取与每个位姿数据对应的第一点云数据之后,第二采集单元102还可对第一点云数据进行处理得到第二点云数据,该第二点云数据的数据量小于第一点云数据的数据量。其中,第二采集单元102可对第一点云数据所包括的点进行处理,以使得到的第二点云数据中所包括的点的数据量小于第一点云数据中所包括的点的数据量,该处理方式可在减少第一点云数据中所包括的点的数量同时,保障得到的第二点云数据中所包括的点的有效性。可以理解的是,该处理方式可以但不局限于包括对特征点提取或聚类处理等。
还可以理解的是,第二采集单元102也可参照上述提到的在预设时段内获取与多个位置各自对应的第一点云数据,并对每个第一点云数据进行处理得到与多个位置各自对应的第二点云数据,其中预设时段可划分为多个时间戳,每一个时间戳可对应有一个位置以及相应的第一点云数据,并分别对每个时间戳的第一点云数据处理得到相应的第二点云数据,以保障多个位置对应的第二点云数据的有效性和实时性。例如,以预设时段为以当前时刻到当前时刻的下一秒为例,该一秒内可划分为10个时间戳,每个时间戳对应的时间为0.1秒,也即是说第二采集单元102可基于该预设时段每隔0.1秒获取一个位置所对应的第一点云数据,并对每个第一点云数据进行处理得到对应的第二点云数据。
处理单元103可根据每个位姿数据以及与位姿数据对应的第二点云数据生成地图,其中,处理单元103可根据每个位姿数据生成相应的运动轨迹,并结合对该运动轨迹的处理,根据与处理后的运动轨迹中包括的每个位姿数据所对应的第二点云数据生成地图。
可以理解的是,当第二采集单元102获取与每个位姿数据对应的第一点云数据,并将每个第一点云数据处理得到第二点云数据中的点可表示为(x,y,z)时,处理单元103对应生成三维点云地图。当第二采集单元102获取与每个位姿数据对应的第一点云数据,并将每个第一点云数据处理得到第二点云数据中的点可表示为(x,y)时,处理单元103对应生成二维点云栅格地图。
此处以将该地图生成系统作为足式机器人的地图组成部分为例,请参阅图2示出的本申请实施例提供的一种基于地图生成系统的足式机器人结构示意图。
如图2所示,该足式机器人200至少可以包括激光雷达201、电机编码器202、处理器203、机器人关节204以及电源205,其中:
激光雷达201可在预设时段内获取每帧雷达数据的时间戳以及获取每一个时间戳在雷达坐标系下的第一点云数据,其中每帧雷达数据的时间戳可理解为该激光雷达在预设时段内的数据采集频率,例如在预设时段当前时刻与当前时刻下一秒内获取10帧雷达数据,每一帧雷达数据对应的时间戳为0.1秒,也即可理解为获取在预设时段内每隔0.1秒在雷达坐标系下的第一点云数据。
可以理解的是,本实施例中的激光雷达可以但不局限于为多线激光雷达或单线激光雷达,其中,多线激光雷达获取的第一点云数据中的点可表示为(x,y,z),单线激光雷达获取的第一点云数据中的点可表示为(x,y)。
电机编码器202可获取对应于上述激光雷达201提到的每一个时间戳在足式机器人坐标系下的位姿数据,例如参照上述提到的在预设时段当前时刻与当前时刻下一秒内获取10帧雷达数据,电机编码器202获取每隔0.1秒在足式机器人坐标系下的位姿数据。可以理解的是,电机编码器202获取的每个位姿数据可表示为(x,y,z,θ)。
此外,本实施例中的电机编码器202还可替换为电机编码器和惯性传感器,由于电机编码器获取的姿态角误差较大,可引入惯性传感器对电机编码器获取的姿态角进行校正,并通过卡尔曼滤波得到的位姿数据可表示为(x,y,z,roll,pitch,yaw)。
还可以理解的是,电机编码器202不局限于此实施例获取三维位姿数据,例如还可获取表示为(x,y,θ)的位姿数据。
处理器203在由激光雷达201获取到第一点云数据之后,可对第一点云数据进行处理得到第二点云数据,以使第二点云数据中点的数据量小于由激光雷达获取的第一点云数据中点的数据量。其后处理器203可根据电机编码器202获取的多个位姿数据与每个位姿数据对应的第二点云数据生成点云地图,并结合足式机器人获取的操作指令控制机器人关节204转动。例如,处理器203在生成点云地图之后可将该点云地图发送至足式机器人控制终端,接收由该足式机器人控制终端发送的操作指令,并根据操作指令控制机器人关节204进行前进或后退等操作。
电源205可用于分别向激光雷达201、电机编码器202、处理器203以及机器人关节204供电。
需要说明的是,在上述图2中提到的足式机器人的地图生成组成部分中,可不局限于通过激光雷达201获取的点云数据以及电机编码器202获取的位姿数据生成地图。
可能的,足式机器人还可通过毫米波雷达获取第一点云数据以及电机编码器获取位姿数据,其中处理器可对毫米波雷达获取的第一点云数据进行处理得到第二点云数据,并根据位姿数据以及与位姿数据对应的第二点云数据生成点云地图。可以理解的是,毫米波雷达相较于激光雷达抗干扰能力更强、成本更低,可适用于室外恶劣环境中,且其获取的第一点云数据基于雷达坐标系生成也可表示为(x,y,z),可等同于本实施例中的激光雷达。
可能的,足式机器人还可通过相机获取第一图像数据以及电机编码器获取位姿数据,其中处理器可对相机获取的第一图像数据进行处理得到第二图像数据,并根据位姿数据以及对位姿数据对应的第二图像数据生成图像地图。可以理解的是,相机相较于本实施例中的激光雷达可构建不同的地图,但其构建过程中处理器也可对相机获取的第一图像数据进行处理,以使得到的第二图像数据在保障数据有效性的情况下减少图像数据的数据量,以实现与本实施例提高数据处理效率一致的效果。此外,此处的相机可以但不局限于为双目相机或单目相机。
需要说明的是,本申请提出的地图生成系统可不局限于应用在上述提到的足式机器人领域,例如还可应用在自动驾驶领域或视觉分析领域,且接下来本申请将以足式机器人作为执行体对地图生成方法进行详细说明。
请参阅图3,图3示出了本申请实施例提供的一种地图生成方法的流程示意图。
如图3所示,该地图生成方法至少包括以下步骤:
步骤301、获取多个位置各自对应的位姿数据。
具体地,足式机器人可基于电机编码器获取多个位置在足式机器人坐标系下的位姿数据,该足式机器人坐标系可为以足式机器人某固定位置为原点建立的三维直角坐标系。其中,每个位姿数据可包括相应位置对应在足式机器人坐标系下的坐标以及姿态角,例如但不局限于表示为(x1,y1,z1,θ),该x1、y1以及z1可理解为相应位置在足式机器人坐标系中x轴、y轴以及z轴分别对应的数值,该姿态角θ可理解为相应位置相较于足式机器人坐标系转动的角度。可以理解的是,本实施例中多个位置可为足式机器人在行进路线中遍历过的多个位置,例如但不局限于在足式机器人历史行进路线中包括的多个位置或在足式机器人实时行进路线中包括的多个位置。另,此处提到的足式机器人某固定位置可以但不局限于为足式机器人的任意一个足底中心点,本实施例不限定于此。
需要说明的是,基于电机编码器直接获取的姿态角误差较大,本申请实施例还可通过惯性传感器对姿态角进行校正,例如可通过加速度传感器、陀螺仪传感器以及磁力传感器对姿态角进行校正,计算得到每一个位置对应的姿态角可表示为(roll,pitch,yaw),roll可表示当前位置围绕x轴旋转的角度(也可称为俯仰角),pitch可表示当前位置围绕y轴旋转的角度(也可称为偏航角),yaw可表示当前位置围绕z轴旋转的角度(也可称为翻滚角),基于此获取的每一个位置对应的位姿数据还可表示为(x1,y1,z1,roll,pitch,yaw)。
还可以理解的是,足式机器人可不局限于获取三维位姿数据,例如还可获取坐标表示为(x1,y1,θ)的与多个位置各自对应的二维位姿数据,本实施例不限定于此。
步骤302、获取每个位姿数据对应的第一点云数据,并对第一点云数据进行处理,得到第二点云数据。
具体地,足式机器人还可基于激光雷达获取与每个位姿数据对应的第一点云数据,该第一点云数据可包括多个基于雷达坐标系生成的点的坐标。其中,雷达坐标系可为以激光雷达中心作为原点建立的三维直角坐标系,第一点云数据中包括的每个点在雷达坐标系中可表示为(x2,y2,z2),该x2、y2以及z2可理解为第一点云数据中每个点在雷达坐标系中x轴、y轴以及z轴分别对应的数值。可以理解的是,雷达坐标系与上述提到的足式机器人坐标系不为同一个坐标系,两个坐标系之间存在有偏移量,也即各坐标系原点位置的不同以及各坐标系中任意相邻轴所在平面的夹角不同。
进一步的,在获取与每个位姿数据对应的第一点云数据之后,足式机器人还可对第一点云数据进行处理得到第二点云数据,该第二点云数据中包括的点的数量小于第一点云数据中包括的点的数量。其中,第一点云数据为激光雷达获取的初始点云数据,可通过对第一点云数据进行特征提取处理或聚类处理筛选出具有特征信息的点,并将筛选出具有特征信息的点的第一点云数据作为第二点云数据。可以理解的是,第二点云数据中每个点的坐标与第一点云数据中对应点的坐标一致,均可表示为(x2,y2,z2)。
还可以理解的是,足式机器人可不局限于获取的与每个位姿数据对应的三维点云数据,例如还可获取坐标表示为(x2,y2)的与每个位姿数据对应的二维点云数据,本实施例不限定于此。
步骤303、根据每个位姿数据以及与位姿数据对应的第二点云数据生成地图。
具体地,足式机器人在对第一点云数据处理得到第二点云数据之后,可根据每个位姿数据以及相应处理得到的第二点云数据生成点云地图。
在本申请实施例中,可在根据点云数据生成地图的过程中对获取的点云数据进行处理,在保障点云数据有效性的情况下减少点云数据的数据量,以提高生成地图的效率;同时,点云数据数据量的减少可降低处理数据的运行内存大小,进而降低了地图生成的运行成本,给用户带来更好的使用体验。
作为本申请的一个实施例,每帧第一点云数据对应一个时间戳;
获取多个位置各自对应的位姿数据,包括:
在预设时段内获取多个位置各自对应的位姿数据;每个位姿数据分别对应一个时间戳;
获取每个位姿数据对应的第一点云数据,并对第一点云数据进行处理,得到第二点云数据,包括:
获取与每个位姿数据的时间戳一致的第一点云数据,并对第一点云数据进行处理,得到与每个第一点云数据对应的第二点云数据。
具体地,足式机器人可在预设时段内采集多帧位姿数据,每帧位姿数据可对应一个位置,且每帧位姿数据在该预设时段内对应有一个时间戳。其中,多个位置可为多帧位姿数据各自对应的多个位置中的部分或全部,例如以足式机器人在预设时段当前时刻与当前时刻下一秒内采集10帧位姿数据为例,多个位置可为10帧位姿数据各自对应的10个位置中部分或全部的位置,作为优选的可将10个位置全部作为多个位置,以提高数据处理效率。
进一步的,足式机器人在确定与多个位置各自对应的位姿数据的时间戳之后,可基于激光雷达获取与每个位姿数据的时间戳一致的第一点云数据,并对每个第一点云数据进行处理得到数据量小于该第一点云数据的第二点云数据。
可以理解的是,足式机器人可在预设时段内获取多个位置各自对应的位姿数据之前,先确定位姿数据的采集频率,也即确定每帧位姿数据对应的时间戳,进而可在预设时段内确定多个位置,以及获取与多个位置各自对应的位姿数据。
需要说明的是,本实施例可不局限于先确定位姿数据的采集频率,例如还可先确定激光雷达的采集频率,根据激光雷达的采集频率确定每帧点云数据对应的时间戳,并根据该每帧点云数据对应的时间戳获取在预设时段内多个位置各自对应的位姿数据,其中每个位置数据对应的时间戳与该每帧点云数据对应的时间戳一致。
在本申请实施例中,可通过在获取位姿数据之前确定每帧位姿数据对应的时间戳,并基于每帧位姿数据对应的时间戳获取与时间戳一致的第一点云数据,以使获取的位姿数据与第一点云数据在时间戳上存在对应关系,保障了生成的点云地图的准确性的同时提高了数据处理的效率。
作为本申请的又一个实施例,在预设时段内获取多个位置各自对应的位姿数据之后,根据每个位姿数据以及与位姿数据对应的第二点云数据生成地图之前,还包括:
将每个位姿数据转换为基于世界坐标系生成的位姿数据;
根据每个位姿数据以及与位姿数据对应的第二点云数据生成地图,包括:
根据每个基于世界坐标系生成的位姿数据以及与基于世界坐标系生成的位姿数据对应的第二点云数据生成地图。
具体地,足式机器人在根据每个位姿数据以及与位姿数据对应的第二点云数据生成地图之前,可将基于足式机器人坐标系生成的多个位置各自对应的位姿数据转换为基于世界坐标系生成的位姿数据。其中,足式机器人坐标系可为足式机器人以某固定位置作为原点建立的三维直角坐标系,世界坐标系可为足式机器人以所在平面某固定位置作为原点建立的三维直角坐标系。可以理解的是,本实施例中足式机器人坐标系以及世界坐标系各自对应的原点可由足式机器人程序默认设定或由操作人员人工设定。
以某一位置对应的位姿数据在足式机器人坐标系下生成的坐标为(x,y,z,roll,pitch,yaw)为例,可基于如下公式(1)得到该位置在世界坐标系下的坐标(X,Y,Z):
Figure BDA0003246297520000061
其中,R为旋转矩阵,T为足式机器人坐标系的原点在世界坐标系中对应的坐标所表示的平移矩阵。
此处由于该位置在足式机器人坐标系下生成的坐标受x轴、y轴以及z轴三个方向上的分量共同控制,因此旋转矩阵R可通过如下公式(2)-(5)得到:
R=r1×r2×r3 (2)
Figure BDA0003246297520000071
Figure BDA0003246297520000072
Figure BDA0003246297520000073
其中,公式(3)中的α可为足式机器人坐标系对应的y轴与z轴所在平面与世界坐标系对应的Y轴与Z轴所在平面的夹角,具体可参阅图4示出的本申请实施例提供的一种坐标系旋转角度示意图中a所对应的旋转角度示意图。公式(4)中的β可为足式机器人坐标系对应的x轴与z轴所在平面与世界坐标系对应的X轴与Z轴所在平面的夹角,具体可参阅图4示出的本申请实施例提供的一种坐标系旋转角度示意图中b所对应的旋转角度示意图。公式(5)中的γ可为足式机器人坐标系对应的y轴与x轴所在平面与世界坐标系对应的Y轴与X轴所在平面的夹角,具体可参阅图4示出的本申请实施例提供的一种坐标系旋转角度示意图中c所对应的旋转角度示意图。
需要说明的是,每个位置对应的足式机器人坐标系对应在世界坐标系中的原点位置不同以及各坐标系中任意相邻轴所在平面的夹角不同,也即每个位置对应的位姿数据在转换为世界坐标系的过程中对应的旋转矩阵R以及平移矩阵T各不相同。
可以理解的是,上述提到的足式机器人坐标系与世界坐标系之间的转换可基于编辑代码实现,例如但不局限于python代码,此处不过多赘述。
在本申请实施例中,可将多个位置各自对应的位姿数据进行坐标系转换,以便于快速根据每个转换的位姿数据以及相应处理得到的第二点云数据生成点云地图,在保障地图精确性的同时进一步提高数据处理的效率。
作为本申请的又一个实施例,对第一点云数据进行处理,得到第二点云数据,包括:
对第一点云数据进行分割处理,得到平面特征点以及角特征点;
根据平面特征点以及角特征点得到第二点云数据。
具体地,足式机器人在基于激光雷达获取与每个位姿数据对应的第一点云数据之后,可将每帧第一点云数据进行分割处理,以分割出角特征点以及平面特征点,并将仅具有该角特征点以及平面特征点的第一点云数据作为第二点云数据。
其中,足式机器人在对第一点云数据进行分割处理时,可先对第一点云数据中所包括的所有点进行坐标修正。具体地,可对第一点云数据中所包括的所有点进行坐标转换,计算每个点距离第一个扫描点的时间差,并根据该时间差对应的强度信息对转换的坐标系进行调整。此处转换的坐标系对应的x轴、y轴以及z轴与第一点云数据对应的雷达坐标系中的x轴、y轴以及z轴不同,例如转换的坐标系中的x轴可对应于雷达坐标系中的y轴,转换的坐标系中的y轴可对应于雷达坐标系中的z轴,转换的坐标系中的z轴可对应于雷达坐标系中的x轴。
进一步的,足式机器人可对第一点云数据中所包括的所有点计算平滑参数(也称为曲率),该平滑参数的计算方式可为计算对第一点云数据中所包括的任意点到第一个扫描点的距离与前后各5个点到第一个扫描点的距离差值的累计和的平方。此处平滑参数S可参阅如下公式(6)所示的公式进行计算:
S=(ΔL1+ΔL2+ΔL3+ΔL4+ΔL5+ΔL6+ΔL7+ΔL8+ΔL9+ΔL10)2 (6)
公式(6)中ΔL1为当前点到第一个扫描点的距离与当前点前第5个点到第一个扫描点的距离的差值,ΔL2为当前点到第一个扫描点的距离与当前点前第4个点到第一个扫描点的距离的差值,ΔL3为当前点到第一个扫描点的距离与当前点前第3个点到第一个扫描点的距离的差值,ΔL4为当前点到第一个扫描点的距离与当前点前第2个点到第一个扫描点的距离的差值,ΔL5为当前点到第一个扫描点的距离与当前点前第1个点到第一个扫描点的距离的差值,ΔL6为当前点到第一个扫描点的距离与当前点后第1个点到第一个扫描点的距离的差值,ΔL7为当前点到第一个扫描点的距离与当前点后第2个点到第一个扫描点的距离的差值,ΔL8为当前点到第一个扫描点的距离与当前点后第3个点到第一个扫描点的距离的差值,ΔL9为当前点到第一个扫描点的距离与当前点后第4个点到第一个扫描点的距离的差值,ΔL10为当前点到第一个扫描点的距离与当前点后第5个点到第一个扫描点的距离的差值。
进一步的,足式机器人还可对第一点云数据中所包括的所有点进行屏蔽标记,以屏蔽掉处于同一位置附近的多个点或者边缘跳跃点。此处可参阅图5示出的本申请实施例提供的一种点云数据屏蔽效果示意图。如图5所示,该点云数据屏蔽效果示意图展示了距离扫描点不同距离的多个点A1、A2、A3、A4、B1、B2、B3、B4、C1、C2、C3、C4、C5、C6以及C7,其中A1、A2、A3、A4到扫描点的距离相同,B1、B2、B3、B4到扫描点的距离相同,C1、C2、C3、C4、C5、C6以及C7到扫描点的距离相同。以扫描点按照A1至C7的顺序进行扫描,当扫描点扫描到近处点B1时,远处点A4被该近处点B1屏蔽到,且按照以同一位置附近相邻的点被屏蔽的方式,可将与扫描点处于同一距离的多个点A1、A2、A3、A4中A1作为可判断特征提取的点,A2、A3以及A4作为可屏蔽的点(也即不需要判断特征提取的点)。同样的,当扫描点扫描到远处点C1时,远处点C1被进近处点B4屏蔽到,则按照以同一位置附近相邻的点被屏蔽的方式,可将与扫描点处于同一距离的多个点C1、C2、C3、C4、C5、C6以及C7中C4、C5、C6以及C7作为可判断特征提取的点,C1、C2、C3作为可屏蔽的点(也即不需要判断特征提取的点)。可以理解的是,近处点B1、B2、B3、B4在该点云数据屏蔽效果示意图中均未被其他点屏蔽到,则可将B1、B2、B3、B4均作为可判断特征提取的点。
进一步的,足式机器人可对可判断特征提取的点进行角特征点以及平面特征点进行分割。具体地,在进行角特征点分割时,可按照上述提到的平滑参数对第一点云数据中可判断特征提取的所有点按照从大到小进行排序,筛除从远处跳跃到近处的边缘点,筛除平滑参数低于预设阈值的点,筛除确定为特征点的相邻5个点,并将筛选出的特征点按照平滑参数从大到小的顺序选取预设数量的特征点作为角特征点。
具体地,在进行面特征点分割时,可按照上述提到的平滑参数对第一点云数据中可判断特征提取的所有点按照从小到大进行排序,筛除平滑参数高于预设阈值的点,筛除确定为特征点的相邻5个点,并将筛选出的特征点按照平滑参数从小到大的顺序选取预设数量的特征点作为面特征点。
可以理解的是,本实施例中足式机器人可根据lego-loam代码对第一点云数据进行分割处理得到第二点云数据,且本实施例不限定于此。
除此之外,由于点云数据中所包括的点可分为地面点以及非地面点,本实施例还可先将第一点云数据划分为地面点云数据以及非地面点云数据,并
在本申请实施例中,可对获取的第一点云数据进行分割处理得到包括角特征点以及面特征点的第二点云数据,在筛除噪声点、重复点的同时保障点云数据的特征信息,以便于保障生成点云地图的准确性的同时提高数据处理效率,且可有效降低运行成本。
作为本申请的又一个实施例,对第一点云数据进行处理,得到第二点云数据之后,根据每个基于世界坐标系生成的位姿数据以及与基于世界坐标系生成的位姿数据对应的第二点云数据生成地图之前,还包括:
对第二点云数据进行聚类处理,得到第三点云数据;第三点云数据的数据量小于第二点云数据的数据量;
根据每个基于世界坐标系生成的位姿数据以及与基于世界坐标系生成的位姿数据对应的第二点云数据生成地图,包括:
根据每个基于世界坐标系生成的位姿数据以及与基于世界坐标系生成的位姿数据对应的第三点云数据生成地图。
具体地,足式机器人在对获取的第一点云数据进行分割处理得到第二点云数据之后,可对该第二点云数据进行聚类处理得到第三点云数据,其中该第三点云数据中所包括的角特征点以及面特征点的数量小于第二点云数据中所包括的角特征点以及面特征点的数量,且保障该第三点云数据中所包括的角特征点以及面特征点保留主要特征信息,并根据每个基于世界坐标系生成的位姿数据以及与基于世界坐标系生成的位姿数据对应的第三点云数据生成地图。
可以理解的是,本实施例可对第二点云数据进行降采样,以保障在第二点云数据中所有特征点的几何结构基本不变的前提下减少特征点的数量。此处具体的处理方式可为利用体素法滤波,在第二点云数据中所有特征点所在三维空间创建一个体素栅格,对于栅格内的每一个体素以体素内所有点的重心近似代替体素中的点,并将所有体素中的重心点组成滤波后的所有点(也即第三点云数据中所包括的所有点)。
当然,本实施例可不局限于上述采用点云库(PCL库)中的体素法滤波,例如还可采用点云库中的直通滤波、统计滤波、半径滤波、条件滤波或投影滤波等。
在本申请实施例中,可对第二点云数据中筛选出的特征点进行滤波处理,得到数据量更少且可保障主要特征信息的第三点云数据,以进一步提高生成的点云地图的效率以及运行成本的降低,给用户带来更好的使用体验。
作为本申请的又一个实施例,可参阅图6示出的本申请实施例提供的又一种地图生成方法的流程示意图。
如图6所示,该地图生成方法至少包括以下步骤:
步骤601、获取多个位置各自对应的位姿数据。
具体地,步骤601与步骤301一致,此处不再赘述。
步骤602、获取每个位姿数据对应的第一点云数据,并对第一点云数据进行处理,得到第二点云数据。
具体地,步骤602与步骤302一致,此处不再赘述。
步骤603、对第二点云数据进行聚类处理,得到第三点云数据。
具体地,步骤603可参照上述提到的实施例,此处不过多赘述。
步骤604、将每个位姿数据转换为基于世界坐标系生成的位姿数据。
具体地,步骤604可参照上述提到的实施例,此处不过多赘述。
步骤605、根据多个基于世界坐标系生成的位姿数据生成在预设时段内的运动轨迹。
具体地,足式机器人在获取在预设时段内的多个位置各自对应的位姿数据,并将每个位姿数据转换为基于世界坐标系生成的位姿数据之后,例如可根据该多个基于世界坐标系生成的位姿数据在世界坐标系中各自对应的多个坐标点,通过相邻坐标点连线的方式在世界坐标系中生成在预设时段内的运动轨迹。
可以理解的是,本申请可不局限于上述通过坐标点相连的方式生成在预设时段内的运动轨迹,例如还可通过其他模型建立运动轨迹。
步骤606、对运动轨迹进行回环检测。
具体地,足式机器人在确定多个位置中第一个位置对应的位姿数据之后,可通过递推计算出后续每个位置对应的位姿数据,但后续计算出的每个位置对应的位姿数据都会存在误差,且相邻两个位置对应的位姿数据的误差会累加到下个位置对应的位姿数据的误差。
基于此,本实施例中足式机器人为了消除位姿数据的误差,可对预设时段内的运动轨迹进行回环检测,该方式可理解为检测该运动轨迹是否存在回环轨迹(也即该运动轨迹是否存在相同的两个位置)。需要注意的是,运动轨迹中相同的两个位置不一定局限于第一个位置和最后一个位置,也即是说运动轨迹可为在运动过程中出现回环轨迹且其最后一个位置不与第一个位置相同。
需要说明的是,此处本实施例对运动轨迹采用回环检测的方式可为将该运动轨迹输入至词袋模型,将对应运动轨迹的词袋向量与利用逆序索引获取的具有回环检测向量进行相似度计算,将相似度最高的最为回环对,并对该回环对进行验证,校验是否为正确的回环。当然,本申请实施例还可采用其他视觉算法对运动轨迹进行回环检测。
步骤607、若回环检测结果为存在回环,则对运动轨迹进行非线性处理,得到优化运动轨迹。
具体地,足式机器人若检测到运动轨迹的回环检测结果为回环,则表明该运动轨迹中存在回环轨迹,则可该运动轨迹进行非线性处理优化,得到优化后的运动轨迹。其中,优化后的运动轨迹相较于进行回环检测的运动轨迹更加平滑,误差更小,且优化后的运动轨迹所对应的多个位置的数量小于或等于进行回环检测的运动轨迹所对应的多个位置的数量。
此处可参阅图7示出的本申请实施例提供的一种运动轨迹优化处理示意图。如图7中7a所示的检测到回环的运动轨迹,其第一个位置与最后一个位置重合,若以位置A作为第一个位置,该运动轨迹可按照轨迹顺序依次包括位置A、位置a、位置b、位置B、位置c、位置d、位置C、位置D、位置e、位置E、位置f、位置g、位置A。图7中7b所示为对7a中运动轨迹进行优化后的运动轨迹,该优化后的运动轨迹可按照轨迹顺序依次包括位置A、位置B。位置C、位置D以及位置E。可以理解的是,7b所示的优化后的运动轨迹相较于7a所示的运动轨迹可消除位置a、位置b、位置c、位置d、位置e以及位置f给运动轨迹带来的误差影响。
步骤608、根据每个与优化运动轨迹对应的位姿数据所对应的第三点云数据生成地图。
具体地,足式机器人可在得到优化运动轨迹之后,重新确定优化运动轨迹所对应的多个位姿数据,并根据该每个位姿数据所对应的第三点云数据生成点云地图。
在本申请实施例中,可对每个位姿数据生成的运动轨迹进行回环检测,在检测到回环的情况下对该运动轨迹进行优化,以筛除运动轨迹中误差较大的位姿数据,进而减少与位姿数据对应的第三点云数据的帧数,可使根据第三点云数据生成的点云地图的效率进一步提高,且由于删除了误差较大的点云数据,可保障生成的点云地图的精确性。
作为本申请的又一个实施例,第三点云数据基于雷达坐标系生成;
根据每个与优化运动轨迹对应的位姿数据所对应的第三点云数据生成地图,包括:
将根据每个与优化运动轨迹对应的位姿数据所对应的第三点云数据转换为基于世界坐标系生成的第三点云数据;
根据每个基于所述世界坐标系生成的第三点云数据生成地图。
具体地,足式机器人基于激光雷达获取的第一点云数据基于雷达坐标系生成,在对第一点云数据进行分割处理得到第二点云数据的过程中并未将该第一点云数据进行其他坐标系的转换,基于此第二点云数据也为基于雷达坐标系生成。进一步的,足式机器人在对第二点云数据进行聚类处理得到第三点云数据的过程中也未将该第二点云数据进行其他坐标系的转换,基于此第三点云数据也为基于雷达坐标系生成。
进一步的,足式机器人可将每个基于雷达坐标系生成的第三点云数据转换为基于世界坐标系生成的第三点云数据,以使根据基于世界坐标系生成的第三点云数据生成的点云地图应用在世界坐标系下,此处基于世界坐标系的位置在足式机器人运动过程中保持固定,可保障生成的点云地图适用性更强。需要注意的是,在足式机器人运动过程中每帧点云数据所对应的雷达坐标系的位置在发送变化(也可理解为每帧点云数据对应的雷达坐标系的原点以及坐标轴均发生改变),若根据基于雷达坐标系生成的点云数据生成点云地图,易导致点云地图的精确性不高。
可以理解的是,每帧点云数据对应的雷达坐标系与世界坐标系的旋转矩阵以及偏移矩阵不一致,基于此需先对每帧点云数据对应的旋转矩阵以及偏移矩阵进行计算,其次再分别得到每帧点云数据转换为基于世界坐标系的点云数据。
作为本申请的又一个实施例,对运动轨迹进行回环检测之后,还包括:
若回环检测结果为不存在回环,则根据每个与运动轨迹对应的位姿数据所对应的第三点云数据生成地图。
具体地,足式机器人若检测到运动轨迹的回环检测结果为不存在回环,则表明运动轨迹中没有回环轨迹,例如该运动轨迹为直线轨迹或不回环曲线轨迹。此处以运动轨迹为直线轨迹为例,在公知技术中可知直线轨迹中各个位置的位姿变化量较小(仅存在对应坐标数值的改变),其相邻的两个位置之间的位姿误差较小,因此可直接根据每个与运动轨迹对应的位姿数据所对应的第三点云数据生成点云地图。
在本申请实施例中,当运动轨迹的回环检测结果为不存在回环时,可表明运动轨迹为误差很小的直线轨迹或曲线轨迹,基于此可直接根据每个与运动轨迹对应的位姿数据所对应的第三点云数据生成点云地图,保障点云地图的精确性。
作为本申请的又一个实施例,可参阅图8示出的本申请实施例提供的又一种地图生成方法的流程示意图。
如图8所示,该地图生成方法至少包括以下步骤:
步骤801、获取多个位置各自对应的位姿数据。
具体地,步骤801与步骤601、步骤301一致,此处不再赘述。
步骤802、获取每个位姿数据对应的第一点云数据,并对第一点云数据进行处理,得到第二点云数据。
具体地,步骤802与步骤602、步骤302一致,此处不再赘述。
步骤803、对第二点云数据进行聚类处理,得到第三点云数据。
具体地,步骤803与步骤603一致,可参照上述提到的实施例,此处不过多赘述。
步骤804、将每个位姿数据转换为基于世界坐标系生成的位姿数据。
具体地,步骤804与步骤604一致,可参照上述提到的实施例,此处不过多赘述。
步骤805、根据多个基于世界坐标系生成的位姿数据生成在预设时段内的运动轨迹。
具体地,步骤805与步骤605一致,此处不再赘述。
步骤806、对运动轨迹进行回环检测。
具体地,步骤806与步骤606一致,此处不再赘述。
步骤807、若回环检测结果为不存在回环,则在对应于预设时段的下一时段内获取多个位置对应的位姿数据。
具体地,足式机器人若检测到运动轨迹的回环检测结果为不存在回环,还可确定对应于预设时段的下一时段,并在下一时段内获取每一个时间戳对应的位姿数据。其中,下一时段可为与预设时段时长相等且与预设时段相邻的时段,例如以预设时段为0-10秒,每一帧位姿数据对应的时间戳为0.1秒为例,则可确定下一时段为10-20秒,在下一时段内每一帧位姿数据对应的时间戳也为0.1秒。
可以理解的是,在预设时段内的运动轨迹可能不存在回环轨迹,但仍存在误差较大的位姿数据,根据该预设时段内对应的点云数据所生成的点云地图精确性不高。基于此,本实施例可获取对应于该预设时段的下一时段的多个位姿数据,并对该下一时段对应的运动轨迹进行回环检测。
步骤808、将下一时段内获取的多个位置对应的位姿数据转换为多个基于世界坐标系生成的位姿数据。
具体地,足式机器人可将下一时段内基于足式机器人坐标系生成的多个位置各自对应的位姿数据转换为基于世界坐标系生成的位姿数据。其中,足式机器人坐标系可为足式机器人以某固定位置作为原点建立的三维直角坐标系,世界坐标系可为足式机器人以所在平面某固定位置作为原点建立的三维直角坐标系。可以理解的是,本实施例中足式机器人坐标系以及世界坐标系各自对应的原点可由足式机器人程序默认设定或由操作人员人工设定。
需要说明的是,每个位置对应的足式机器人坐标系对应在世界坐标系中的原点位置不同以及各坐标系中任意相邻轴所在平面的夹角不同,也即每个位置对应的位姿数据在转换为世界坐标系的过程中对应的旋转矩阵R以及平移矩阵T各不相同。
可以理解的是,上述提到的足式机器人坐标系与世界坐标系之间的转换可基于编辑代码实现,例如但不局限于python代码,此处不过多赘述。
步骤809、根据多个基于世界坐标系生成的位姿数据生成下一时段内的运动轨迹,并对下一时段内的运动轨迹进行回环检测。
具体地,足式机器人在获取在下一时段内的多个位置各自对应的位姿数据,并将每个位姿数据转换为基于世界坐标系生成的位姿数据之后,可根据该每个基于世界坐标系生成的位姿数据在世界坐标系中各自对应的多个坐标点,通过相邻坐标点连线的方式在世界坐标系中生成在下一时段内的运动轨迹。
可以理解的是,本申请可不局限于上述对下一时段内的运动轨迹进行回环检测,例如还可在根据多个基于世界坐标系生成的位姿数据生成下一时段内的运动轨迹之后,对预设时段与下一时段所组成的运动轨迹进行回环检测。
进一步的,足式机器人若检测到下一时段内的运动轨迹存在回环,则可对该运动轨迹进行非线性优化,并根据优化的运动轨迹中对应的多个位姿数据以及与该多个位姿数据各自对应的点云数据生成点云地图。
进一步的,足式机器人若检测到下一时段内的运动轨迹不存在回环,则可继续确定对应于下一时段内的时段,在该时段内获取多个位置各自对应的位姿数据以及生成对应的运动轨迹,并对该时段内对应的运动轨迹继续进行回环检测,直至在运动轨迹中检测到存在回环。需要注意的是,当足式机器人在某一时段检测到存在回环时,则可对该运动轨迹进行非线性优化,并根据优化的运动轨迹中对应的多个位姿数据以及与该多个位姿数据各自对应的点云数据生成点云地图。
在本申请实施例中,可对基于多个位姿数据生成的运动轨迹进行回环检测,直至运动轨迹检测到回环,再根据检测到回环的运动轨迹所对应的点云数据生成点云地图,可避免因误差较大的位姿数据所对应的点云数据对生成点云地图的准确性造成影响,同时还可结合对点云数据的处理,增加生成点云地图的效率。
作为本申请的又一个实施例,请参阅图9示出的本申请实施例提供的又一种地图生成方法的流程示意图。
如图9所示,该地图生成方法至少包括以下步骤:
步骤901、获取在预设时段内每帧位姿数据的时间戳。
步骤902、根据时间戳获取多个位置各自对应的位姿数据。
步骤903、获取与每个位姿数据的时间戳一致的第一点云数据,并对第一点云数据进行处理,得到第二点云数据。
步骤904、对第二点云数据进行聚类处理,得到第三点云数据。
步骤905、对根据多个位置对应的位姿数据生成的运动轨迹进行回环检测。
步骤906、判断运动轨迹是否存在回环,若是则进入步骤907,若否则进入步骤902。
步骤907、对运动轨迹进行非线性处理,得到优化运动轨迹。
步骤908、根据每个与优化运动轨迹对应的位姿数据所对应的第三点云数据生成地图。
具体地,足式机器人可获取在预设时段内每帧位姿数据的时间戳,并根据时间戳获取多个位置对应的位姿数据以及与每个位姿数据的时间戳一致的第一点云数据。可以理解的是,本申请实施例可不局限于获取在预设时段内每帧位姿数据的时间戳,例如还可为在预设时段内每帧点云数据的时间戳。进一步的,足式机器人可对第一点云数据进行分割处理,得到包括面特征点以及角特征点的第二点云数据,其中,第二点云数据的数据量小于第一点云数据的数据量。进一步的,足式机器人可对第二点云数据进行聚类处理,得到经过滤波处理的第三点云数据,其中,第三点云数据的数据量小于第二点云数据的数据量。进一步的,足式机器人可根据多个位置各自对应的位姿数据生成在世界坐标系下的运动轨迹,并对运动轨迹进行回环检测。可能的,若回环检测结果为不存在回环,则可继续根据时间戳获取多个位置各自对应的位姿数据以及与每个位姿数据的时间戳一致的第一点云数据、第二点云数据、第三点云数据,并对根据该多个位置各自对应的位姿数据生成在世界坐标系下的运动轨迹继续进行回环检测,直至检测结果为存在回环。可能的,若回环检测结果为存在回环,则对运动轨迹进行非线性处理,得到优化运动轨迹,并根据每个与优化运动轨迹对应的位姿数据所对应的第三点云数据生成点云地图。
在本申请实施例中,可对获取的第一点云数据进行分割、聚类处理得到数据量小于第一点云数据的第三点云数据,以提高数据的处理效率;其次根据回环检测的检测结果对位姿数据进行优化,得到误差更小的位姿数据,以使生成的点云地图精确性更高。除此之外,由于数据处理量的减少,还可降低投入的数据处理内存成本,给用户带来更好的使用体验。
请参阅图10,图10示出了本申请实施例提供的一种地图生成装置的结构示意图。
如图10所示,该地图生成装置1000至少可以包括第一获取模块1001、第二获取模块1002以及第一处理模块1003,其中:
第一获取模块1001,用于获取多个位置各自对应的位姿数据;
第二获取模块1002,用于获取每个位姿数据对应的第一点云数据,并对第一点云数据进行优化处理,得到第二点云数据;第一点云数据的数据量大于第二点云数据的数据量;
第一处理模块1003,用于根据每个位姿数据以及与位姿数据对应的第二点云数据生成地图。
在一些可能的实施例中,每帧第一点云数据对应一个时间戳;
第一获取模块1001具体用于:
在预设时段内获取多个位置各自对应的位姿数据;每个位姿数据分别对应一个时间戳;
第二获取模块1002具体用于:
获取与每个位姿数据的时间戳一致的第一点云数据,并对第一点云数据进行处理,得到与每个第一点云数据对应的第二点云数据。
在一些可能的实施例中,地图生成装置1000还包括:
第二处理模块,用于在预设时段内获取多个位置各自对应的位姿数据之后,根据每个位姿数据以及与位姿数据对应的第二点云数据生成地图之前,将每个位姿数据转换为基于世界坐标系生成的位姿数据;
第一处理模块1003,用于根据每个基于世界坐标系生成的位姿数据以及与基于世界坐标系生成的位姿数据对应的第二点云数据生成地图。
在一些可能的实施例中,第二获取模块1002具体用于:
对第一点云数据进行分割处理,得到平面特征点以及角特征点;
根据平面特征点以及角特征点得到第二点云数据。
在一些可能的实施例中,地图生成装置1000还包括:
第三处理模块,用于对第一点云数据进行处理,得到第二点云数据之后,根据每个基于世界坐标系生成的位姿数据以及与基于世界坐标系生成的位姿数据对应的第二点云数据生成地图之前,对第二点云数据进行聚类处理,得到第三点云数据;第三点云数据的数据量小于第二点云数据的数据量;
第一处理模块1003,用于根据每个基于世界坐标系生成的位姿数据以及与基于世界坐标系生成的位姿数据对应的第三点云数据生成地图。
在一些可能的实施例中,第一处理模块1003,用于:
根据多个基于世界坐标系生成的位姿数据生成在预设时段内的运动轨迹;
对运动轨迹进行回环检测;
若回环检测结果为存在回环,则对运动轨迹进行非线性处理,得到优化运动轨迹;
根据每个与优化运动轨迹对应的位姿数据所对应的第三点云数据生成地图。
在一些可能的实施例中,第三点云数据基于雷达坐标系生成;
第一处理模块1003,用于:
将根据每个与优化运动轨迹对应的位姿数据所对应的第三点云数据转换为基于世界坐标系生成的第三点云数据;
根据每个基于世界坐标系生成的第三点云数据生成地图。
在一些可能的实施例中,第一处理模块1003,用于:
若回环检测结果为不存在回环,则根据每个与运动轨迹对应的位姿数据所对应的第三点云数据生成地图。
在一些可能的实施例中,第一处理模块1003,用于:
将根据每个与运动轨迹对应的位姿数据所对应的第三点云数据转换为基于世界坐标系生成的第三点云数据;
根据每个基于世界坐标系生成的第三点云数据生成地图。
在一些可能的实施例中,第一处理模块1003,用于:
若回环检测结果为不存在回环,则在对应于预设时段的下一时段内获取多个位置各自对应的位姿数据;每个位姿数据分别对应一个时间戳;
将下一时段内获取的每个位姿数据转换为多个基于世界坐标系生成的位姿数据;
根据每个基于世界坐标系生成的位姿数据生成下一时段内的运动轨迹,并对下一时段内的运动轨迹进行回环检测。
请参阅图11,图11示出了本申请实施例提供的一种电子设备的结构示意图。
如图11所示,该电子设备1100可以包括:至少一个处理器1101、至少一个网络接口1104、用户接口1103、存储器1105、激光雷达1106、电机编码器1107以及至少一个通信总线1102。
其中,通信总线1102可用于实现上述各个组件的连接通信。
其中,用户接口1103可以包括按键,可选用户接口还可以包括标准的有线接口、无线接口。
其中,网络接口1104可以但不局限于包括蓝牙模块、NFC模块、Wi-Fi模块等。
其中,处理器1101可以包括一个或者多个处理核心。处理器1101利用各种接口和线路连接整个电子设备1100内的各个部分,通过运行或执行存储在存储器1105内的指令、程序、代码集或指令集,以及调用存储在存储器1105内的数据,执行路由设备1100的各种功能和处理数据。可选的,处理器1101可以采用DSP、FPGA、PLA中的至少一种硬件形式来实现。处理器1101可集成CPU、GPU和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器1101中,单独通过一块芯片进行实现。
其中,存储器1105可以包括RAM,也可以包括ROM。可选的,该存储器1105包括非瞬时性计算机可读介质。存储器1105可用于存储指令、程序、代码、代码集或指令集。存储器1105可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等;存储数据区可存储上面各个方法实施例中涉及到的数据等。存储器1105可选的还可以是至少一个位于远离前述处理器1101的存储装置。如图11所示,作为一种计算机存储介质的存储器1105中可以包括操作系统、网络通信模块、用户接口模块以及地图生成应用程序。
具体地,处理器1101可以用于调用存储器1105中存储的地图生成应用程序,并具体执行以下操作:
获取多个位置各自对应的位姿数据;
获取每个位姿数据对应的第一点云数据,并对第一点云数据进行处理,得到第二点云数据;第一点云数据的数据量大于第二点云数据的数据量;
根据每个位姿数据以及与位姿数据对应的第二点云数据生成地图。
在一些可能的实施例中,每帧第一点云数据对应一个时间戳;
处理器1101获取多个位置各自对应的位姿数据时,具体用于执行:
在预设时段内获取多个位置各自对应的位姿数据;每个位姿数据分别对应一个时间戳;
处理器1101获取每个位姿数据对应的第一点云数据,并对第一点云数据进行处理,得到第二点云数据时,具体用于执行:
获取与每个位姿数据的时间戳一致的第一点云数据,并对第一点云数据进行处理,得到与每个第一点云数据对应的第二点云数据。
在一些可能的实施例中,处理器1101在预设时段内获取多个位置各自对应的位姿数据之后,根据每个位姿数据以及与位姿数据对应的第二点云数据生成地图之前,还用于执行:
将每个位姿数据转换为基于世界坐标系生成的位姿数据;
处理器1101根据每个位姿数据以及与位姿数据对应的第二点云数据生成地图时,具体用于执行:
根据每个基于世界坐标系生成的位姿数据以及与基于世界坐标系生成的位姿数据对应的第二点云数据生成地图。
在一些可能的实施例中,处理器1101对第一点云数据进行处理,得到第二点云数据时,具体用于执行:
对第一点云数据进行分割处理,得到平面特征点以及角特征点;
根据平面特征点以及角特征点得到第二点云数据。
在一些可能的实施例中,处理器1101对第一点云数据进行处理,得到第二点云数据之后,根据每个基于世界坐标系生成的位姿数据以及与基于世界坐标系生成的位姿数据对应的第二点云数据生成地图之前,还用于执行:
对第二点云数据进行聚类处理,得到第三点云数据;第三点云数据的数据量小于第二点云数据的数据量;
处理器1101根据每个基于世界坐标系生成的位姿数据以及与基于世界坐标系生成的位姿数据对应的第二点云数据生成地图时,具体用于执行:
根据每个基于世界坐标系生成的位姿数据以及与基于世界坐标系生成的位姿数据对应的第三点云数据生成地图。
在一些可能的实施例中,处理器1101根据每个基于世界坐标系生成的位姿数据以及与基于世界坐标系生成的位姿数据对应的第三点云数据生成地图时,具体用于执行:
根据多个基于世界坐标系生成的位姿数据生成在预设时段内的运动轨迹;
对运动轨迹进行回环检测;
若回环检测结果为存在回环,则对运动轨迹进行非线性处理,得到优化运动轨迹;
根据每个与优化运动轨迹对应的位姿数据所对应的第三点云数据生成地图。
在一些可能的实施例中,第三点云数据基于雷达坐标系生成;
处理器1101根据每个与优化运动轨迹对应的位姿数据所对应的第三点云数据生成地图时,具体用于执行:
将根据每个与优化运动轨迹对应的位姿数据所对应的第三点云数据转换为基于世界坐标系生成的第三点云数据;
根据每个基于世界坐标系生成的第三点云数据生成地图。
在一些可能的实施例中,处理器1101对运动轨迹进行回环检测之后,还用于执行:
若回环检测结果为不存在回环,则根据每个与运动轨迹对应的位姿数据所对应的第三点云数据生成地图。
在一些可能的实施例中,处理器1101根据每个与运动轨迹对应的位姿数据所对应的第三点云数据生成地图时,用于执行:
将根据每个与运动轨迹对应的位姿数据所对应的第三点云数据转换为基于世界坐标系生成的第三点云数据;
根据每个基于世界坐标系生成的第三点云数据生成地图。
在一些可能的实施例中,处理器1101对运动轨迹进行回环检测之后,还用于执行:
若回环检测结果为不存在回环,则在对应于预设时段的下一时段内获取多个位置各自对应的位姿数据;每个位姿数据分别对应一个时间戳;
将下一时段内获取的每个位姿数据转换为多个基于世界坐标系生成的位姿数据;
根据每个基于世界坐标系生成的位姿数据生成下一时段内的运动轨迹,并对下一时段内的运动轨迹进行回环检测。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机或处理器上运行时,使得计算机或处理器执行上述图3或图6或图8或图9所示实施例中的一个或多个步骤。上述电子设备的各组成模块如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在所述计算机可读取存储介质中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者通过所述计算机可读存储介质进行传输。所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(Digital SubscriberLine,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,数字多功能光盘(Digital VersatileDisc,DVD))、或者半导体介质(例如,固态硬盘(Solid State Disk,SSD))等。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可存储程序代码的介质。在不冲突的情况下,本实施例和实施方案中的技术特征可以任意组合。
以上所述的实施例仅仅是本申请的优选实施例方式进行描述,并非对本申请的范围进行限定,在不脱离本申请的设计精神的前提下,本领域普通技术人员对本申请的技术方案作出的各种变形及改进,均应落入本申请的权利要求书确定的保护范围内。

Claims (15)

1.一种地图生成方法,其特征在于,包括:
获取多个位置各自对应的位姿数据;
获取每个所述位姿数据对应的第一点云数据,并对所述第一点云数据进行处理,得到第二点云数据;所述第一点云数据的数据量大于所述第二点云数据的数据量;
根据每个所述位姿数据以及与所述位姿数据对应的所述第二点云数据生成地图。
2.根据权利要求1所述的方法,其特征在于,每帧所述第一点云数据对应一个时间戳;
所述获取多个位置各自对应的位姿数据,包括:
在预设时段内获取多个位置各自对应的位姿数据;每个所述位姿数据分别对应一个时间戳;
所述获取每个所述位姿数据对应的第一点云数据,并对所述第一点云数据进行处理,得到第二点云数据,包括:
获取与每个所述位姿数据的时间戳一致的第一点云数据,并对所述第一点云数据进行处理,得到与每个所述第一点云数据对应的第二点云数据。
3.根据权利要求2所述的方法,其特征在于,所述在预设时段内获取多个位置各自对应的位姿数据之后,所述根据每个所述位姿数据以及与所述位姿数据对应的所述第二点云数据生成地图之前,还包括:
将每个所述位姿数据转换为基于世界坐标系生成的位姿数据;
所述根据每个所述位姿数据以及与所述位姿数据对应的所述第二点云数据生成地图,包括:
根据每个所述基于世界坐标系生成的位姿数据以及与所述基于世界坐标系生成的位姿数据对应的所述第二点云数据生成地图。
4.根据权利要求3所述的方法,其特征在于,所述对所述第一点云数据进行处理,得到第二点云数据,包括:
对所述第一点云数据进行分割处理,得到平面特征点以及角特征点;
根据所述平面特征点以及角特征点得到第二点云数据。
5.根据权利要求3所述的方法,其特征在于,所述对所述第一点云数据进行处理,得到第二点云数据之后,所述根据每个所述基于世界坐标系生成的位姿数据以及与所述基于世界坐标系生成的位姿数据对应的所述第二点云数据生成地图之前,所述方法还包括:
对所述第二点云数据进行聚类处理,得到第三点云数据;所述第三点云数据的数据量小于所述第二点云数据的数据量;
所述根据每个所述基于世界坐标系生成的位姿数据以及与所述基于世界坐标系生成的位姿数据对应的所述第二点云数据生成地图,包括:
根据每个所述基于世界坐标系生成的位姿数据以及与所述基于世界坐标系生成的位姿数据对应的所述第三点云数据生成地图。
6.根据权利要求5所述的方法,其特征在于,所述根据每个所述基于世界坐标系生成的位姿数据以及与所述基于世界坐标系生成的位姿数据对应的所述第三点云数据生成地图,包括:
根据所述多个基于世界坐标系生成的位姿数据生成在所述预设时段内的运动轨迹;
对所述运动轨迹进行回环检测;
若所述回环检测结果为存在回环,则对所述运动轨迹进行非线性处理,得到优化运动轨迹;
根据每个与所述优化运动轨迹对应的位姿数据所对应的所述第三点云数据生成地图。
7.根据权利要求6所述的方法,其特征在于,所述第三点云数据基于雷达坐标系生成;
所述根据每个与所述优化运动轨迹对应的位姿数据所对应的所述第三点云数据生成地图,包括:
将根据每个与所述优化运动轨迹对应的位姿数据所对应的所述第三点云数据转换为基于所述世界坐标系生成的第三点云数据;
根据每个所述基于所述世界坐标系生成的第三点云数据生成地图。
8.根据权利要求6所述的方法,其特征在于,所述对所述运动轨迹进行回环检测之后,所述方法还包括:
若所述回环检测结果为不存在回环,则根据每个与所述运动轨迹对应的位姿数据所对应的所述第三点云数据生成地图。
9.根据权利要求8所述的方法,其特征在于,所述根据每个与所述运动轨迹对应的位姿数据所对应的所述第三点云数据生成地图,包括:
将根据每个与所述运动轨迹对应的位姿数据所对应的所述第三点云数据转换为基于所述世界坐标系生成的第三点云数据;
根据每个所述基于所述世界坐标系生成的第三点云数据生成地图。
10.根据权利要求6所述的方法,其特征在于,所述对所述运动轨迹进行回环检测之后,所述方法还包括:
若所述回环检测结果为不存在回环,则在对应于所述预设时段的下一时段内获取多个位置各自对应的位姿数据;每个所述位姿数据分别对应一个时间戳;
将所述下一时段内获取的每个位姿数据转换为多个基于世界坐标系生成的位姿数据;
根据每个所述基于世界坐标系生成的位姿数据生成所述下一时段内的运动轨迹,并对所述下一时段内的运动轨迹进行回环检测。
11.一种地图生成装置,其特征在于,包括:
第一获取模块,用于获取多个位置各自对应的位姿数据;
第二获取模块,用于获取每个所述位姿数据对应的第一点云数据,并对所述第一点云数据进行优化处理,得到第二点云数据;所述第一点云数据的数据量大于所述第二点云数据的数据量;
第一处理模块,用于根据每个所述位姿数据以及与所述位姿数据对应的所述第二点云数据生成地图。
12.一种电子设备,其特征在于,包括处理器以及存储器;
所述处理器与所述存储器相连;
所述存储器,用于存储可执行程序代码;
所述处理器通过读取所述存储器中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,以用于执行如权利要求1-10任一项所述的方法。
13.一种地图生成系统,其特征在于,包括:
第一采集单元,用于获取多个位置各自对应的位姿数据;
第二采集单元,用于获取每个所述位姿数据对应的第一点云数据,并对所述第一点云数据进行优化处理,得到第二点云数据;所述第一点云数据的数据量大于所述第二点云数据的数据量;
处理单元,用于根据每个所述位姿数据以及与所述位姿数据对应的所述第二点云数据生成地图。
14.一种地图生成系统,其特征在于,包括:
电机编码器,用于获取多个位置各自对应的位姿数据;
激光雷达,用于获取每个所述位姿数据对应的第一点云数据,并对所述第一点云数据进行优化处理,得到第二点云数据;所述第一点云数据的数据量大于所述第二点云数据的数据量:
处理器,用于根据每个所述位姿数据以及与所述位姿数据对应的所述第二点云数据生成地图。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-10任一项所述的方法。
CN202111034115.9A 2021-09-03 地图生成方法、装置、系统、存储介质及电子设备 Active CN113776517B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111034115.9A CN113776517B (zh) 2021-09-03 地图生成方法、装置、系统、存储介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111034115.9A CN113776517B (zh) 2021-09-03 地图生成方法、装置、系统、存储介质及电子设备

Publications (2)

Publication Number Publication Date
CN113776517A true CN113776517A (zh) 2021-12-10
CN113776517B CN113776517B (zh) 2024-05-31

Family

ID=

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114322899A (zh) * 2021-12-27 2022-04-12 苏州方石科技有限公司 地坪检测方法及储存介质及电子装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140350839A1 (en) * 2013-05-23 2014-11-27 Irobot Corporation Simultaneous Localization And Mapping For A Mobile Robot
CN111442722A (zh) * 2020-03-26 2020-07-24 达闼科技成都有限公司 定位方法、装置、存储介质及电子设备
CN111912417A (zh) * 2020-07-10 2020-11-10 上海商汤临港智能科技有限公司 地图构建方法、装置、设备及存储介质
CN111983639A (zh) * 2020-08-25 2020-11-24 浙江光珀智能科技有限公司 一种基于Multi-Camera/Lidar/IMU的多传感器SLAM方法
CN112799095A (zh) * 2020-12-31 2021-05-14 深圳市普渡科技有限公司 静态地图生成方法、装置、计算机设备及存储介质
CN113192174A (zh) * 2021-04-06 2021-07-30 中国计量大学 建图方法、装置及计算机存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140350839A1 (en) * 2013-05-23 2014-11-27 Irobot Corporation Simultaneous Localization And Mapping For A Mobile Robot
CN111442722A (zh) * 2020-03-26 2020-07-24 达闼科技成都有限公司 定位方法、装置、存储介质及电子设备
CN111912417A (zh) * 2020-07-10 2020-11-10 上海商汤临港智能科技有限公司 地图构建方法、装置、设备及存储介质
CN111983639A (zh) * 2020-08-25 2020-11-24 浙江光珀智能科技有限公司 一种基于Multi-Camera/Lidar/IMU的多传感器SLAM方法
CN112799095A (zh) * 2020-12-31 2021-05-14 深圳市普渡科技有限公司 静态地图生成方法、装置、计算机设备及存储介质
CN113192174A (zh) * 2021-04-06 2021-07-30 中国计量大学 建图方法、装置及计算机存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114322899A (zh) * 2021-12-27 2022-04-12 苏州方石科技有限公司 地坪检测方法及储存介质及电子装置

Similar Documents

Publication Publication Date Title
CN110517319B (zh) 一种相机姿态信息确定的方法及相关装置
US9767598B2 (en) Smoothing and robust normal estimation for 3D point clouds
CN107123142B (zh) 位姿估计方法和装置
US9053571B2 (en) Generating computer models of 3D objects
US8269722B2 (en) Gesture recognition system and method thereof
CN110648397B (zh) 场景地图生成方法、装置、存储介质及电子设备
CN110796671B (zh) 数据处理方法及相关装置
CN111652113B (zh) 障碍物检测方法、装置、设备以及存储介质
CN112348921A (zh) 一种基于视觉语义点云的建图方法及系统
CN112880687A (zh) 一种室内定位方法、装置、设备和计算机可读存储介质
CN112819892B (zh) 图像处理方法和装置
CN111680685A (zh) 一种基于图像的定位方法、装置、电子设备及存储介质
Ruf et al. Real-time on-board obstacle avoidance for UAVs based on embedded stereo vision
US11461921B2 (en) Program, system, electronic device, and method for recognizing three-dimensional object
KR20230005312A (ko) 평면도를 생성하기 위한 방법 및 장치
CN113671523A (zh) 机器人定位方法、装置、存储介质及机器人
KR102333768B1 (ko) 딥러닝 기반 손 인식 증강현실 상호 작용 장치 및 방법
CN113758481A (zh) 栅格地图生成方法、装置、系统、存储介质及电子设备
CN113776517B (zh) 地图生成方法、装置、系统、存储介质及电子设备
CN116704029A (zh) 稠密物体语义地图构建方法、装置、存储介质及电子设备
CN113776517A (zh) 地图生成方法、装置、系统、存储介质及电子设备
CN116642490A (zh) 基于混合地图的视觉定位导航方法、机器人及存储介质
CN113628284B (zh) 位姿标定数据集生成方法、装置、系统、电子设备及介质
CN117408935A (zh) 障碍物检测方法、电子设备和存储介质
EP3770809A1 (en) Method and apparatus for estimating user's pose by using three-dimensional virtual space model

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
GR01 Patent grant