发明内容
本发明的目的在于提供一种可移动设备的定位系统及方法,以解决现有的定位技术所存在的适用性差、成本高、计算过程复杂及空间利用率低的问题。
特别是在某些应用场景下,例如教学、比赛、表演,出于体积、成本、精度等要求,二维码是一种较好的定位方法,但是为了展示的效果,不能在下面铺满二维码。因此,本发明提出了一种基于隐形定位码的定位方法及系统,以解决上述问题。
为实现上述目的,本发明提供一种定位系统,包括设置于可视区域背景图案中若干隐形定位码,还包括其识别装置,所述隐形定位码及所述可视区域背景图案分别由具有不同的红外光吸收能力的油墨制成,所述识别装置包括:红外光源、图像采集单元及处理器,所述图像采集单元用于采集所述红外光源照射下的隐形定位码的图像并发送至所述处理器,所述处理器对所述图像进行隐形定位码的识别并根据预存的隐形定位码位置进行定位。
较佳地,所述隐形定位码分布于预设范围内两组交叉的平行线划分的网格内,所述码元所在区域包括:头部及数据区,其中,所述头部的码元分布于所述网格的中心,所述数据区的码元分布于所述网格的中心周围的预设范围内。
较佳地,所述码元根据预设的编码规则分别分布于所述头部及数据区。
较佳地,所述数据区的码元包括若干个数据码元组,每个数据码元设置为与该数据码元组表示信息对应的预设形状。
较佳地,所述数据区包括若干个数据子区域,不同的数据子区域内的码元表示不同的信息。
较佳地,所述头部的码元呈“L”形分布、“ㄩ”形分布或“口”形分布。
本发明还提供了一种定位方法,采用如上所述的定位系统进行定位,包括:
S1:识别装置采用所述红外光源照射所述可视区域;
S2:通过图像采集单元获取所述可视区域中隐形定位码的图像;
S3:所述处理器对所述图像进行隐形定位码的识别并根据预存的隐形定位码位置进行定位。
较佳地,所述处理器对所述隐形定位码进行识别的方法包括:
采用直线检测算法检测出隐形定位码的图像中分布的直线,确定隐形定位码所在的网格的两个主要方向;
根据分布于两个主要方向的网格的中心的图案,找到位于头部的码元;
根据头部的码元找到对应的数据区的码元并进行定位码的读取。
较佳地,找到位于头部的码元后还包括:根据预设的编码规则读取头部的码元。
较佳地,所述步骤S3中进行定位的方法包括:所述处理器提取识别的所述隐形定位码中的任何三个码元图案不在同一直线上的四个码元,根据提取的四个码元与所述图像采集单元预先标定好的内参数,计算得到所述隐形定位码相对图像采集单元的位姿关系,并转换为所述隐形定位码与识别装置所在设备的位姿关系,进而完成定位。
较佳地,所述步骤S3中进行定位的方法包括:当设备在平面上运动时,所述处理器识别隐形定位码后计算图像中心与隐形定位码在两组平行线方向上的位置偏移Δx、Δy以及角度偏移θ,确定图像采集单元在平面内的位置和朝向,然后根据所述图像采集单元的内参数及安装位置,计算得到所述隐形定位码相对所述图像采集单元的位姿关系,并转换为所述隐形定位码与所述识别装置所在设备的位姿关系,进而完成定位。实际上,这种关系可以简化为一个比例关系。
本发明具有以下有益效果:
1.本方法的特点在于人眼不易察觉,不影响原有的内容,便于在教学、表演等场合使用;
2.相对于常用二维码而言,本发明采用的编码方法简单,编码量少;
3.由于采用了红外图像检测的方法,图像检测的算法简单,易于实现;
4.由于隐形定位码尺寸小,可以实现在移动区域内完全覆盖;
具体实施方式
以下将结合本发明的附图,对本发明实施例中的技术方案进行清楚、完整的描述和讨论,显然,这里所描述的仅仅是本发明的一部分实例,并不是全部的实例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明的保护范围。
为了便于对本发明实施例的理解,下面将结合附图以具体实施例为例作进一步的解释说明,且各个实施例不构成对本发明实施例的限定。
参考图1所示,本实施例提供了一种定位系统,包括设置于可视区域背景图案中若干隐形定位码104,还包括其识别装置,其中隐形定位码及可视区域背景图案分别由具有不同的红外光吸收能力的油墨制成。这里的识别装置包括:红外光源101、图像采集单元103及处理器102,图像采集单元用于采集红外光源照射下的隐形定位码的图像并发送至处理器,处理器对所述图像进行隐形定位码的识别并根据预存的隐形定位码位置进行定位。该识别装置可用于无人小车的定位,也可以用于其他形态的机器人,例如人形机器人、无人机等任意一种需要定位的设备。红外光源101、图像采集单元103及处理器102可根据需要集成在机器人设备的内部结构中或可拆卸安装于机器人上。其中,处理器102可以为单独定位使用的处理器,也可利用机器人自身配置的处理器进行图像处理及定位计算。
本实施例中,红外光源可以是红外发光二极管和红外激光二极管。
具体地,图像处理单元包括能够感知红外线的图像传感器(例如CMOS、CCD传感器)和光学成像器件。
该定位系统通过将隐形定位码及可视区域背景图案由具有不同的红外光吸收能力的油墨制成,隐形定位码及可视区域背景图案对红外光吸收能力不同,使得红外光源照射后的图案中可区分隐形定位码及可视区域背景图案。图像采集单元采集图像后,可直接提取隐形定位码信息。而在可视的区域内分布的隐形定位码,这些定位码的实际尺寸可以设置的非常小,均匀分布在可视区域,从人的视觉效果看,类似于均匀分布在可视区域的背景色,基本不会被察觉。但图像采集单元却可以通过红外光照射使其具有不同的显示效果,便于通过隐形定位码进行精确的快速的定位。
本实施例中的隐形定位码分布于预设范围内两组交叉的平行线划分的网格内,两个方向可以是方向1和方向2,可以不是垂直关系。而码元所在区域包括头部及数据区两个部分。其中,位于头部区域的码元分别分布于其所在网格的中心,而位于数据区的码元则分布于网格的中心周围的预设范围内,参考图2A-2D所示。
隐形定位码的码元根据预设的编码规则分别分布于上述的头部及数据区。这里的码元是指绘于网格内的微图像,可根据需要设置为易于识别的集合图案,如图2A-2D所示的圆点及图2D中所示的三角形。当然也可设计为正方形、星形等。这里绘于网格内的微图像可以根据需要采用印制、绘制、喷涂或粘贴等方法设置于可视区域内。
而这里采用的预设的编码规则在设置隐形定位码前可根据需要进行预调整。在进行编码设计时,直接将需要定位的区域用两组交叉的平行的直线段划分成网格。这里的两组交叉的平行线间的夹角为90度,在其他优选实施例中,方向1和方向2间的夹角可以根据需要选择为0-180度间的任意一值。当然,满足可移动设备(如机器人)能够明显区分出两个方向的条件即可。
本实施例中,预设的编码规则中,设置头部的码元为呈L型分布,由两个分别与两组平行线平行的均匀分布的点列组成。这里的L型分布的两个方向分别与上述两组交叉的平行线的方向相同。且设置所有编码头部的数据元都位于网格中心。这样便于识别及判断两组交叉的平行线的方向,及找出定位码的头部。其中,头部的码元用于定位和区别单个定位码图形。在其他优选实施例中,头部的码元还可以呈“ㄩ”形分布或“口”形分布。各种类型的分布中,相交的两条直线分别与上述两组交叉的平行线的方向相同即可。头部码元分布形式的设置,只要便于移动设备快速区分出头部码元即可,这里不做具体限定。
此外,数据区的码元包括若干个数据码元组,每个数据码元设置为与该数据码元组表示信息对应的预设形状。也即,每个数据码元可以是任意形状,优化的可以是一个圆点。且本实施例中,所有的数据区的数据元都分布在以网格中心为中心的附近的预设区域中,都不位于网格中心。这样便于区分头部及数据区,也便于数据区进行更多信息的编码和标识。预设区域可以被分为四个区域或根据需要的其它数目。
进一步地,上述的数据区包括若干个数据子区域,不同的数据子区域内的码元表示不同的信息。也即该数据元在不同细分区域中的表示不同的数值。
根据需要,可以在数据区添加校验码(例如CRC校验码)或进行容错编码(例如RS(reed-solomon)编码算法)。
为了确定数据元的读取顺序,需要对定位码头部进行定位。本实施例提供的编码规则中可以采用以下三种方法之一:
1.数据区及头部的点阵在两个方向的点数不一致,参考图2A所示,n>m,这里n为码元所在区域的行数,m为码元所在区域的列数,其中,头部的行数及列数均为1。
2.头部在两个方向上的点的行及列的数目不相等,参考图2B所示,n>m,这里m为头部所在区域的行数,n为头部所在区域的列数,这里,头部的行数为1,列数为2。
3.头部的网格在两个方向的间距不相等,参考图2C所示,W2>W1,这里W2为网格在方向2上的间距,W1为网格在方向1上的间距。
4.头部和数据区的微图形单元不同,参考图2D所示,头部码元由三角形图案构成,数据区的码元由圆形图案构成。
当然,上述的几种编码规则也可以根据需要组合使用。
同时,本实施例提供了隐形定位码的制作方法,具体如下:
隐形定位码的基本原理是利用不同的油墨对红外线的吸收能力不同,基本的原理是隐形码必须用对红外线吸收能力强的油墨打印或印刷,用其它的对红外线吸收能力弱的油墨打印或印刷正常内容。此处红外线吸收能力弱的油墨指的是不含碳的油墨。红外线吸收能力强的油墨指的是含碳的油墨。
这里采用隐形定位码的印刷方法如下:
四版印刷:CMYK——即青、洋红(品红)、黄、黑四种色彩,在印刷中通常可由这四种色彩再现其它成千上万种色彩。先用通用图文制作软件将图文制成三色(C、M、Y)电子文件,K版上印隐形定位码。
五版印刷:隐形码的制作方法:先用通用图文制作软件将图文制成三色(C、M、Y)电子文件,K版也由C+M+Y混合后的油墨印刷,也可采用不含碳的黑色油墨印刷。底码由含碳的黑色油墨印刷,用来印隐形定位码。
图文制作完成后,将黑版翻到最上面。然后将每个隐形定位码所在的具体位置(坐标)记录并存储下来。具体地,记录定位码头部的L形的两个顶点及拐点,再加上数据区距离头部拐点最远的那个点的坐标。上述坐标,假设每个定位码的尺寸是一样的,而且均匀紧密排列,这些点的位置可以通过定位码的编号计算出来。
在实际上,也可以采用对红外线吸收能力弱的油墨打印图案,将隐形定位码单独印刷或打印,再覆盖在图案上的方式,只要隐形定位码与背景图案对红外线吸收能力不同即可在红外光下显示出隐形定位码。此外,本实施例的隐形定位码,也可以用在非平面的场合,例如在垂直或倾斜的立面上粘贴或直接打印的隐形定位码。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
本实施例还提供了一种定位方法,采用上述的定位系统进行定位,包括以下步骤:
S1:识别装置采用红外光源照射可视区域;
S2:通过图像采集单元获取可视区域中隐形定位码的图像;
S3:处理器对采集的图像进行隐形定位码的识别并根据预存的隐形定位码位置进行定位。
本实施例中,红外光源照射前面的隐形定位码,在隐形定位码由对红外线吸收能力强的油墨制成时,黑版印刷的隐形定位码由于能够吸收红外线,因此颜色较深。摄像头能够拍摄到这些深颜色的点,在处理器中根据编码规则对图像进行识别处理后就得到隐形定位码表示的数值。在隐形定位码由对红外线吸收能力弱的油墨制成的情况下,隐形定位码由于吸收红外线能力较差,因此颜色较浅,则摄像头依然能够拍到这些相对背景来说较浅色的点,从而进一步进行识别及定位计算。
其中,由于图像采集单元拍摄到的图像是一系列的点阵。采用图像处理的方法可以提取其中的编码信息。具体地处理器对隐形定位码进行识别的方法包括以下步骤:
(1)采用直线检测算法检测出隐形定位码的图像中分布的直线,确定隐形定位码所在的网格的两个主要方向;
(2)根据分布于两个主要方向的网格的中心的图案,找到位于头部的码元;
(3)根据头部的码元找到对应的数据区的码元并进行定位码的读取。
在步骤(1)中,由于每个定位码上的码元的微图形都分布在若干近似平行的直线上。根据直线斜率的分布情况,就可以确定出隐形定位码的网格的两个主要方向。又由于头部的所有点都在一条直线上,可以根据此特征,可以分辨出编码头部。
找到位于头部的码元后还包括:根据预设的编码规则读取头部的码元。头部的设置方式可以根据上述的编码规则进行确定,进而根据上述的编码规则(两个方向的点阵个数不同,行数及列数不同,间距不同及头部与数据区码元形状不同)即可识别出不同的隐形定位码的头部。识别头部后,图像处理单元对定位码头部的分布进行分析,就可以确定数据区的起始位置。按照规定好的顺序进行数据区的数据读取即可。
优选地,本实施例每个隐形定位码的位置已经存储在系统中。在图像采集单元(也即摄像头)的可视范围获得的定位码图像。则上述步骤S3中根据隐形定位码进行定位的方法包括:处理器提取识别的隐形定位码中的任何三个码元图案不在同一直线上的四个码元,根据提取的四个码元与图像采集单元预先标定好的内部参数,计算得到隐形定位码相对图像采集单元的位姿关系,并将隐形定位码相对图像采集单元的位姿关系转换为隐形定位码与识别装置所在设备的位姿关系,进而完成定位。
参考图3所示,为本发明一应用例,本例中的机器人为一配置了识别装置的无人小车,该演示平台尺寸为200cm*200cm。每个隐形定位码的尺寸为1cm×1cm。需要(200/1)×(200/1)=40,000个不同的编码。假定每个数据码元区域被分为四个小区域,可以代表4个编码。则需要8个数据码元来表示这些定位码(48=65536>40000>47=16384)。
每个微图形/码元的尺寸为0.1mm,占5%长度比例,相当于300dpi的分辨率。假定图像采集单元中的图像传感器的像素为200×200,则单个隐形定位码的边长为70×70像素。这里采用对红外线吸收率低的油墨(C、M、Y,即青、洋红(品红)、黄,K版(黑色),但也可由C+M+Y混合后的油墨印刷)印刷需要展示的图案。根据需要,可以在数据区添加校验码(例如CRC校验码)或进行容错编码(RS(reed-solomon)编码算法)。
假定图像采集单元距离地面的距离为4cm。设视场范围为3cm×3cm,以保证在视场内至少有一个完整的隐形定位码。根据这个参数选择图像采集单元中的光学器件的参数。
设置隐形定位码时,记录下每个隐形定位码的位置,具体地,记录定位码头部的L形的两个顶点及拐点,再加上数据区距离头部拐点最远的那个点的坐标。
无人小车在行驶时,拍摄隐形定位码,根据隐形定位码的数据确定当前的位置。然后根据拍摄到的图像中四个特征点的位置,计算出无人小车的姿态。参考图4所示,该定位过程具体包括:红外光源照射可见区域,同时拍摄;获得隐形定位码的图像;检测出图像中的直线;根据检测到的直线参数,根据斜率找出两个主要方向,根据编码头部所有码元(也即微图像单元)都在一条直线上的特征,找出定位码头部;根据定位码头部的非对称性特征,找到数据区的起始位,读取数据。根据存储的隐形定位码的坐标,计算无人小车的当前位置。
参考图5所示(图5中的虚线框内表示摄像头拍摄到一幅图像),本实施例提供的定位系统进行定位的原理为:首先,识别全部图案中的一个隐形定位码,然后计算图像中心与隐形定位码在两组平行线方向上的位置偏移分别为Δx、Δy,以及计算图像中心与隐形定位码间的角度偏移θ。则根据Δx、Δy及θ及识别装置的安装位置、图像采集单元(摄像头)的内参数等即可确定图像采集单元在平面内的位置和朝向。当设备只做平面内的运动时,图像上的像素的位置偏移和设备的位置偏移之间可以简化为一个比例的关系。
图5所示的是平面的情况。如果三维空间的位置和姿态发生变化,均可以采用PnP算法,根据给定的四个点计算出摄像头的空间位置和姿态。其中,求取摄像机(图像采集单元)外参数的问题,其实就是经典的PnP问题。Horaud在1989年给出了位姿估计的PnP问题的定义:“在目标坐标系中,给定一系列点的坐标以及其在图像平面上的投影,并假定摄像机内部参数已知,求取目标坐标系与摄像机坐标系之间的变换矩阵,即包含3个旋转参数和3个平移参数的摄像机外参数矩阵。对于PnP问题已经有以下结论:P3P问题最多有四个解,且解的上限可以达到。对于P4P问题,当四个控制点共面时,问题有唯一解,因此,根据定位码中的四个点就可以计算出摄像头的空间位置和姿态。
本发明提供的方法及系统提供了在一定场景下(例如实验平台、舞台等),隐形的(基本不影响原有文字图案的阅读和理解)的定位方法,该方法对于图像处理单元、识别算法计算量要求低,并且不影响美观程度。一个典型的场景是机器人的表演,机器人(可以是人形机器人、智能小车、无人机等)在实验或展示平台上,确定机器人自身的位置,或者沿着一个给定的轨迹行走、行驶或飞行。其中,隐形定位码可以铺满整个移动区域,在任意位置,在图像处理单元的视场内至少能看到一个完整的隐形码,同时并不影响整个空间内其他图案的正常使用,且定位精度高,定位速度快。
本发明提供的方法也可以与其它方法结合使用,例如,将定位码稀疏布置,借用基于惯性导航器件或可移动设备的运动模型及控制参数(电机的转数、轮子的直径等)和传感器的数据(例如电机的码盘)的航位推算法在没有拍摄到定位码时定位,一旦拍摄到定位码,则采用定位码定位,以消除航位推算法的累积误差。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何本领域的技术人员在本发明揭露的技术范围内,对本发明所做的变形或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述的权利要求的保护范围为准。