提供平面布置图的方法、系统与流程

文档序号:18271484发布日期:2019-07-27 09:43阅读:203来源:国知局
提供平面布置图的方法、系统与流程

本公开一般涉及机器人清洁器,具体地涉及生成地面地图。



背景技术:

清洁机器人通常包括用于各种目的的相机。相机可以对要清洁的区域摄像,以显示该区域中的物体。可以利用slam(同时定位和映射)算法将收集的图像数据用于创建地图。可以利用vslam(使用图像传感器的可视slam)定位方法对图像数据进行处理。相机可以对天花板摄像并使用所拍摄的图像进行导航。可以通过将这些图像拼接到一起来创建地图。irobot的公开号为20170052033的专利申请描述了这种视觉slam方法。carnegiemellon的专利号为5,999,866的专利描述了利用图像的独特性、例如地毯图案来确定位置。irobot的公开号为20170203446的专利申请示出了物体的平面布置图和相机拍摄图,并且提供了物体在平面布置图上的标示,以及到图片的链接。irobot的专利号为9,014,848的专利描述了校正与机器人生成的地图相比的目标布局图中的失真。

对清洁机器人地图和平面布置图进行优化以供机器人用于确定位置和采取其他行动,而不是供人类使用。期望具有供人类用户交互以控制清洁机器人的优化地图。



技术实现要素:

在一个实施方案中,机器人(例如,清洁机器人)通过从机器人相机视图转换并将由位置标记的图像拼接在一起来产生鸟瞰(平面)地图。然后该平面地图可以在用户界面上呈现为显示物体(例如地毯)位置的平面布置图。相机安装在清洁机器人中,在清洁机器人壳体中足够高以提供朝向地面的视角。相机的视野被捕捉为图像,并且该图像的一部分或片段被裁剪或遮盖。将裁剪的片段的相机透视图转换为平面视图(在裁剪之前或在裁剪之后),并与其他图像组合,形成平面布置图的地图。

在一个实施方案中,在相机前使用镜头(例如,鱼眼镜头)。在从机器人透视图转换到平面视图之前(或之后),应用失真算法来校正由于镜头引起的图像失真。从机器人透视图到平面视图的转换利用相机离开地面的已知出厂高度和相机的已知向下角度以将图像像素位置与平面地面位置相关联。相对于机器人的位置被用作机器人局部位置的偏移。机器人的任何倾斜被检测并用于校正图像像素位置或用于简单地丢弃图像。

在一个实施方案中,在智能手机或其他显示设备上向用户显示平面布置图。用户提供平面布置图上的输入以修改机器人的操作特性。例如,用户可以指示机器人不应该去的区域,需要更强烈清洁的区域等。

在一个实施方案中,捕捉区域片段,该区域为针对与要生成的平面布置图的最小分辨率相同大小的区域或比要生成的平面布置图的最小分辨率大的区域。例如,几毫米的区域可以对应于智能手机上显示的平面布置图上的单个像素,因此更精细的分辨率将浪费处理能力。类似地,仅具有这种所需分辨率的较便宜的相机可以用于本发明的目的。捕捉重叠段以通过匹配重叠部分来进行对准调整。可以在相机的视野中的不同距离处或者从同一区域的不同通道多次捕捉同一片段区域。可以对图像质量进行加权,使用较高质量的图像替换较低质量的图像。加权因子包括,例如,摄像时机器人的速度、振动、角度(倾斜)、与其他片段的重叠部分的一致性、片段与相机的接近度以及照明。

在一个实施方案中,确定图像的照度并校正不同片段的照度差异。照度可能由于环境中的灯光差异或者由于相机视野中的灯光与清洁机器人上的灯的强度差异而变化。

附图说明

图1是根据实施方案的具有lidar转台的清洁机器人的图。

图2是根据实施方案的清洁机器人和充电站的图。

图3是根据实施方案的清洁机器人的底侧的图。

图4是根据实施方案的用于清洁机器人的智能手机控制应用显示的图。

图5是根据实施方案的用于清洁机器人的智能手表控制应用显示的图。

图6是根据实施方案的用于清洁机器人的电子系统的图。

图7是可用于实现本发明的某些实施方案的代表性计算系统和客户端计算系统的简化框图。

图8是根据实施方案的嵌入清洁机器人壳体中的相机的示图。

图9是根据实施方案的具有相机的清洁机器人的图,示出了计算出的相机图像中的点的平面位置。

图10是根据实施方案的机器人的相机拍摄的图像的图,该图像由于鱼眼镜头而失真。

图11是根据实施方案的机器人的相机拍摄的图像的图,该图像被转换以校正由鱼眼镜头引起的失真。

图12是根据实施方案的机器人的相机所拍摄的图像的示图,示出了剪裁地面的一部分。

图13是根据实施方案的机器人的相机所拍摄的图像的图,该图被转换为平面形式并且示出了图像的捕捉片段。

图14是根据实施方案的用户设备显示的图,该用户设备显示示出了拼接在一起的用于形成具有物体的平面图的片段。

图15是根据实施方案的用户设备显示的图,该用户设备显示示出了拼接在一起的用于形成平面图的片段,其中用户在该显示上标记有禁区部分。

图16是根据实施方案的用于生成平面视角平面布置图的过程的流程图。

具体实施方式

整体架构

图1是根据实施方案的具有lidar转台的清洁机器人的图。清洁机器人102具有发射旋转激光束106的lidar(光检测和测距)转台104。通过检测物体对激光束的反射,来计算清洁机器人到物体的距离以及清洁机器人的位置。距离计算的一个实施方案在美国专利no.8,996,172,“距离传感器系统和方法”中阐明,其公开内容通过引用并入本文中。或者,可以使用vslam(使用图像传感器的可视slam)或其他定位方法。通过利用slam(同时定位和映射)算法、使用所收集的数据来创建地图。slam算法的一个实施方案描述于专利号为8,903,589的美国专利,“用于移动机器人环境的同时定位和映射的方法和装置”,其公开内容通过引用并入本文中。

图2是根据实施方案的清洁机器人和充电站的图。示出了具有转台104的清洁机器人102。还示出了盖子204,盖子204可以打开以接近集尘袋和刷子的顶侧。按钮202允许机器人清洁器的基本操作,例如开始清洁操作。显示器205向用户提供信息。清洁机器人102可以与充电站206对接,并通过充电触点208接收电力。

图3是根据实施方案的清洁机器人的底面的图。轮子302移动清洁机器人,刷子304帮助将浮尘吸纳到集尘袋中。

图4是根据实施方案的用于清洁机器人的智能手机控制应用显示的图。智能手机402具有下载的用于控制清洁机器人的应用。易于使用的界面具有用于启动清洁的开始按钮404。

图5是根据实施方案的用于清洁机器人的智能手表控制应用显示的图。显示了示例性显示。显示502提供易于使用的开始按钮。显示504提供控制多个清洁机器人的能力。显示506向用户提供反馈,例如清洁机器人已完成的消息。

图6是根据实施方案的用于清洁机器人的电子系统的系统结构图。清洁机器人602包括处理器604,处理器604操作下载到存储器606的程序。处理器使用总线634或其他电连接与其他组件通信。在清洁模式中,轮电机608独立地控制轮子以移动和控制机器人。刷子和真空电机610清洁地面,并且可以以不同的模式操作,例如较高功率密集清洁模式或正常功率模式。

lidar模块616包括激光器620和光电探测器618。或者,可以使用图像传感器以进行vslam操作。转台电机622移动激光器和光电探测器以在清洁机器人周围360度检测物体。转台电机622每秒旋转多次,例如每秒旋转约5次。各种传感器向处理器604提供输入,例如指示与物体接触的撞击传感器624、指示与物体的接近度的近距离传感器626以及指示清洁机器人的下降(例如,下楼梯)或倾斜(例如,在爬过障碍物时)的加速度计和倾斜传感器628。使用这种用于清洁机器人的导航和其他控制的传感器的示例在美国专利no.8,855,914,“用机器人表面处理设备穿过地面区域的角落的方法和设备”中有所描述,其公开内容通过引用并入本文。其他传感器可以包括在其他实施方案中,例如用于检测被真空抽起的尘土量的尘土传感器、用于检测电机何时过载(例如由于被缠绕在某物中)的电机电流传感器、用于检测地面类型的地面传感器以及用于提供环境和物体的图像的图像传感器(相机)。

电池614通过电源连接(未示出)向电子设备的其余部分供电。当清洁机器人与图2的充电站206对接时,电池充电电路612向电池614提供充电电流。输入按钮623允许结合显示630直接控制机器人清洁器602。或者,清洁机器人602可以被远程控制并通过收发器632将数据发送到远程位置。

相机642或多个相机连接到总线634。镜头644放置在相机前面。可以提供灯646以照亮相机的视野。图像可以存储在存储器606中,和/或通过无线或有线连接和因特网上传到云。

通过因特网636和/或其他网络,清洁机器人可以被控制,并且可以将信息发送回远程用户。远程服务器638可以提供命令,并且可以处理从清洁机器人上传的数据。手持控制器(例如,智能手机或手表)640可以由用户操作以直接向清洁机器人602发送命令(通过蓝牙、直接rf、wifilan等)或者可以通过连接到因特网636发送命令。命令可以被发送到服务器638以进行进一步处理,然后通过因特网636以修改的形式转发到清洁机器人602。

用于媒体平台和客户端系统的计算机系统

本文描述的各种操作可以在计算机系统上实现。图7示出了可用于实现本发明的某些实施方案的代表性计算系统702和客户端计算系统704的简化框图。在各种实施方案中,计算系统702或类似系统可以实现清洁机器人处理器系统、远程服务器或本文描述的任何其他计算系统或其部分。客户端计算系统704或类似系统可以实现诸如具有机器人清洁器应用的智能手机或手表的用户设备。

计算系统702可以是各种类型设备的一种,各种类型设备包括处理器和存储器、手持便携式设备(例如,移动电话、计算平板电脑、pda)、可穿戴设备(例如,google头戴式显示器)、个人计算机、工作站、主机、自助服务终端、服务器机架或任何其他数据处理系统。

计算系统702可以包括处理子系统710。处理子系统710可以经由总线子系统770与多个外围系统通信。这些外围系统可以包括i/o子系统730、存储子系统768和通信子系统740。

总线子系统770提供用于使服务器计算系统704的各种组件和子系统按预期彼此通信的机制。尽管总线子系统770示意性地示为单个总线,但总线子系统的替代实施方案可以使用多个总线。总线子系统770可以形成支持处理子系统710和服务器计算系统702的其他组件的通信的局域网。总线子系统770可以使用包括服务器机架、集线器、路由器等的各种技术来实现。总线子系统770可以是几种类型的总线结构的任何一种,这几种类型的总线结构包括存储器总线或存储器控制器、外围总线和使用各种总线架构中的任何一种的本地总线。例如,这种架构可以包括工业标准体系结构(isa)总线、微通道架构(mca)总线,增强型isa(eisa)总线、视频电子标准协会(vesa)本地总线和外围部件互连(pci)总线,其可以实现为根据ieeep1386.1标准制造的夹层总线等。

i/o子系统730可以包括用于向计算系统702输入信息和/或用于从计算系统702或通过计算系统702输出信息的设备和机制。通常,术语“输入设备”的使用旨在包括用于向计算系统702输入信息的所有可能类型的设备以及机制。用户界面输入设备可以包括,例如,键盘、诸如鼠标或轨迹球的指向设备、结合到显示器中的触摸板或触摸屏、滚轮、点击轮、转盘、按钮、开关、键盘、带语音命令识别系统的音频输入设备、麦克风和其他类型的输入设备。用户界面输入设备还可以包括运动感测和/或姿势识别设备,诸如使得用户能够控制输入设备并与之交互的microsoft运动传感器,microsoft游戏控制器,提供用于使用手势和口头命令接收输入的接口的设备。用户界面输入设备还可以包括眼睛姿势识别设备,诸如google眨眼检测器,其检测来自用户的眼睛活动(例如,在拍照和/或进行菜单选择时“眨眼”)并且将眼睛姿势转换为输入到输入设备(例如,google)的输入。另外,用户界面输入设备可以包括语音识别传感设备,其使得用户能够通过语音命令与语音识别系统(例如,导航器)交互。

用户界面输入设备的其他示例包括但不限于三维(3d)鼠标,操纵杆或指向杆,游戏手柄和图形平板,以及音频/视觉设备,诸如扬声器、数码相机、数字便携式相机、便携式媒体播放器、网络摄像头、图像扫描仪、指纹扫描仪、条形码阅读器3d扫描仪、3d打印机、激光测距仪和眼睛注视跟踪设备。另外,用户界面输入设备可以包括例如医学成像输入设备,诸如计算机断层扫描、磁共振成像、位置发射断层扫描、医学超声波设备。用户界面输入设备还可以包括例如音频输入设备,例如midi键盘,数字乐器等。

用户界面输出设备可以包括显示子系统,指示灯或非可视显示,诸如音频输出设备等。显示子系统可以是阴极射线管(crt),平板设备,例如使用液晶显示器(lcd)或等离子显示器的设备,投影设备,触摸屏等。通常,术语“输出设备”的使用旨在包括用于将信息从计算系统702输出到用户或其他计算机的所有可能类型的设备和机制。例如,用户界面输出设备可以包括但不限于可视地传达文本、图形和音频/视频信息的各种显示设备,例如监视器、打印机、扬声器、耳机、汽车导航系统、绘图仪、语音输出设备、以及调制解调器。

处理子系统710控制计算系统702的操作,并且可以包括一个或多个处理单元712,714等。处理单元可以包括一个或多个处理器,包括单核处理器或多核处理器,一个或多个核的处理器或其组合。在一些实施方案中,处理子系统710可以包括一个或多个专用协处理器,例如图形处理器、数字信号处理器(dsp)等。在一些实施方案中,处理子系统710的一些处理单元或所有处理单元可以使用定制电路例如专用集成电路(asic)或现场可编程门阵列(fpga)来实现。在一些实施方案中,这种集成电路执行存储在电路自身上的指令。在其他实施方案中,处理单元可以执行存储在本地存储器(例如,本地存储器722,724)中的指令。任何组合中的任何类型的处理器可以包括在处理单元712,714中。

在一些实施方案中,处理子系统710可以以模块化设计被实现,该模块化设计包含任意数量的模块(例如,刀片服务器实现中的刀片)。每个模块可以包括处理单元和本地存储器。例如,处理子系统710可以包括处理单元712和对应的本地存储器722,以及处理单元714和对应的本地存储器724。

本地存储器722,724可以包括易失性存储介质(例如,常规dram、sram、sdram等)和/或非易失性存储介质(例如,磁盘或光盘、闪存等)。结合在本地存储器722,724中的存储介质可以根据需要固定、移除或升级。本地存储器722,724可以在物理上或逻辑上被划分为各种子单元,例如系统内存、rom和永久存储设备。系统内存可以是读写存储器设备或易失性读写存储器,例如动态随机存取存储器。系统内存可以存储处理单元712,714运行时需要的一些指令和数据或全部指令和数据。rom可以存储处理单元712,714所需的静态数据和指令。永久存储设备可以是即使在包括一个或多个处理单元712,714和本地存储器722,724的模块断电时也可以存储指令和数据的非易失性读写存储器设备。这里使用的术语“存储介质”包括可以无限期地存储数据(受到重写、电干扰、功率损耗等)的任何介质,并且不包括无线传播或通过有线连接传播的载波和瞬时电子信号。

在一些实施方案中,本地存储器722,724可以存储要由处理单元712,714执行的一个或多个软件程序,例如实现各种服务器功能的操作系统和/或程序,所述服务器功能例如有upp系统102或者与upp系统102相关联的任何其他服务器的功能。“软件”通常指的是当由处理单元712,714执行时使计算系统702(或其部分)执行各种操作的指令序列,因此定义实行和执行软件程序操作的一个或多个特定机器实现方式。指令可以存储为驻留在只读存储器中的固件和/或存储在非易失性存储介质中的程序代码,该程序代码可以被读入易失性工作存储器以供处理单元712,714执行。在一些实施方案中,指令可以由存储子系统768(例如,计算机可读存储介质)存储。在各种实施方案中,处理单元可以执行各种程序或代码指令,并且可以维护多个同时执行的程序或过程。在任何给定时间,要执行的一些程序代码或所有程序代码可以驻留在本地存储器722,724和/或可能包括一个或多个存储设备的存储子系统中。软件可以实现为单个程序或者根据需要进行交互的单独程序或程序模块的集合。处理单元712,714可以从本地存储器722,724(或下面描述的非本地存储器)检索要执行的程序指令和要处理的数据,以便执行上述各种操作。

存储子系统768提供用于存储由计算系统702使用的信息的存储库或数据存储器。存储子系统768提供有形的非暂时性计算机可读存储介质,用于存储提供一些实施方案的功能的基本编程和数据构造。当由处理子系统710执行时提供上述功能的软件(程序、代码模块、指令)可以存储在存储子系统768中。该软件可以由处理子系统710的一个或多个处理单元执行。存储子系统768也可以提供用于存储根据本发明使用的数据的存储库。

存储子系统768可以包括一个或多个非暂时性存储器设备,包括易失性和非易失性存储器设备。如图7所示,存储子系统768包括系统内存760和计算机可读存储介质752。系统内存760可以包括多个存储器,包括用于在程序执行期间存储指令和数据的易失性主ram以及存储固定指令的非易失性rom或闪存。在一些实现方式中,包含有助于例如在启动期间在计算系统702内的元件之间传送信息的基本例程的基本输入/输出系统(bios),通常可以存储在rom中。ram通常包含当前由处理子系统710操作和执行的数据和/或程序模块。在一些实现方式中,系统内存760可以包括多种不同类型的存储器,例如静态随机存取存储器(sram)或动态随机访问存储器(dram)。存储子系统768可以基于磁、光、半导体或其他数据存储介质。可以使用直接附加存储、存储区域网络、网络附加存储等。本文描述的由服务或服务器生成、消费或维护的任何数据存储或其他数据集合可以存储在存储子系统768中。

作为示例而非限制,如图7所示,系统内存760可以存储应用程序762、程序数据764、以及一个或多个操作系统766,应用程序762可以包括客户端应用程序、web浏览器、中间层应用程序、关系数据库管理系统(rdbms)等。例如,示例性操作系统可以包括各种版本的和/或linux操作系统,各种商用或unix类操作系统(包括但不限于各种gnu/linux操作系统、操作系统等)和/或移动操作系统,如ios、phone、os、10os和os操作系统。

计算机可读存储介质752可以存储提供一些实施方案的功能的编程和数据构造。在被处理子系统710的处理器执行时提供上述功能的的软件(程序、代码模块、指令)可以存储在存储子系统768中。作为示例,计算机可读存储介质752可以包括非易失性存储器,例如硬盘驱动器,磁盘驱动器,诸如cdrom、dvd、盘或其他光学介质的光盘驱动器。计算机可读存储介质752可以包括但不限于驱动器、闪存卡、通用串行总线(usb)闪存驱动器、安全数字(sd)卡、dvd盘、数字录像带等。计算机可读存储介质752还可以包括基于非易失性存储器的固态驱动器(ssd),例如基于闪存的ssd、企业闪存驱动器、基于固态rom的驱动器等;基于例如固态ram、动态ram、静态ram的易失性存储器的ssd;基于dram的ssd、磁阻ram(mram)ssd以及使用基于dram和基于闪存的ssd组合的混合ssd。计算机可读介质752可以为计算系统702提供计算机可读指令、数据结构、程序模块和其他数据的存储。

在某些实施方案中,存储子系统768还可以包括计算机可读存储介质读取器750,其可以进一步连接到计算机可读存储介质752。计算机可读存储介质752与系统内存760组合,可以共同方式或者二择一方式来全面地表示远程、本地、固定和/或可移动存储设备以及用于存储计算机可读信息的存储介质。

在某些实施方案中,计算系统702可以提供对执行一个或多个虚拟机的支持。计算系统702可以执行诸如便于配置和管理虚拟机的管理程序(hypervisor)之类的程序。可以为每个虚拟机分配存储器、计算(例如,处理器、核)资源,i/o资源和网络资源。每个虚拟机通常运行其自己的操作系统,该操作系统可以与由计算系统702执行的其他虚拟机执行的操作系统相同或不同。因此,多个操作系统可能潜在地由计算系统702并行运行。每个虚拟机通常独立于其他虚拟机运行。

通信子系统740提供到其他计算机系统和网络的接口。通信子系统740用作从计算系统702接收数据的接口和将数据从计算系统702发送到其他系统的接口。例如,通信子系统740可以使计算系统702能够经由因特网建立到一个或多个客户端计算设备的通信信道以用于从客户端计算设备接收信息和向客户端计算设备发送信息。

通信子系统740可以支持有线和/或无线通信协议。例如,在某些实施方案中,通信子系统740可以包括用于访问无线语音和/或数据网络的射频(rf)收发器组件(例如,使用蜂窝电话技术;高级数据网络技术,例如3g、4g或edge(增强的全球演进数据速率)、wifi(ieee802.11系列标准或其他移动通信技术或其任何组合)、全球定位系统(gps)接收器组件和/或其他组件。在一些实施方案中,除了无线接口之外或代替无线接口,通信子系统740可提供有线网络连接(例如,以太网)。

通信子系统740可以以各种形式接收和发送数据。例如,在一些实施方案中,通信子系统740可以接收结构化和/或非结构化数据馈送、事件流、事件更新等形式的输入通信。例如,通信子系统740可以被配置为从社交媒体网络的用户、和/或诸如馈送、更新、诸如richsitesummary(rss)馈送的web馈送的其他通信服务、和/或来自一个或多个第三方信息源的实时更新实时接收(或发送)数据馈送。

在某些实施方案中,通信子系统740可以被配置为接收连续数据流形式的数据,连续数据流可以包括实时事件的事件流和/或事件更新,其本质上可以是连续的或无界的,没有明确的结束。生成连续数据的应用的示例可以包括例如传感器数据应用、金融代码、网络性能测量工具(例如,网络监控和流量管理应用)、点击流分析工具、汽车交通监控等。

通信子系统740还可以被配置为将结构化和/或非结构化数据馈送、事件流、事件更新等输出到可以与耦合到计算系统702的一个或多个流数据源计算机通信的一个或多个数据库。

通信子系统740可以提供通信接口742,例如wan接口,该wan接口可以提供局域网(总线子系统770)和更大的网络(例如因特网)之间的数据通信能力。可以使用常规通信技术或其他通信技术,包括有线(例如,以太网、ieee802.3标准)和/或无线技术(例如,wifi、ieee802.11标准)。

计算系统702可以响应于经由通信接口742接收的请求而操作。此外,在一些实施方案中,通信接口742可以将计算系统702彼此连接,从而提供能够管理大量活动的可扩展性系统。可以使用用于管理服务器系统和服务器群的常规技术或其他技术(协作的服务器系统的集合),包括动态资源分配和重新分配。

计算系统702可以经由诸如因特网的广域网与各种用户拥有设备或用户操作设备交互。用户操作设备的示例在图7中示出为客户端计算系统704。客户端计算系统704可以被实现为例如消费者设备,诸如智能电话、其他移动电话、平板电脑、可穿戴计算设备(例如,智能手表、眼镜)、台式计算机、笔记本电脑等等。

例如,客户端计算系统704可以经由通信接口742与计算系统702通信。客户端计算系统704可以包括常规计算机组件,诸如处理单元782、存储设备784、网络接口780、用户输入设备786、以及用户输出设备788。客户端计算系统704可以是以各种形式因子实现的计算设备,诸如台式计算机、膝上型计算机、平板计算机、智能电话、其他移动计算设备、可穿戴计算设备等。

处理单元782和存储设备784可以类似于上述处理单元712,714和本地存储器722,724。可以基于要置于客户端计算系统704上的需求来选择合适的设备;例如,客户端计算系统704可以实现为具有有限处理能力的“瘦”客户端或者实现为高功率计算设备。客户端计算系统704可以配置有可由处理单元782执行的程序代码,以实现与消息管理服务的计算系统702的各种交互(诸如访问消息、对消息执行动作)、以及上述其他交互。一些客户端计算系统704还可以独立于消息管理服务与消息传递服务交互。

网络接口780可以提供到广域网(例如,因特网)的连接,计算系统702的通信接口740也连接到该广域网。在各种实施方案中,网络接口780可以包括有线接口(例如,以太网)和/或实现各种rf数据通信标准的无线接口,诸如wifi、蓝牙或蜂窝数据网络标准(例如,3g,4g,lte等等)。

用户输入设备786可以包括用户可以通过其向客户端计算系统704提供信号的任何设备(或多个设备);客户端计算系统704可以将信号解释为特定用户请求或信息的指示。在各种实施方案中,用户输入设备786可以包括键盘、触摸板、触摸屏、鼠标或其他指向设备、滚轮、点击轮、拨号盘、按钮、开关、小键盘、麦克风等中的任何一个或全部。

用户输出设备788可以包括客户端计算系统704可以通过其向用户提供信息的任何设备。例如,用户输出设备788可以包括用于显示由客户端计算系统704生成或传送到客户端计算系统704的图像的显示。该显示可以包含与支持电子器件(例如,数字-模拟转换器或模拟-数字转换器、信号处理器等)一起的各种图像生成技术,例如液晶显示器(lcd)、包括有机发光二极管(oled)的发光二极管(led)、投影系统、阴极射线管(crt)等。一些实施方案可以包括诸如用作输入和输出设备的触摸屏的设备。在一些实施方案中,除了显示器之外或代替显示器,可以提供其他用户输出设备788。示例包括指示灯、扬声器,触觉“显示”设备、打印机等。

一些实施方案包括电子组件,诸如微处理器、将计算机程序指令存储在计算机可读存储介质中的存储器和内存。本说明书中描述的许多特征可以实现为被指定为在计算机可读存储介质上编码的一组程序指令的过程。当这些程序指令由一个或多个处理单元执行时,它们使处理单元执行程序指令中指示的各种操作。程序指令或计算机代码的示例包括诸如由编译器产生的机器代码,以及包括由计算机、电子组件或使用解释器的微处理器执行的较高级代码的文件。通过适当的编程,处理单元712、处理单元714和处理单元782可以为计算系统702和客户端计算系统704提供各种功能,包括本文描述的由服务器或客户端执行的任何功能,或者与消息管理服务相关联的其他功能。

应当理解,计算系统702和客户端计算系统704是说明性的,变化和修改是可能的。结合本发明的实施方案使用的计算机系统可具有本文未具体描述的其他能力。此外,虽然参考特定区块描述了计算系统702和客户端计算系统704,但是应该理解,这些区块是为了便于描述而定义的,并不意味着暗示组件部分的特定物理布置。例如,不同的区块可以但不必位于相同的设施中,位于相同的服务器机架中,或者位于同一主板上。此外,区块不需要对应于物理上不同的组件。区块可以被配置为例如,通过编程处理器或提供适当的控制电路执行各种操作,并且取决于如何获得初始配置,各种区块可以是可重新配置的或不可重新配置的。可以在各种设备,包括使用电路和软件的任何组合实现的电子设备中实现本发明的实施方案。

感光镶嵌幕地面映射

图8是根据实施方案的嵌入清洁机器人壳体中的相机的图。一个实施方案在清洁机器人的前壳802中使用单个相机804。另一个实施方案增加了第二相机806。如图所示,两个相机安装在前壳802的凹槽812中。相机804,806安装成略微向下指向地面810。在一个实施方案中,灯808是安装在相机之间以为相机的视野提供照明。

图9是根据实施方案的具有相机的清洁机器人的图,该图示出了计算出的相机图像中的点的平面位置。清洁机器人902具有安装在前部的相机904。相机具有视野,由向上线916和向下线918之间的区域示出。相机安装在离地面或其他支撑表面908已知距离906处。对于相机视野中的图像中的任何特定像素,平面位置可以由位置和相机高度906计算出。例如,点912在由线914接触相机所示的像素位置处被相机观察到。然后,图像中的该像素可以与对应于中心距离910(从相机到地面908上的点912)的位置相关联。

机器人902的位置从lidar模块920获知。因此,获知lidar模块920中的检测器与相机904之间的偏移距离,确定偏移。因此,点912的位置是lidar确定的机器人清洁器902的坐标加上偏移加上中心距离910。注意,可替代地,可以使用其他位置机构,例如vslam、室内gps,车轮里程表或任何组合。位置计算将相应地修改。例如,对于vslam,偏移将是相机904和vslam相机之间的距离。如果相同的相机904用于两种功能,则可以消除偏移。

替代方法还可用于确定相机图像中的像素的平面位置。例如,可以在图像中检测诸如墙壁或家用电器之类的物体,并且可以通过机器人清洁器上的撞击传感器的先前接触来获知该位置。从该获知位置和机器人清洁器的已知位置,可以计算图像中像素的位置。

机器人的任何倾斜被检测到并用于校正图像像素位置或简单地丢弃图像。可以通过倾斜传感器、加速度计或图像数据的分析来检测倾斜。例如,图像中已知点的垂直移动,比机器人的平移运动更多,可以用作倾斜的指示。

为了提供足够的视野,鱼眼或其他镜头可以放置在相机的前面,例如图6所示的镜头644。在一个实施方案中,提供100和180度之间例如160度的视野。或者,可以使用两个相机,如图8所示,消除了镜头的需要,或减少了来自镜头的所需视野增加量。在一个实施方案中,相机位于离地面几厘米例如5至20厘米,或约7厘米处。相机视野可以开始于机器人前面几厘米处,机器人前面5至25厘米,在一个实施方案中可以在机器人前面10厘米。相机拍摄的视野大于最终平面的平面布置图的最小分辨率,并且可以是4×4mm至40×60cm的区域。在一个实施方案中,视野包括在相机视野方向上20cm以及垂直于相机视野的方向上30cm的矩形区域。可以裁剪拍摄的图像,并且裁剪的图像包括用于构成地图的一个或多个图块或片段。在一个实施方案中,片段或图块为约4×4cm。或者,片段可以是4×4mm至40×60cm的任何地方。

在一个实施方案中,相机具有hd范围的低端的分辨率。由于图像将用于填充智能手机上可查看的平面布置图,因此不需要较高的分辨率,从而节省了成本和处理。例如,720phd相机(1280×720像素)就足够了。

每秒的帧数也不需要很高,并且可以与位置的准确性相匹配。例如,如果使用拍摄5帧/秒的lidar系统,则相机的5帧/秒的帧速率就足够了。在一个实施方案中,图像拍摄的时序可以与位置确定的时序同步,以确保图像对应于精确位置。

图10是根据实施方案的机器人的相机所拍摄的图像的图,该图像由于鱼眼镜头而失真。可以看出,视野包括地面1002和墙壁1004,具有明显的失真。

图11是根据实施方案的机器人的相机所拍摄的图像的图,该图像进行了变换以校正由于鱼眼镜头引起的失真。已经校正了地面1102的图像,墙壁1104也是如此。在一个实施方案中,使用opencv(计算机视觉)扭曲程序校正失真。

图12是根据实施方案的机器人的相机所拍摄的图像的图,该图中示出了将地面裁剪出一部分。从地面区域1204中裁剪出区域1202以用于处理。可以在裁剪之前或裁剪之后进行去翘曲。然后可以将裁剪的图像转换为平面地图坐标。

图13是根据实施方案的机器人的相机所拍摄的图像的图,该图像被转换为平面形式并且示出了图像的拍摄片段。可以看出,转换后的图像是楔石形1304,其形状随着从倾斜视图(angledview)被映射到平面表面而改变。然后片段/图块1302被捕捉以提供可以与其他片段/图块拼接在一起的图像,产生平面的平面布置图。在一个实施方案中,从每个相机图像中提取系列片段/图块。例如,可以捕捉一行片段/图块1302。这些片段可以重叠以进行拼接,拼接在一起的过程中,可以移动子片段直到重叠部分匹配,由此来进行任何所需的微小调整,以将这些片段对准。在机器人清洁器已经推进到使得图像中的某一行将是平面表面上的下一行并且在前进方向上与该某一行重叠之后,可以从后续图像中获取第二行。

可以使用各种其他实施方案。可以从单个图像捕捉片段网格,并且可以获得来自后续图像的系列重叠片段。在一个实施方案中,捕捉的主要行片段距离相机足够远以使位置计算非常准确,但不能太远以使图像清晰度良好。在使用多个相机的情况下,它们的视野重叠,并且重叠被结合到片段的对准中。多个相机也可以提供冗余,在一个相机的镜头变脏或者图像模糊的情况下,另一个相机的重叠图像或后续图像可以以较高的质量被加权并被代替使用。

无论图像是来自相同的相机还是多个相机,图像质量都可以被加权,较高质量的图像取代较低质量的图像。加权因子包括,例如,拍摄图像时机器人的速度、振动、角度(倾斜)、与其他片段的重叠部分的一致性、片段与相机的接近度以及照明。以较慢的机器人速度拍摄的图像可以具有比以较快的速度拍摄的图像高的权重。靠近机器人拍摄的图像可以具有比远离机器人拍摄的图像高的权重。在倾斜或振动事件期间拍摄的图像可以具有比没有这种倾斜或振动的情况下或者在较小的倾斜或振动的情况下拍摄的图像低的权重。在较高照度下拍摄的图像可以被加权得更高、直到照明过度而降低图像质量的水平。

图14是根据实施方案的用户设备显示的图,该用户设备显示示出了拼接在一起的用于形成具有物体的平面图的片段。显示1406示出了由清洁机器人映射的平面布置图的平面地图1402。该地图显示了两个地毯,地毯1404和地毯1408。地图足够详细以显示地毯的毛边,因此提醒用户地毯具有毛边。

在一个实施方案中,首先使用位置数据创建平面布置图的直线网格。然后使用来自相机的图像填充网格中的各种矩形。与图像相关联的位置标签用于指示图像的适当网格位置。使用重叠区域进行调整。然后移除图像片段之一的重叠部分。

图15是根据实施方案的用户设备显示的图,该用户设备显示示出了拼接在一起的用于形成平面图的片段,用户在该平面图的显示上标记有禁区部分。平面布置图1402示出了如图14所示的地毯1404和地毯1408。用户已经与显示交互以在地毯1404的毛边周围绘制禁区1502和禁区1504,因此机器人清洁器不会使其刷子钩住毛边。禁区1506和禁区1508在地毯1408上被指示。代替指示禁区,机器人清洁器的其他修改可以被指示。例如,吸尘机器人可以在这些区域上继续,但是刷子可以被关闭以避免缠结。该图只是可以检测到的物体的示例。许多其他物体可以被呈现,例如地面是瓷砖还是地毯,小物体或指示家具的未标明区域等。

图16是根据实施方案的用于生成平面视角平面布置图的过程的流程图。首先相机拍摄地面的系列图像(步骤1602)。例如通过lidar、vslam,gps或其他方式,针对每个图像确定机器人的位置(1604)。用摄像时机器人的位置标记系列图像中的每个图像(1606)。裁剪图像以识别每个图像中的至少一个片段(1608)。将片段从机器人相机透视图转换成平面视图(1610)。将平面视图中机器人位置处的每个片段偏移填充至平面布置图,其中该偏移与机器人位置和所述片段在地面上的位置之间的差相对应(1612)。向用户显示平面布置图(1614)。接受用以修改机器人的操作特性的用户输入(1616)。

可以使用各种其他实施方案。相机可适用于可见光、红外光、紫外线,3d点云或其他图像。来自相机的图像可以在清洁机器人、插接站中被本地存储和处理,或者在通过以下方式连接的计算机中被远程存储和处理,该计算机通过wifi、蓝牙或其他无线连接与机器人连接或者无线地或通过有线连接与对插接站连接。通过因特网或其他网络连接的远程服务器可以存储和/或处理图像。在清洁机器人完成运行后或实时地将图像上载到插接站处理器,远程计算机或服务器可以异步完成。处理可以在不同处理器之间被划分。例如,可以在清洁机器人中完成初始裁剪、镜头失真校正和转换成平面(鸟瞰图)格式中的一个或多个,其中拼接在一起和其他操作远程完成。

虽然已经相对于特定实施方案描述了本发明,但是本领域技术人员将认识到可以进行多种修改。可以使用各种计算机系统和通信技术来实现本发明的实施方案,包括但不限于本文描述的特定示例。

可以使用专用组件和/或可编程处理器和/或其他可编程设备的任何组合来实现本发明的实施方案。本文描述的各种过程可以以任何组合在同一处理器或不同处理器上实现。在将组件描述为被配置为执行某些操作的情况下,可以例如通过设计电子电路来执行操作,通过编程可编程电子电路(例如微处理器)来执行操作或其任何组合来完成这种配置。此外,虽然上述实施方案可以参考特定的硬件和软件组件,但是本领域技术人员将理解,也可以使用硬件和/或软件组件的不同组合,并且描述为以硬件实现的特定操作也可以用软件实现,反之亦然。

包含本发明的各种特征的计算机程序可以被编码并存储在各种计算机可读存储介质上;合适的介质包括磁盘或磁带、光盘存储介质(诸如光盘(cd)或dvd(数字通用光盘))、闪存和其他非暂时性介质。用程序代码编码的计算机可读介质可以与兼容的电子设备一起封装,或者程序代码可以与电子设备分开提供(例如,通过因特网下载或作为单独封装的计算机可读存储介质)。

因此,尽管已经相对于特定实施方案描述了本发明,但是应当理解,本发明旨在覆盖所附权利要求范围内的所有修改和等同物。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1