CN110495819B - 机器人的控制方法、机器人、终端、服务器及控制系统 - Google Patents
机器人的控制方法、机器人、终端、服务器及控制系统 Download PDFInfo
- Publication number
- CN110495819B CN110495819B CN201910673025.0A CN201910673025A CN110495819B CN 110495819 B CN110495819 B CN 110495819B CN 201910673025 A CN201910673025 A CN 201910673025A CN 110495819 B CN110495819 B CN 110495819B
- Authority
- CN
- China
- Prior art keywords
- coordinate system
- coordinate
- robot
- server
- target point
- 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.)
- Active
Links
Images
Classifications
-
- A—HUMAN NECESSITIES
- A47—FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
- A47L—DOMESTIC WASHING OR CLEANING; SUCTION CLEANERS IN GENERAL
- A47L11/00—Machines for cleaning floors, carpets, furniture, walls, or wall coverings
- A47L11/24—Floor-sweeping machines, motor-driven
-
- A—HUMAN NECESSITIES
- A47—FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
- A47L—DOMESTIC WASHING OR CLEANING; SUCTION CLEANERS IN GENERAL
- A47L11/00—Machines for cleaning floors, carpets, furniture, walls, or wall coverings
- A47L11/40—Parts or details of machines not provided for in groups A47L11/02 - A47L11/38, or not restricted to one of these groups, e.g. handles, arrangements of switches, skirts, buffers, levers
-
- A—HUMAN NECESSITIES
- A47—FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
- A47L—DOMESTIC WASHING OR CLEANING; SUCTION CLEANERS IN GENERAL
- A47L11/00—Machines for cleaning floors, carpets, furniture, walls, or wall coverings
- A47L11/40—Parts or details of machines not provided for in groups A47L11/02 - A47L11/38, or not restricted to one of these groups, e.g. handles, arrangements of switches, skirts, buffers, levers
- A47L11/4011—Regulation of the cleaning machine by electric means; Control systems and remote control systems therefor
-
- A—HUMAN NECESSITIES
- A47—FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
- A47L—DOMESTIC WASHING OR CLEANING; SUCTION CLEANERS IN GENERAL
- A47L11/00—Machines for cleaning floors, carpets, furniture, walls, or wall coverings
- A47L11/40—Parts or details of machines not provided for in groups A47L11/02 - A47L11/38, or not restricted to one of these groups, e.g. handles, arrangements of switches, skirts, buffers, levers
- A47L11/4061—Steering means; Means for avoiding obstacles; Details related to the place where the driver is accommodated
-
- A—HUMAN NECESSITIES
- A47—FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
- A47L—DOMESTIC WASHING OR CLEANING; SUCTION CLEANERS IN GENERAL
- A47L2201/00—Robotic cleaning machines, i.e. with automatic control of the travelling movement or the cleaning operation
-
- A—HUMAN NECESSITIES
- A47—FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
- A47L—DOMESTIC WASHING OR CLEANING; SUCTION CLEANERS IN GENERAL
- A47L2201/00—Robotic cleaning machines, i.e. with automatic control of the travelling movement or the cleaning operation
- A47L2201/04—Automatic control of the travelling movement; Automatic obstacle detection
Abstract
本申请实施例提供一种机器人的控制方法、机器人、终端、服务器及控制系统。该方法包括:机器人向服务器上传第一坐标系与第二坐标系的坐标转换关系以及视觉SLAM地图;终端将目标图像帧和目标点的特征数据上传到服务器;服务器根据目标图像帧、目标点的特征数据和视觉SLAM地图确定目标点在第一坐标系中的坐标;服务器将目标点在第一坐标系中的第一坐标转换为目标点在第二坐标系中的第二坐标,服务器向机器人发送第二坐标;机器人接收第二坐标,并根据第二坐标与机器人当前所处位置在第二坐标系中的坐标确定运动路径并按照运动路径向目标点运动。用户能够精确选择想要控制机器人运动到的位置,从而使得机器人能够准确运动到目标点。
Description
技术领域
本申请涉及人工智能技术领域,特别涉及机器人的控制方法、机器人、终端、服务器及控制系统。
背景技术
目前家用扫地机器人越来越普及,用户需要给机器人下发指令任务,控制机器人清扫指定区域等。
目前主流的控制方式有两种,一种通过遥控器来实现,用户按遥控器的上、下、左、右键控制机器人运动到指定目标。这种控制方式扫地机必须在人的视野范围内,而扫地机处于工作状态时满屋跑,此方式使用体验会差。
另一种是用户通过手机APP中绘制的电子地图(如图1所示)人工选取目标点并下发给扫地机。主要的交互操作依赖SLAM(Simultaneous Localization and Mapping,即时定位与建图)技术生成的电子地图。所绘制的电子地图还原度还很低,人工在地图上选目标点时误差较大(米级),从而机器人无法准确运动到目标点。
发明内容
本申请实施例提供了一种机器人的控制方法、机器人、终端、服务器及控制系统,以控制机器人准确运动到目标点。
本申请实施例的第一方面,提供了一种机器人的控制方法。该方法应用于机器人、终端、服务器组成的系统。其中,机器人携带了摄像头和激光雷达。该方法包括:机器人通过自身携带的摄像头创建视觉SLAM地图,通过自身携带的激光雷达创建激光SLAM地图,将视觉SLAM地图的坐标系在水平面上的投影坐标系作为第一坐标系,将激光SLAM地图的坐标系作为第二坐标系,机器人向服务器上传第一坐标系与第二坐标系的坐标转换关系以及视觉SLAM地图;终端截取当前的界面得到目标图像帧,终端提取目标点的特征数据,并将目标图像帧和目标点的特征数据上传到服务器;服务器接收目标图像帧、目标点的特征数据,并根据目标图像帧、目标点的特征数据和视觉SLAM地图确定目标点在第一坐标系中的坐标;服务器将目标点在第一坐标系中的第一坐标转换为目标点在第二坐标系中的第二坐标,服务器向机器人发送第二坐标;机器人接收第二坐标,并根据第二坐标与机器人当前所处位置在第二坐标系中的坐标确定运动路径并按照运动路径向目标点运动。
在本申请实施例中,用户不需要在还原度很低的电子地图上选择目标点,而是直接在终端的界面上选择目标点,因此,用户能够精确选择想要控制机器人运动到的位置,从而机器人能够准确运动到目标点。
可选的,第一坐标系的原点与第二坐标系的原点可以重合,也可以不重合。在第一坐标系的原点与第二坐标系的原点不重合的情况下,两个坐标系之间的坐标转换关系比较复杂;在第一坐标系的原点与第二坐标系的原点重合的情况下,两个坐标系之间的坐标转换关系比较简单。如果第一坐标系的原点与第二坐标系的原点不重合,则坐标转换关系包括第一坐标系的轴向与第二坐标系的轴向的夹角、第一坐标系的原点与第二坐标系的原点的相对位置。如果第一坐标系的原点与第二坐标系的原点重合,则坐标转换关系包括同一点分别在第一坐标系和第二坐标系中的坐标,或,第一坐标系的轴向与第二坐标系的轴向的夹角。在第一坐标系的原点与第二坐标系的原点重合的情况下,服务器可以根据以下公式将第一坐标转换为第二坐标:X'=X*cos(θ)-Y*sin(θ),Y'=X*sin(θ)+Y*cos(θ);其中,(X',Y')表示第二坐标,(X,Y)表示第一坐标,θ表示第一坐标系的轴向与第二坐标系的轴向的夹角。第一坐标系的轴向与第二坐标系的轴向的夹角θ满足以下公式:θ=arccos[(X1X1′+Y1Y1′)/(X1 2+Y1 2)],其中,(X1,Y1)、(X1',Y1')分别表示同一点在第一坐标系中的坐标和在第二坐标系中的坐标。
可选的,夹角θ可以在机器人出厂之前测算出来,也可以在机器人到达用户手中之后再测算。具体地,在机器人出厂之前,机器人对某一个环境构建激光SLAM地图和视觉SLAM地图。地图构建完成之后,使机器人运动到某一点,查看机器人在第一坐标系中的坐标(X1,Y1)和第二坐标系中的坐标(X1',Y1'),根据公式:θ=arccos[(X1X1′+Y1Y1′)/(X1 2+Y1 2)]计算夹角θ。或者,也可以在机器人出厂之前不测算θ,等机器人达到用户手中后再测算。用户将机器人带回家后,机器人对室内环境构建激光SLAM地图和视觉SLAM地图。地图构建完成之后,使机器人运动到室内某一点,查看机器人在第一坐标系中的坐标(X1,Y1)和第二坐标系中的坐标(X1',Y1'),根据公式:θ=arccos[(X1X1′+Y1Y1′)/(X1 2+Y1 2)]计算夹角θ。
本申请实施例的第二方面,提供了一种机器人的控制方法,该方法应用于包括摄像头和激光雷达的机器人,方法包括:机器人通过摄像头创建视觉SLAM地图,通过激光雷达创建激光SLAM地图;机器人向服务器上传第一坐标系与第二坐标系的坐标转换关系;其中,第一坐标系为视觉SLAM地图的坐标系在水平面上的投影坐标系,第二坐标系为激光SLAM地图的坐标系;机器人向服务器上传视觉SLAM地图;机器人接收服务器基于视觉SLAM地图、以及第一坐标系与第二坐标系的坐标转换关系得到的第二坐标,第二坐标为目标点在第二坐标系中的坐标;机器人根据第二坐标与机器人当前所处位置在第二坐标系中的坐标确定运动路径;机器人按照运动路径向目标点运动。
其中,如果第一坐标系的原点与第二坐标系的原点不重合,则坐标转换关系包括第一坐标系的轴向与第二坐标系的轴向的夹角、第一坐标系的原点与第二坐标系的原点的相对位置。
其中,如果第一坐标系的原点与第二坐标系的原点重合,则坐标转换关系包括同一点分别在第一坐标系和第二坐标系中的坐标,或,第一坐标系的轴向与第二坐标系的轴向的夹角。第一坐标系的轴向与第二坐标系的轴向的夹角θ满足以下公式:θ=arccos[(X1X1′+Y1Y1′)/(X1 2+Y1 2)],其中,(X1,Y1)、(X1',Y1')分别表示同一点在第一坐标系中的坐标和在第二坐标系中的坐标。
本申请实施例的第三方面,提供了一种机器人的控制方法,应用于终端,方法包括:终端接收用户的触摸操作;终端截取当前的界面,得到目标图像帧;终端确定目标点的特征数据;终端向服务器上传目标图像帧以及目标点的特征数据。
可选的,该机器人的控制方法还包括:终端根据预设特征提取算法从目标图像帧中提取特征点;终端确定特征点的特征数据;终端向服务器上传特征点的特征数据。
可选的,该机器人的控制方法还包括:终端确定目标点的屏幕坐标和特征点的屏幕坐标;终端根据目标点的屏幕坐标和特征点的屏幕坐标,以及目标点的特征数据和特征点的特征数据,确定目标点与特征点的相对位置;终端向服务器上传目标点与特征点的相对位置。
本申请实施例的第四方面,提供了一种机器人的控制方法,应用于服务器,方法包括:服务器接收机器人发送的视觉SLAM地图;服务器接收机器人发送的第一坐标系与第二坐标系的坐标转换关系;其中,第一坐标系为视觉SLAM地图的坐标系在水平面上的投影坐标系,第二坐标系为机器人获取到的激光SLAM地图的坐标系;视觉SLAM地图和激光SLAM地图为机器人在相同的环境中创建的;服务器接收终端上传的目标图像帧和目标点的特征数据;服务器根据目标图像帧、目标点的特征数据和视觉SLAM地图确定目标点在第一坐标系中的第一坐标;服务器将第一坐标转换为第二坐标,第二坐标为目标点在第二坐标系中的坐标;服务器向机器人发送第二坐标。
可选的,服务器根据目标图像帧、目标点的特征数据和视觉SLAM地图确定目标点在第一坐标系中的第一坐标,包括:服务器获取目标图像帧中的特征点的特征数据;服务器将特征点的特征数据与视觉SLAM地图中的特征数据进行匹配,确定特征点在第一坐标系中的坐标;服务器确定目标点与特征点的相对位置;服务器根据特征点在第一坐标系中的坐标、目标点与特征点的相对位置确定目标点在第一坐标系中的第一坐标。
可选的,服务器确定目标点与特征点的相对位置,包括:服务器接收终端上传的目标点的屏幕坐标和特征点的屏幕坐标,以及目标点的特征数据和特征点的特征数据;服务器根据目标点的屏幕坐标和特征点的屏幕坐标,以及目标点的特征数据和特征点的特征数据,确定目标点与特征点的相对位置。
可选的,服务器将第一坐标转换为第二坐标,包括:服务器根据第一坐标系的原点与第二坐标系的原点的相对位置、以及第一坐标系的轴向与第二坐标系的轴向的夹角,将第一坐标转换为第二坐标。
可选的,第一坐标系的原点与第二坐标系的原点重合,第一坐标和第二坐标满足以下公式:X'=X*cos(θ)-Y*sin(θ),Y'=X*sin(θ)+Y*cos(θ);其中,(X',Y')表示第二坐标,(X,Y)表示第一坐标,θ表示第一坐标系的轴向与第二坐标系的轴向的夹角。θ由以下公式确定:θ=arccos[(X1X1′+Y1Y1′)/(X1 2+Y1 2)],其中,(X1,Y1)、(X1',Y1')分别表示同一点在第一坐标系中的坐标和在第二坐标系中的坐标。
本申请实施例的第五方面,提供了一种机器人,包括存储器和处理器,存储器用于存储包括程序指令的信息,处理器用于控制程序指令的执行,程序指令被处理器加载并执行时,使得机器人执行第二方面所述的方法。
本申请实施例的第六方面,提供了一种终端,包括存储器和处理器,存储器用于存储包括程序指令的信息,处理器用于控制程序指令的执行,程序指令被处理器加载并执行时,使得终端执行第三方面所述的方法。
本申请实施例的第七方面,提供了一种服务器,包括存储器和处理器,存储器用于存储包括程序指令的信息,处理器用于控制程序指令的执行,程序指令被处理器加载并执行时,使得服务器执行第四方面所述的方法。
本申请实施例的第八方面,提供了一种控制系统,控制系统包括第五方面所述的机器人、第六方面所述的终端、第七方面所述的服务器。
创建视觉SLAM地图,通过自身携带的激光雷达创建激光SLAM地图,在本申请实施例中,机器人构建视觉SLAM地图和激光SLAM地图这两个地图,并且机器人或者服务器可以获知这两个地图之间的转换关系。然后基于用户在终端提供的实际环境的图像中的选择,服务器可以获知用户选择的目标点在视觉SLAM地图中的位置,并基于两个地图之间的转换关系,得到目标点在激光SLAM地图中的位置,从而可以方便的控制机器人基于激光SLAM地图运动到用户选择的目标点。由此,用户不需要在还原度很低的电子地图上选择目标点,而是直接在终端的界面上选择目标点,因此,用户能够精确选择想要控制机器人运动到的位置,从而机器人能够准确运动到目标点。
附图说明
图1为现有技术提供的一种电子地图的示意图;
图2A为本申请实施例提供的一种控制系统的示意图;
图2B为本申请实施例提供的一种机器人的结构示意图;
图2C为本申请实施例提供的一种机器人的软件结构框图;
图3为本申请实施例提供的一种通过终端选择目标点的示意图;
图4A为本申请实施例提供的终端拍摄室内环境得到的图像的示意图;
图4B为本申请实施例提供的终端拍摄室内环境得到的图像中的特征点的示意图;
图5A为本申请实施例提供的一种机器人、终端、服务器交互的流程图;
图5B为本申请实施例提供的另一种机器人、终端、服务器交互的流程图;
图6为本申请实施例提供的右手坐标系和地面的示意图;
图7为本申请实施例提供的第一坐标系与第二坐标系的位置关系的示意图;
图8为本申请实施例提供的一种机器人的控制方法的流程图;
图9为本申请实施例提供的一种机器人的控制方法的流程图。
具体实施方式
本申请的实施方式部分使用的术语仅用于对本申请的具体实施例进行解释,而非旨在限定本申请。
本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
请参见图2A,本申请实施例提供了一种控制系统,包括终端100、服务器200、机器人300。
终端100又称为用户设备(User Equipment,UE),是一种向用户提供语音和/或数据连通性的设备。例如,具有无线连接功能的手持式设备、车载设备等。常见的终端包括例如:手机、平板电脑、笔记本电脑、掌上电脑、移动互联网设备(mobile internet device,MID)等。终端100能够通过服务器200控制机器人300。其中机器人300也可以被替换为具有与本申请实施例中描述的机器人类似的功能,能够被终端100控制的其它电子设备。
图2B示出了终端100的结构示意图。
终端100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
可以理解的是,本申请实施例示意的结构并不构成对终端100的具体限定。在本申请另一些实施例中,终端100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
I2C接口是一种双向同步串行总线,包括一根串行数据线(serial data line,SDA)和一根串行时钟线(derail clock line,SCL)。在一些实施例中,处理器110可以包含多组I2C总线。处理器110可以通过不同的I2C总线接口分别耦合触摸传感器180K,充电器,闪光灯,摄像头193等。例如:处理器110可以通过I2C接口耦合触摸传感器180K,使处理器110与触摸传感器180K通过I2C总线接口通信,实现终端100的触摸功能。
I2S接口可以用于音频通信。在一些实施例中,处理器110可以包含多组I2S总线。处理器110可以通过I2S总线与音频模块170耦合,实现处理器110与音频模块170之间的通信。在一些实施例中,音频模块170可以通过I2S接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。
PCM接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块170与无线通信模块160可以通过PCM总线接口耦合。在一些实施例中,音频模块170也可以通过PCM接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。所述I2S接口和所述PCM接口都可以用于音频通信。
UART接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,UART接口通常被用于连接处理器110与无线通信模块160。例如:处理器110通过UART接口与无线通信模块160中的蓝牙模块通信,实现蓝牙功能。在一些实施例中,音频模块170可以通过UART接口向无线通信模块160传递音频信号,实现通过蓝牙耳机播放音乐的功能。
MIPI接口可以被用于连接处理器110与显示屏194,摄像头193等外围器件。MIPI接口包括摄像头串行接口(camera serial interface,CSI),显示屏串行接口(displayserial interface,DSI)等。在一些实施例中,处理器110和摄像头193通过CSI接口通信,实现终端100的拍摄功能。处理器110和显示屏194通过DSI接口通信,实现终端100的显示功能。
GPIO接口可以通过软件配置。GPIO接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,GPIO接口可以用于连接处理器110与摄像头193,显示屏194,无线通信模块160,音频模块170,传感器模块180等。GPIO接口还可以被配置为I2C接口,I2S接口,UART接口,MIPI接口等。
USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为终端100充电,也可以用于终端100与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如AR设备等。
可以理解的是,本申请实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对终端100的结构限定。在本申请另一些实施例中,终端100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过USB接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过终端100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为终端100供电。
电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,显示屏194,摄像头193,和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。
终端100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。终端100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块150可以提供应用在终端100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(lownoise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170A,受话器170B等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
无线通信模块160可以提供应用在终端100上的包括无线局域网(wireless localarea networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequencymodulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,终端100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得终端100可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(code divisionmultiple access,CDMA),宽带码分多址(wideband code division multiple access,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(globalnavigation satellite system,GLONASS),北斗卫星导航系统(beidou navigationsatellite system,BDS),准天顶卫星系统(quasi-zenith satellite system,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。
终端100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode的,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,终端100可以包括1个或N个显示屏194,N为大于1的正整数。
终端100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
ISP用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点,亮度,肤色进行算法优化。ISP还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,ISP可以设置在摄像头193中。
摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,终端100可以包括1个或N个摄像头193,N为大于1的正整数。
数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当终端100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
视频编解码器用于对数字视频压缩或解压缩。终端100可以支持一种或多种视频编解码器。这样,终端100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。
NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现终端100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展终端100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储终端100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。处理器110通过运行存储在内部存储器121的指令,和/或存储在设置于处理器中的存储器的指令,执行终端100的各种功能应用以及数据处理。
终端100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。
扬声器170A,也称“喇叭”,用于将音频电信号转换为声音信号。终端100可以通过扬声器170A收听音乐,或收听免提通话。
受话器170B,也称“听筒”,用于将音频电信号转换成声音信号。当终端100接听电话或语音信息时,可以通过将受话器170B靠近人耳接听语音。
麦克风170C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风170C发声,将声音信号输入到麦克风170C。终端100可以设置至少一个麦克风170C。在另一些实施例中,终端100可以设置两个麦克风170C,除了采集声音信号,还可以实现降噪功能。在另一些实施例中,终端100还可以设置三个,四个或更多麦克风170C,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。
耳机接口170D用于连接有线耳机。耳机接口170D可以是USB接口130,也可以是3.5mm的开放移动电子设备平台(open mobile terminal platform,OMTP)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association of the USA,CTIA)标准接口。
压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。压力传感器180A
的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器180A,电极之间的电容改变。终端100根据电容的变化确定压力的强度。当有触摸操作作用于显示屏194,终端100根据压力传感器180A检测所述触摸操作强度。终端100也可以根据压力传感器180A的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如:当有触摸操作强度小于第一压力阈值的触摸操作作用于短消息应用图标时,执行查看短消息的指令。当有触摸操作强度大于或等于第一压力阈值的触摸操作作用于短消息应用图标时,执行新建短消息的指令。
陀螺仪传感器180B可以用于确定终端100的运动姿态。在一些实施例中,可以通过陀螺仪传感器180B确定终端100围绕三个轴(即,x,y和z轴)的角速度。陀螺仪传感器180B可以用于拍摄防抖。示例性的,当按下快门,陀螺仪传感器180B检测终端100抖动的角度,根据角度计算出镜头模组需要补偿的距离,让镜头通过反向运动抵消终端100的抖动,实现防抖。陀螺仪传感器180B还可以用于导航,体感游戏场景。
气压传感器180C用于测量气压。在一些实施例中,终端100通过气压传感器180C测得的气压值计算海拔高度,辅助定位和导航。
磁传感器180D包括霍尔传感器。终端100可以利用磁传感器180D检测翻盖皮套的开合。在一些实施例中,当终端100是翻盖机时,终端100可以根据磁传感器180D检测翻盖的开合。进而根据检测到的皮套的开合状态或翻盖的开合状态,设置翻盖自动解锁等特性。
加速度传感器180E可检测终端100在各个方向上(一般为三轴)加速度的大小。当终端100静止时可检测出重力的大小及方向。还可以用于识别终端100的姿态,应用于横竖屏切换,计步器等应用。
距离传感器180F,用于测量距离。终端100可以通过红外或激光测量距离。在一些实施例中,拍摄场景,终端100可以利用距离传感器180F测距以实现快速对焦。
接近光传感器180G可以包括例如发光二极管(LED)和光检测器,例如光电二极管。发光二极管可以是红外发光二极管。终端100通过发光二极管向外发射红外光。终端100使用光电二极管检测来自附近物体的红外反射光。当检测到充分的反射光时,可以确定终端100附近有物体。当检测到不充分的反射光时,终端100可以确定终端100附近没有物体。终端100可以利用接近光传感器180G检测用户手持终端100贴近耳朵通话,以便自动熄灭屏幕达到省电的目的。接近光传感器180G也可用于皮套模式,口袋模式自动解锁与锁屏。
环境光传感器180L用于感知环境光亮度。终端100可以根据感知的环境光亮度自适应调节显示屏194亮度。环境光传感器180L也可用于拍照时自动调节白平衡。环境光传感器180L还可以与接近光传感器180G配合,检测终端100是否在口袋里,以防误触。
指纹传感器180H用于采集指纹。终端100可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。
温度传感器180J用于检测温度。在一些实施例中,终端100利用温度传感器180J检测的温度,执行温度处理策略。例如,当温度传感器180J上报的温度超过阈值,终端100执行降低位于温度传感器180J附近的处理器的性能,以便降低功耗实施热保护。在另一些实施例中,当温度低于另一阈值时,终端100对电池142加热,以避免低温导致终端100异常关机。在其他一些实施例中,当温度低于又一阈值时,终端100对电池142的输出电压执行升压,以避免低温导致的异常关机。
触摸传感器180K,也称“触控面板”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180K用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180K也可以设置于终端100的表面,与显示屏194所处的位置不同。
骨传导传感器180M可以获取振动信号。在一些实施例中,骨传导传感器180M可以获取人体声部振动骨块的振动信号。骨传导传感器180M也可以接触人体脉搏,接收血压跳动信号。在一些实施例中,骨传导传感器180M也可以设置于耳机中,结合成骨传导耳机。音频模块170可以基于所述骨传导传感器180M获取的声部振动骨块的振动信号,解析出语音信号,实现语音功能。应用处理器可以基于所述骨传导传感器180M获取的血压跳动信号解析心率信息,实现心率检测功能。
按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。终端100可以接收按键输入,产生与终端100的用户设置以及功能控制有关的键信号输入。
马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。作用于显示屏194不同区域的触摸操作,马达191也可对应不同的振动反馈效果。不同的应用场景(例如:时间提醒,接收信息,闹钟,游戏等)也可以对应不同的振动反馈效果。触摸振动反馈效果还可以支持自定义。
指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
SIM卡接口195用于连接SIM卡。SIM卡可以通过插入SIM卡接口195,或从SIM卡接口195拔出,实现和终端100的接触和分离。终端100可以支持1个或N个SIM卡接口,N为大于1的正整数。SIM卡接口195可以支持Nano SIM卡,Micro SIM卡,SIM卡等。同一个SIM卡接口195可以同时插入多张卡。所述多张卡的类型可以相同,也可以不同。SIM卡接口195也可以兼容不同类型的SIM卡。SIM卡接口195也可以兼容外部存储卡。终端100通过SIM卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,终端100采用eSIM,即:嵌入式SIM卡。eSIM卡可以嵌在终端100中,不能和终端100分离。
终端100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本申请实施例以分层架构的Android系统为例,示例性说明终端100的软件结构。
图2C是本申请实施例的终端100的软件结构框图。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)和系统库,以及内核层。
应用程序层可以包括一系列应用程序包。
如图2C所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图2C所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
电话管理器用于提供终端100的通信功能。例如通话状态的管理(包括接通,挂断等)。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,机器人振动,指示灯闪烁等。
Android Runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(例如:OpenGL ES),2D图形引擎(例如:SGL)等。
表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。
三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。
2D图形引擎是2D绘图的绘图引擎。
内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。
下面结合捕获拍照场景,示例性说明终端100软件以及硬件的工作流程。
当触摸传感器180K接收到触摸操作,相应的硬件中断被发给内核层。内核层将触摸操作加工成原始输入事件(包括触摸坐标(在本申请实施例中可以为屏幕坐标),触摸操作的时间戳等信息)。原始输入事件被存储在内核层。应用程序框架层从内核层获取原始输入事件,识别该输入事件所对应的控件。以该触摸操作是触摸单击操作,该单击操作所对应的控件为相机应用图标的控件为例,相机应用调用应用框架层的接口,启动相机应用,进而通过调用内核层启动摄像头驱动,通过摄像头193捕获静态图像或视频。
用户购买机器人之后,可使用终端下载用于控制机器人的APP。该APP将终端与机器人进行关联,并将关联关系上传给服务器。服务器存储终端与机器人之间的关联关系。一个机器人可以与一个终端关联,也可以与两个及两个以上终端关联。例如,甲购买了机器人R1,服务器存储甲的手机与机器人R1之间的关联关系,这样当甲打开自己手机的APP时,便能够控制机器人R1运动。再例如,某人购买了机器人R2送给乙,乙家有3个人,乙将3个人的手机都关联了机器人R2,这样当乙家3个人中的任意一个人打开自己手机的APP时,都能够控制机器人R2运动。通过将终端与机器人进行关联,并存储终端与机器人之间的关联关系,使得机器人能够被与该机器人关联的终端控制。
用户购买机器人之后,将机器人放在室内环境中,例如放在自己家里,开启机器人,则机器人会构建室内环境的激光SLAM地图和视觉SLAM地图。
下面对同时定位与地图构建技术进行介绍。
同时定位与地图构建(Simultaneous Localization And Mapping,简称SLAM),通常是指在机器人或者其他载体上,通过对各种传感器数据进行采集和计算,生成对其自身位置姿态的定位和场景地图信息的系统。SLAM技术对于机器人或其他智能体的行动和交互能力至为关键,因为它代表了这种能力的基础:知道自己在哪里,知道周围环境如何,进而知道下一步该如何自主行动。它在自动驾驶、服务型机器人、无人机、AR/VR等领域有着广泛的应用,可以说凡是拥有一定行动能力的智能体都拥有某种形式的SLAM系统。
一般来讲,SLAM系统通常都包含多种传感器和多种功能模块。而按照核心的功能模块来区分,目前常见的机器人SLAM系统一般具有两种形式:基于激光雷达的SLAM(激光SLAM)和基于视觉的SLAM(Visual SLAM、VSLAM或视觉SLAM)。
激光SLAM脱胎于早期的基于测距的定位方法(如超声和红外单点测距)。激光雷达的出现和普及使得测量更快更准,信息更丰富。激光雷达采集到的物体信息呈现出一系列分散的、具有准确角度和距离信息的点,被称为点云。通常,激光SLAM系统通过对不同时刻两片点云的匹配与比对,计算激光雷达相对运动的距离和姿态的改变,也就完成了对机器人自身的定位。激光雷达距离测量比较准确,误差模型简单,在强光直射以外的环境中运行稳定,点云的处理也比较容易。同时,点云信息本身包含直接的几何关系,使得机器人的路径规划和导航变得直观。
眼睛是人类获取外界信息的主要来源。视觉SLAM也具有类似特点,它可以从环境中获取海量的、富于冗余的纹理信息,拥有超强的场景辨识能力。早期的视觉SLAM基于滤波理论,其非线性的误差模型和巨大的计算量成为了它实用落地的障碍。近年来,随着具有稀疏性的非线性优化理论(Bundle Adjustment)以及相机技术、计算性能的进步,实时运行的视觉SLAM已经不再是梦想。
通常,一个视觉SLAM系统由前端和后端组成。前端负责通过视觉增量式计算机器人的位姿,速度较快。后端主要负责两个功能:一是在出现回环(即判定机器人回到了之前访问过的地点附近)时,发现回环并修正两次访问中间各处的位置与姿态;二是当前端跟踪丢失时,根据视觉的纹理信息对机器人进行重新定位。简单说,前端负责快速定位,后端负责较慢的地图维护。
在本申请实施例中,机器人构建室内环境的激光SLAM地图和视觉SLAM地图之后,将构建的视觉SLAM地图传输给服务器,服务器接收并存储该视觉SLAM地图。
在本申请实施例中,用户处于室内的空间中,想通过终端控制机器人的运动,例如,该机器人可以是扫地机器人,用户想通过终端控制扫地机器人运动到某个房间的某个位置以打扫卫生,为方便描述,将该位置称为目标点。
用户的终端下载用于控制机器人的APP之后,当用户想要控制机器人运动到目标点时,用户打开终端的APP,APP调用终端的摄像头,请参见图3,用户可以将终端倾斜适当角度,使得摄像头能够采集到包含目标点的图像,终端界面上显示摄像头当前采集的图像,用户用手指触摸终端界面上的某一点以选择目标点,将用户手指与终端屏幕的接触点称为触摸点,终端对当前界面进行截图,得到目标图像帧。
请参见图3,触摸点为终端的屏幕上的一个点,而目标点为用户希望机器人运动到的位置。当用户想要改变目标点的位置时,例如,将目标点的位置从沙发前面的一个点变为书柜前面的一个点时,可调整终端的倾斜程度、或旋转以调整终端的摄像头的方向、或改变屏幕上的触摸点等。基于触摸点的位置和终端当前的倾斜角度,能够识别出图像中(即室内三维空间中)用户想要选择的目标点。
请参见图4A,所示为手机对当前界面截图得到的目标图像帧。
请参见图4B,点A为触摸点。终端使用预设特征提取算法提取目标图像帧中的特征点,例如:点B1、点B2、……、点B9为提取得到的特征点,终端确定特征点的屏幕坐标。预设特征提取算法可以为SIFT算法等。SIFT,即尺度不变特征变换(Scale-invariant featuretransform,SIFT),是用于图像处理领域的一种描述。这种描述具有尺度不变性,可在图像中检测出关键点。
接下来引入两个概念,第一坐标系和第二坐标系。
第一坐标系为视觉SLAM地图的坐标系在水平面上的投影坐标系,第二坐标系为激光SLAM地图的坐标系,第一坐标系和第二坐标系均为二维坐标系。
终端向服务器上传特征点和目标点的屏幕坐标,以及特征点和目标点的特征数据;还可以将目标图像帧的数据也上传到服务器。服务器根据各个特征点和目标点的特征数据,确定目标点与各个特征点的相对位置,根据各个特征点的特征数据从视觉SLAM地图中查找到这些特征点的坐标;并基于目标点与各个特征点的相对位置,获取到目标点在视觉SLAM地图中的坐标。即,获取到目标点在第一坐标系中的第一坐标。服务器将目标点在第一坐标系中的坐标转换为目标点在第二坐标系中的坐标。服务器将目标点在第二坐标系中的坐标发送给扫地机器人,扫地机器人根据目标点在第二坐标系中的坐标以及当前自身所处位置在第二坐标系中的坐标规划运动路径,并按照该运动路径运动到目标点,然后对目标点的位置进行清扫。
请参见图5A和图5B,本申请实施例提供的机器人的控制方法涉及终端、服务器、机器人之间的交互。图5A所示出的机器人的控制方法包括以下步骤S1至步骤S10。图5B所示出的机器人的控制方法包括以下步骤S1-S4、步骤S5′-S7′以及步骤S8-S10。下面详细介绍图5A。
步骤S1:机器人构建视觉SLAM地图和激光SLAM地图。
其中,机器人构建激光SLAM地图的过程包括步骤S400至步骤S403。机器人中安装有激光雷达,可以发射激光,并接收经障碍物反射回来的激光。其中,所述的障碍物指的是室内摆放的、一般处于静止的物体。
步骤S400:预先确定待创建的激光SLAM地图的原点和坐标系。该原点的选取规则例如可以是出厂前设置的。其中,该原点例如可以为机器人的充电桩所在的位置。
步骤S401:机器人在室内运动的过程中,激光雷达不断发射激光,激光经障碍点反射后再被激光雷达接收。其中,所述的障碍点指的是障碍物中的一点。激光通常被发射到障碍物中的一点。
步骤S402:机器人根据激光雷达的朝向确定障碍点的方向;根据激光从发射到被返回接收的时长确定障碍点与机器人的距离。
其中,在原点和坐标系确定之后,机器人在运动的过程中,机器人可以基于自身的传感器获取到自身当前所在位置的坐标。由此,基于激光往返的时长,能够确定障碍点与机器人当前位置的距离;也能够确定障碍点与原点之间的距离。
步骤S403:机器人通过在室内运动和不断的发射激光,可以获取到各个障碍点的方向和各个障碍点与原点之间的距离,然后机器人基于障碍点的方向、障碍点与原点之间的距离创建激光SLAM地图。
机器人构建视觉SLAM地图的过程包括步骤S501至步骤S505。机器人中安装有摄像头,用于拍摄周围环境。
步骤S501:预先确定待创建的视觉SLAM地图的原点和坐标系。该原点的选取规则例如可以是出厂前设置的。其中,该原点例如可以为机器人的充电桩所在的位置。
步骤S502:机器人在室内运动,并通过摄像头拍摄周围环境的图片。其中,在原点和坐标系确定之后,机器人在运动的过程中,机器人可以基于自身的传感器获取到自身当前所在位置的坐标。
步骤S503:机器人根据预设特征提取算法提取拍摄得到的图像的特征点,并获取这些特征点相对于机器人的位置。预设特征提取算法可以为SIFT算法等。SIFT,即尺度不变特征变换(Scale-invariant feature transform,SIFT),是用于图像处理领域的一种描述。这种描述具有尺度不变性,可在图像中检测出关键点。
步骤S504:机器人根据特征点相对于机器人的位置、机器人当前在视觉SLAM地图的坐标系中的坐标,计算特征点在视觉SLAM地图的坐标系中的坐标。
步骤S505:机器人通过在室内运动和不断的获取周围特征点的坐标,在视觉SLAM地图的坐标系中的坐标绘制视觉SLAM地图。
请参见图6,在空间直角坐标系中,让右手拇指指向x轴的正方向,食指指向y轴的正方向,如果中指能指向z轴的正方向,则称这个坐标系为右手坐标系。视觉SLAM坐标系中XY平面描述的是以原点为切点的地球平面的切平面,本申请实施例中地球面可看成是地平面,则XY平面描述的即为地面,与激光SLAM的坐标系描述的平面相同。如前文所述,第一坐标系为视觉SLAM地图的坐标系在水平面上的投影坐标系,因此,对于三维空间的任一点,该点在视觉SLAM地图中的横坐标与该点在第一坐标系中的横坐标相同;并且,该点在视觉SLAM地图中的纵坐标与该点在第一坐标系中的纵坐标相同。第二坐标系为激光SLAM地图的坐标系,对于三维空间的任一点,该点在激光SLAM地图中的横坐标与该点在第二坐标系中的横坐标相同;并且,该点在激光SLAM地图中的纵坐标与该点在第二坐标系中的纵坐标相同。
视觉SLAM地图中存在特征点相对于机器人的位置的累计,所以存在累积误差。在构建视觉SLAM地图的过程中,可以使用激光SLAM地图对视觉SLAM地图进行纠偏。具体地,对于视觉SLAM地图中的某一点(为方便描述,将该点称为点B)的横坐标X0和纵坐标Y0,在激光SLAM地图中确定该点的横坐标和纵坐标分别为X0'、Y0',则可以根据该点在激光SLAM地图中的坐标对该点在视觉SLAM地图中的坐标进行纠偏。
作为一种可能的方式,纠偏后点B在视觉SLAM地图中的横坐标为K1*X0+K2*X0',纵坐标为K1*Y0+K2*Y0'。K1、K2均为常量,K1、K2的值可以相等,也可以不相等。例如,作为一种可选的方式,可以令K1、K2均为1/2,此时,纠偏后点B在视觉SLAM地图中的横坐标为(X0+X0')/2,纵坐标为(Y0+Y0')/2;作为另一种可选的方式,可以令K1=0.25、K2=0.75,此时,纠偏后点B在视觉SLAM地图中的横坐标为0.25*X0+0.75*X0',纵坐标为0.25*Y0+0.75*Y0';作为又一种可选的方式,可以令K1=0,K2=1,此时,纠偏后点B在视觉SLAM地图中的横坐标为X0',纵坐标为Y0'。
步骤S2:机器人将视觉SLAM地图上传给服务器。
步骤S3:机器人将第一坐标系的原点与第二坐标系的原点的相对位置、第一坐标系的轴向与第二坐标系的轴向的夹角上传给服务器。
若已知两个原点之间的距离,以及一个原点相对于另一个原点的方向,则能够知道两个原点的相对位置。若已知第一坐标系的原点在第二坐标系中的坐标,或者,已知第二坐标系的原点在第一坐标系中的坐标,也能够知道两个原点的相对位置。步骤S3中机器人将第一坐标系的原点与第二坐标系的原点的相对位置上传给服务器,具体指将以下信息上传给服务器:第一坐标系的原点与第二坐标系的原点之间的距离,以及一个原点相对于另一个原点的方向;或者,第一坐标系的原点在第二坐标系中的坐标,或者,第二坐标系的原点在第一坐标系中的坐标。
第一坐标系的原点与第二坐标系的原点可以重合,也可以不重合。相比于两个原点重合的情况,两个原点不重合的情况下根据第一坐标计算第二坐标的公式更加复杂。在两个坐标系的原点重合这种情况下,机器人只需要将第一坐标系的轴向与第二坐标系的轴向之间的夹角上传给服务器。
第一坐标系的轴向与第二坐标系的轴向之间的夹角具体指:第一坐标系的横轴与第二坐标系的横轴之间的夹角,或,第一坐标系的纵轴与第二坐标系的纵轴之间的夹角。该夹角位于[0,π]之间。请参见图7,xOy表示第一坐标系,x′Oy′表示第二坐标系,θ即为两坐标系的轴向的夹角。
步骤S4:终端显示视觉界面。
当用户想要控制机器人运动到目标点时,例如用户想要控制扫地机器人运动到目标点去打扫卫生时,用户可以打开安装在终端上的用于控制机器人的APP。APP调用终端的摄像头拍摄当前环境的图像,为用户提供视觉界面。用户在摄像头拍摄的图像中能够看到室内环境,例如,用户在摄像头拍摄的图像中能够看到沙发、桌椅、书柜等。如果用户想让机器人运动到沙发前面的某一个位置,则沙发前面的这个位置即为目标点;如果用户想让机器人运动到书柜旁边的某一个位置,则书柜旁边的这个位置即为目标点。
步骤S5:终端接收用户的触摸操作,对界面进行截图得到目标图像帧,提取目标图像帧中的特征点,并确定出各个特征点的特征数据和目标点与各个特征点的相对位置。一般来说,提取的特征点的数量大于2。
用户手指在终端的屏幕上触摸以选择目标点,假设触摸点(手指与屏幕接触的位置)为点A(请参见图4B)。终端基于点A的位置和终端当前的倾斜角度,识别出图像中(即室内三维空间中)用户想要选择的目标点。终端对屏幕上显示的界面进行截图,得到目标图像帧,终端提取目标图像帧中的特征点,图4B示出了提取出的一些特征点(例如点B1、点B2、……、点B9)。终端确定出目标点和每个特征点的相对位置。
需要注意的是:步骤S5中终端提取目标图像帧中的特征点所使用的特征提取算法与机器人构建SLAM地图时所采用的特征提取算法是相同的。
步骤S6:终端将各个特征点的特征数据和目标点与各个特征点的相对位置上传给服务器。
步骤S7:服务器根据各个特征点的特征数据从视觉SLAM地图中查找到这些特征点的坐标;并基于目标点与各个特征点的相对位置,获取到目标点在视觉SLAM地图中的坐标。即,获取到目标点在第一坐标系中的坐标,为方便描述,将该坐标称为第一坐标。
具体地,服务器接收终端上传的特征点的特征数据,在自身存储的视觉SLAM地图中查找对应的特征点,确定出特征点在视觉SLAM地图中的坐标。特征点在视觉SLAM地图中的坐标可以是三维的坐标,三个维度的坐标分别为:横坐标、纵坐标、竖坐标。其中,取上述横坐标作为目标点在第一坐标系中的横坐标,取上述纵坐标作为目标点在第一坐标系中的纵坐标。根据特征点在第一坐标系中的坐标、特征点与目标点的相对位置确定目标点在第一坐标系中的坐标,即,确定第一坐标。
步骤S8:服务器根据第一坐标系与第二坐标系的原点的相对位置、第一坐标系的轴向与第二坐标系的轴向的夹角,将第一坐标转换为第二坐标。
假设目标点在第一坐标系中横坐标为X,纵坐标为Y,在第二坐标系中横坐标为X′,纵坐标为Y′。则将第一坐标转换为第二坐标即为根据第一坐标计算第二坐标的过程。
请参见图7,xOy表示第一坐标系,x′Oy′表示第二坐标系,第一坐标系的横轴与第二坐标系的横轴之间的夹角为θ,在第一坐标系与第二坐标系原点重合的情况下,点A在第一坐标系中的坐标为(X,Y),在第二坐标系中的坐标为(X′,Y′),点A与两坐标系的原点O之间的距离为r,线段OA与第一坐标系的横轴之间的夹角为β。以下公式成立:
X=r*cos(β) (1)
Y=r*sin(β) (2)
X′=r*cos(θ+β) (3)
Y′=r*sin(θ+β) (4)
公式(3)展开得到公式(5)
X′=r*[cos(θ)*cos(β)-sin(θ)sin(β)] (5)
公式(4)展开得到公式(6)
Y′=r*[sin(θ)*cos(β)+cos(β)sin(θ)] (6)
将公式(1)和(2)代入公式(5)、(6)即得出以下结果
X′=X*cos(θ)–Y*sin(θ) (7)
Y′=X*sin(θ)+Y*cos(θ) (8)
转换成矩阵计算即为:
根据公式(7)、(8),或者根据公式(9),即可计算出目标点在第二坐标系中的坐标(X′,Y′)。
根据公式(7)、(8),或者根据公式(9)计算第二坐标,都需要知道θ的值。第一坐标系的横轴与第二坐标系的横轴之间的夹角为θ,第一坐标系的横轴的正方向由摄像头的固定参数决定,第二坐标系的横轴的正方向由激光雷达的固定参数决定。一旦机器人生产制造出来,θ即确定下来,是一个固定的常量。可以根据同一点在第一坐标系中的坐标和第二坐标系中的坐标反推出θ。
下面对反推出θ的方法进行详细介绍。确定一个点(为方便描述,称该点为点C),使机器人运动到点C,查看机器人分别在第一坐标系和第二坐标系中的坐标,假设在第一坐标系中的坐标为(X1,Y1),在第二坐标系中的坐标为(X1′,Y1′),即,点C在第一坐标系中的坐标为(X1,Y1),点C在第二坐标系中的坐标为(X1′,Y1′)。
根据以上公式(7)和(8),有:
X1′=X1*cos(θ)–Y1*sin(θ) (10)
Y1′=X1*sin(θ)+Y1*cos(θ) (11)
将公式(10)左右两边同时乘以X1,得到公式(12)
X1X1′=X1 2*cos(θ)–X1Y1*sin(θ) (12)
将公式(11)左右两边同时乘以Y1,得到公式(13)
Y1Y1′=Y1X1*sin(θ)+Y1 2*cos(θ) (13)
将公式(12)和公式(13)左右两边分别相加,得到公式(14)
X1X1′+Y1Y1′=X1 2*cos(θ)+Y1 2*cos(θ)=(X1 2+Y1 2)*cos(θ) (14)
因此,
cos(θ)=(X1X1′+Y1Y1′)/(X1 2+Y1 2) (15)
知道cos(θ)之后,即可根据三角函数关系求得θ以及sin(θ)。
需要注意的是,由于视觉SLAM坐标系中存在累积误差,第一坐标系为视觉SLAM坐标系在水平面上的投影的坐标系,因此,第一坐标系中也存在累积误差,距离原点越远的点的坐标越不准确。因此,通过选取距离原点近的位置(例如点C与原点之间的距离在30厘米以内),得到的机器人在第一坐标系中的坐标更加准确,据此计算出的θ也更加准确。
步骤S9:服务器向机器人发送第二坐标。所述的第二坐标即为目标点在激光SLAM地图中的坐标。
步骤S10:机器人根据第二坐标确定运动路径,并按照该运动路径向目标点运动。
具体地,机器人知道自身当前所处位置在第二坐标系中的坐标,也知道了目标点在第二坐标系中的坐标,根据激光SLAM地图确定运动路径,并按照运动路径向目标点运动。
图5B所示出的机器人的控制方法中的步骤S1-S4与图5A所示的步骤S1-S4相同。在步骤S4之后,该方法还包括以下步骤S5′-S7′。
步骤S5′:终端接收用户的触摸操作,对界面进行截图得到目标图像帧。
用户手指在终端的屏幕上触摸以选择目标点,假设触摸点(手指与屏幕接触的位置)为点A(请参见图4B)。终端基于点A的位置和终端当前的倾斜角度,识别出图像中(即室内三维空间中)用户想要选择的目标点。终端对屏幕上显示的界面进行截图,得到目标图像帧。
步骤S6′:终端将目标图像帧上传到服务器。
步骤S7′:服务器从目标图像帧中提取特征点,确定出各个特征点的特征数据,确定目标点与各个特征点的相对位置,根据各个特征点的特征数据从视觉SLAM地图中查找到这些特征点的坐标;并基于目标点与各个特征点的相对位置,获取到目标点在视觉SLAM地图中的坐标。即,获取到目标点在第一坐标系中的坐标,为方便描述,将该坐标称为第一坐标。
一般来说,提取的特征点的数量大于2。图4B示出了提取出的一些特征点(例如点B1、点B2、……、点B9)。
具体地,服务器接收终端上传的特征点的特征数据,在自身存储的视觉SLAM地图中查找对应的特征点,确定出特征点在视觉SLAM地图中的坐标。特征点在视觉SLAM地图中的坐标可以是三维的坐标,三个维度的坐标分别为:横坐标、纵坐标、竖坐标。其中,取上述横坐标作为目标点在第一坐标系中的横坐标,取上述纵坐标作为目标点在第一坐标系中的纵坐标。根据特征点在第一坐标系中的坐标、特征点与目标点的相对位置确定目标点在第一坐标系中的坐标,即,确定第一坐标。
在步骤S7′之后,图5B所示出的机器人的控制方法还包括步骤S8-S10。图5B所示出的机器人的控制方法包括的步骤S8-S10与图5A所示的步骤S8-S10相同。
在本申请实施例中,用户不需要在还原度很低的电子地图上选择目标点,而是直接在终端的界面上选择目标点,因此,用户能够精确选择想要控制机器人运动到的位置,从而机器人能够准确运动到目标点。
在图5A所示出的流程中,终端从目标图像帧中提取特征点,然后将特征点的特征数据上传给服务器,而不会将目标图像帧上传给服务器,这种方式的好处在于由于服务器无法根据特征点的数据反推出目标图像帧,从而有效地保护了用户隐私。
而在图5B所示出的流程中,终端将目标图像帧上传到服务器,由服务器提取目标图像帧中的特征点。这种方式的好处在于:有效减少了终端的计算量,减少了对终端的计算资源的占用,从而对终端的配置要求较低。而且,由于服务器的计算能力比终端强很多,这种方式的计算速度更快,从而机器人响应更快。
请参见图8,所示为本申请实施例提供的一种执行机器人的控制方法的流程图。需要注意的是,图8所示的实施例是以手机和扫地机器人为例进行说明的,本申请的控制方法也可以应用在除手机和扫地机器人以外的其它终端中,例如:可以是平板电脑控制拖地机器人或者控制其它可移动的设备。
图8所示的方法的流程可以分为三个部分:
第一部分,主要包括在用户购买扫地机器人之后,在使用扫地机器人打扫卫生之前,需要在手机上下载用于控制扫地机器人的APP,并关联手机和扫地机器人,具体包括步骤S101至步骤S103。
步骤S101:用户打开安装在手机上的用于控制扫地机器人的APP。
步骤S102:用户在APP上将手机与扫地机器人进行关联,手机将关联关系上传到服务器。将手机与扫地机器人进行关联的目的是:使扫地机器人被与其关联的特定终端所控制。
步骤S103:服务器接收手机上传的手机与扫地机器人的关联关系,并存储该关联关系。
第二部分,主要包括扫地机器人对室内环境构建激光SLAM地图和视觉SLAM地图,服务器存储扫地机器人上传的视觉SLAM地图,具体包括步骤S201至步骤S206。
步骤S201:扫地机器人分别建立室内环境的激光SLAM地图、视觉SLAM地图。
步骤S202:扫地机器人将视觉SLAM地图上传给服务器。
步骤S203:扫地机器人将室内环境中的同一点分别在第一坐标系中的坐标(X1,Y1),在第二坐标系中的坐标(X1′,Y1′)上传给服务器。
步骤S204:服务器接收扫地机器人上传的视觉SLAM地图,并将该视觉SLAM地图与扫地机器人进行关联。
步骤S205:服务器接收扫地机器人上传的同一点分别在第一坐标系中的坐标(X1,Y1),在第二坐标系中的坐标(X1′,Y1′)。第一坐标系为视觉SLAM地图的坐标系在水平面上的投影坐标系,第二坐标系为激光SLAM地图的坐标系。
步骤S206:服务器根据同一点分别在第一坐标系中的坐标(X1,Y1),在第二坐标系中的坐标(X1′,Y1′)计算第一坐标系的横轴与第二坐标系的横轴之间的夹角θ,并将夹角θ与扫地机器人进行关联。如前所述,第一坐标系的横轴与第二坐标系的横轴之间的夹角为θ,第一坐标系的横轴的正方向由摄像头的固定参数决定,第二坐标系的横轴的正方向由激光雷达的固定参数决定。一旦机器人生产制造出来,θ即确定下来,是一个固定的常量,一般来说,由于不同型号的机器人的摄像头和激光雷达的固定参数不同,因此,不同型号的机器人所对应的夹角θ可能不相同。
将夹角θ与扫地机器人进行关联的目的是:使得服务器知道根据哪个夹角θ将第一坐标转换为第二坐标。例如,如表1所示,手机P1与扫地机器人R1具有关联关系;手机P2与扫地机器人R2具有关联关系;手机P3与扫地机器人R3具有关联关系,如表2所示,扫地机器人R1与夹角θ1具有关联关系;扫地机器人R2与夹角θ2具有关联关系;扫地机器人R3与夹角θ3具有关联关系。服务器中存储着上述关联关系,当服务器接收手机P1上传的特征点的屏幕坐标和目标点的屏幕坐标后,查找自身存储的关联关系,从而知道,手机P1与扫地机器人R1具有关联关系,扫地机器人R1与夹角θ1具有关联关系,在计算第二坐标的过程中,则将θ1代入公式(7)、(8),或者公式(9)。当服务器接收手机P3上传的特征点的屏幕坐标和目标点的屏幕坐标后,查找自身存储的关联关系,从而知道,手机P3与扫地机器人R3具有关联关系,扫地机器人R3与夹角θ3具有关联关系,在计算第二坐标的过程中,则将θ3代入公式(7)、(8),或者公式(9)。
表1
手机 | 扫地机器人 |
P1 | R1 |
P2 | R2 |
P3 | R3 |
表2
第三部分,主要包括用户通过手机控制扫地机器人运动到目标点打扫卫生,具体包括步骤S301至步骤S316。
步骤S301:机器人与终端关联之后,当用户想要使用扫地机器人打扫卫生时,例如用户想要扫地机器人运动到目标点以对目标点所在位置打扫卫生,用户打开手机上的APP,APP调用手机的摄像头。
步骤S302:手机的摄像头采集当前环境的图像,并将该图像显示在手机屏幕上。
步骤S303:用户通过触摸屏幕来选择目标点。用户在手机屏幕上触摸某一个点(该点即为触摸点)。
请参见图3,用户可以将手机倾斜适当角度,使得摄像头能够采集到包含目标点的图像,手机界面上显示摄像头当前采集的图像,用户用手指触摸手机界面上的某一点以选择目标点。其中,用户手指与手机屏幕的接触点称为触摸点。手机通过触摸点的位置,以及手机当前的倾斜角,可以获取到用户想要选择的实际场景中的目标点。
步骤S304:手机对当前屏幕界面进行截图,得到的截图即为上述目标图像帧。
步骤S305:手机提取目标图像帧中的N个特征点。N为大于1的自然数。
步骤S306:手机分别确定N个特征点的特征数据、目标点与N个特征点的相对位置。
步骤S307:手机将N个特征点的特征数据、目标点与N个特征点的相对位置上传给服务器。
步骤S308:服务器接收手机上传的N个特征点的特征数据、目标点与N个特征点的相对位置。
需要说明的是,手机也可以只是把目标图像帧上传给服务器,由服务器来提取特征点的特征数据,并计算目标点与特征点之间的相对位置。
步骤S309:服务器根据N个特征点的特征数据从视觉SLAM地图中查找到N个特征点的坐标。所述N个特征点的坐标指的是N个特征点在第一坐标系中的坐标。
步骤S310:服务器根据N个特征点的坐标、目标点与N个特征点的相对位置确定目标点在第一坐标系中的坐标(X,Y)。
步骤S311:服务器根据公式X'=X*cos(θ)-Y*sin(θ),Y'=X*sin(θ)+Y*cos(θ)计算目标点在第二坐标系中的坐标(X′,Y′),即,计算第二坐标。
步骤S312:服务器向扫地机器人发送第二坐标(X′,Y′)。
步骤S313:扫地机器人接收服务器发送的第二坐标(X′,Y′)。
步骤S314:扫地机器人确定自身当前所处位置在第二坐标系中的坐标。
步骤S315:扫地机器人根据第二坐标(X′,Y′)和自身当前所处位置在第二坐标系中的坐标规划运动路径。
步骤S316:扫地机器人控制自身按照规划好的运动路径运动到目标点。
在一种可选的方式中,根据同一点分别在第一坐标系中的坐标(X1,Y1),在第二坐标系中的坐标(X1′,Y1′)计算第一坐标系的横轴与第二坐标系的横轴之间的夹角θ,这个步骤也可以由扫地机器人来完成,扫地机器人计算出第一坐标系的横轴与第二坐标系的横轴之间的夹角θ之后,将夹角θ上传给服务器,服务器可以直接将该夹角θ与扫地机器人进行关联,并用于将第一坐标转换为第二坐标的过程中。
在本申请实施例中,用户不需要在还原度很低的电子地图上选择目标点,而是直接在终端的界面上选择目标点,因此,用户能够精确选择想要控制机器人运动到的位置,从而机器人能够准确运动到目标点。
请参见图9,本申请实施例提供的一种机器人的控制方法涉及手机、服务器、扫地机器人之间的交互,包括以下步骤S901至步骤S907。
S901:扫地机器人收集环境信息,构建激光SLAM地图和视觉SLAM地图。
S902:扫地机器人将视觉SLAM地图上传到服务器。
S903:手机对当前界面进行截图,得到目标图像帧,提取目标图像帧中的特征点。
请参见图3,用户可以将手机倾斜适当角度,使得摄像头能够采集到包含目标点的图像,手机界面上显示摄像头当前采集的图像,用户用手指触摸手机界面上的某一点以选择目标点。其中,用户手指与手机屏幕的接触点称为触摸点。手机通过触摸点的位置,以及手机当前的倾斜角,可以获取到用户想要选择的实际场景中的目标点。手机对当前界面进行截图,得到目标图像帧,手机提取目标图像帧中的特征点,并确定各个特征点的特征数据和目标点与各个特征点的相对位置。
S904:手机将各个特征点的特征数据和目标点与各个特征点的相对位置上传到服务器。
S905:服务器计算目标点在第一坐标系中的坐标,将目标点在第一坐标系中的坐标转换为目标点在第二坐标系中的坐标。
具体地,服务器根据各个特征点的特征数据从视觉SLAM地图中查找到各个特征点的坐标。所述各个特征点的坐标指的是各个特征点在第一坐标系中的坐标。根据各个特征点在第一坐标系中的坐标、目标点和各个特征点的相对位置计算目标点在第一坐标系中的坐标,将目标点在第一坐标系中的坐标转换为目标点在第二坐标系中的坐标。
S906:服务器向扫地机器人下发目标点在第二坐标系中的坐标。
S907:扫地机器人根据目标点在第二坐标系中的坐标和自身当前所处位置在第二坐标系中的坐标规划运动路径,并自主运动到目标点。
可以理解的是,上述实施例中的部分或全部步骤或操作仅是示例,本申请实施例还可以执行其它操作或者各种操作的变形。此外,各个步骤可以按照上述实施例呈现的不同的顺序来执行,并且有可能并非要执行上述实施例中的全部操作。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行上述实施例所述的通信方法。
此外,本申请实施例还提供一种计算机程序产品,该计算机程序产品包括计算机程序,当其在计算机上运行时,使得计算机执行上述实施例所述的通信方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid StateDisk)等。
Claims (21)
1.一种机器人的控制方法,其特征在于,应用于机器人、终端、服务器组成的系统,所述方法包括:
所述机器人通过自身携带的摄像头创建视觉SLAM地图,通过自身携带的激光雷达创建激光SLAM地图;
所述机器人向所述服务器上传第一坐标系与第二坐标系的坐标转换关系;其中,所述第一坐标系为所述视觉SLAM地图的坐标系在水平面上的投影坐标系,所述第二坐标系为所述激光SLAM地图的坐标系;
所述机器人向所述服务器上传所述视觉SLAM地图;
所述终端截取当前的界面得到目标图像帧,提取目标点的特征数据,并将所述目标图像帧和所述目标点的特征数据上传到所述服务器;
所述服务器接收所述目标图像帧、所述目标点的特征数据,并根据所述目标图像帧、所述目标点的特征数据和所述视觉SLAM地图确定所述目标点在所述第一坐标系中的第一坐标;
所述服务器将所述第一坐标转换为第二坐标,所述第二坐标为所述目标点在所述第二坐标系中的坐标;
所述服务器向所述机器人发送所述第二坐标;
所述机器人接收所述第二坐标,并根据所述第二坐标与所述机器人当前所处位置在所述第二坐标系中的坐标确定运动路径;
所述机器人按照所述运动路径向所述目标点运动。
2.根据权利要求1所述的方法,其特征在于,如果所述第一坐标系的原点与所述第二坐标系的原点不重合,则所述坐标转换关系包括所述第一坐标系的轴向与所述第二坐标系的轴向的夹角、所述第一坐标系的原点与所述第二坐标系的原点的相对位置。
3.根据权利要求1所述的方法,其特征在于,如果所述第一坐标系的原点与所述第二坐标系的原点重合,则所述坐标转换关系包括同一点分别在所述第一坐标系和所述第二坐标系中的坐标,或,所述第一坐标系的轴向与所述第二坐标系的轴向的夹角。
4.根据权利要求3所述的方法,其特征在于,
所述第一坐标系的轴向与所述第二坐标系的轴向的夹角θ满足以下公式:θ=arccos[(X1X1′+Y1Y1′)/(X1 2+Y1 2)],其中,(X1,Y1)、(X1',Y1')分别表示同一点在所述第一坐标系中的坐标和在所述第二坐标系中的坐标。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述服务器将所述第一坐标转换为第二坐标,包括:
所述服务器根据所述第一坐标系的原点与所述第二坐标系的原点的相对位置、以及所述第一坐标系的轴向与所述第二坐标系的轴向的夹角,将所述第一坐标转换为所述第二坐标。
6.根据权利要求5所述的方法,其特征在于,所述第一坐标系的原点与所述第二坐标系的原点重合,所述第一坐标和所述第二坐标满足以下公式:
X'=X*cos(θ)-Y*sin(θ),Y'=X*sin(θ)+Y*cos(θ);其中,(X',Y')表示所述第二坐标,(X,Y)表示所述第一坐标,θ表示所述第一坐标系的轴向与所述第二坐标系的轴向的夹角。
7.一种机器人的控制方法,其特征在于,应用于包括摄像头和激光雷达的机器人,所述方法包括:
所述机器人通过所述摄像头创建视觉SLAM地图,通过所述激光雷达创建激光SLAM地图;
所述机器人向服务器上传第一坐标系与第二坐标系的坐标转换关系;其中,所述第一坐标系为所述视觉SLAM地图的坐标系在水平面上的投影坐标系,所述第二坐标系为所述激光SLAM地图的坐标系;
所述机器人向所述服务器上传所述视觉SLAM地图;
所述机器人接收所述服务器基于所述视觉SLAM地图、以及所述第一坐标系与所述第二坐标系的坐标转换关系得到的第二坐标,所述第二坐标为目标点在所述第二坐标系中的坐标;
所述机器人根据所述第二坐标与所述机器人当前所处位置在所述第二坐标系中的坐标确定运动路径;
所述机器人按照所述运动路径向所述目标点运动。
8.根据权利要求7所述的方法,其特征在于,如果所述第一坐标系的原点与所述第二坐标系的原点不重合,则所述坐标转换关系包括所述第一坐标系的轴向与所述第二坐标系的轴向的夹角、所述第一坐标系的原点与所述第二坐标系的原点的相对位置。
9.根据权利要求7所述的方法,其特征在于,如果所述第一坐标系的原点与所述第二坐标系的原点重合,则所述坐标转换关系包括同一点分别在所述第一坐标系和所述第二坐标系中的坐标,或,所述第一坐标系的轴向与所述第二坐标系的轴向的夹角。
10.根据权利要求9所述的方法,其特征在于,
所述第一坐标系的轴向与所述第二坐标系的轴向的夹角θ满足以下公式:θ=arccos[(X1X1′+Y1Y1′)/(X1 2+Y1 2)],其中,(X1,Y1)、(X1',Y1')分别表示同一点在所述第一坐标系中的坐标和在所述第二坐标系中的坐标。
11.一种机器人的控制方法,其特征在于,应用于终端,所述方法包括:
所述终端获取当前的环境图像;
所述终端接收用户的操作;
响应于所述用户的操作,所述终端根据所述当前的环境图像得到目标图像帧和位于所述目标图像帧中的目标点;
所述终端确定目标点的特征数据;
所述终端向服务器上传所述目标图像帧以及所述目标点的特征数据;
所述方法还包括:
所述终端根据预设特征提取算法从所述目标图像帧中提取特征点;
所述终端确定所述特征点的特征数据;
所述终端向所述服务器上传所述特征点的特征数据;
所述方法还包括:
所述终端确定所述目标点的屏幕坐标和所述特征点的屏幕坐标;
所述终端根据所述目标点的屏幕坐标和所述特征点的屏幕坐标,以及所述目标点的特征数据和所述特征点的特征数据,确定所述目标点与所述特征点的相对位置;
所述终端向所述服务器上传所述目标点与所述特征点的相对位置。
12.一种机器人的控制方法,其特征在于,应用于服务器,所述方法包括:
所述服务器接收机器人发送的视觉SLAM地图;
所述服务器接收所述机器人发送的第一坐标系与第二坐标系的坐标转换关系;其中,所述第一坐标系为所述视觉SLAM地图的坐标系在水平面上的投影坐标系,所述第二坐标系为所述机器人获取到的激光SLAM地图的坐标系;所述视觉SLAM地图和所述激光SLAM地图为所述机器人在相同的环境中创建的;
所述服务器接收终端上传的目标图像帧和目标点的特征数据;
所述服务器根据所述目标图像帧、所述目标点的特征数据和所述视觉SLAM地图确定所述目标点在所述第一坐标系中的第一坐标;
所述服务器将所述第一坐标转换为第二坐标,所述第二坐标为所述目标点在所述第二坐标系中的坐标;
所述服务器向所述机器人发送所述第二坐标。
13.根据权利要求12所述的方法,其特征在于,所述服务器根据所述目标图像帧、所述目标点的特征数据和所述视觉SLAM地图确定所述目标点在所述第一坐标系中的第一坐标,包括:
所述服务器获取所述目标图像帧中的特征点的特征数据;
所述服务器将所述特征点的特征数据与所述视觉SLAM地图中的特征数据进行匹配,确定所述特征点在所述第一坐标系中的坐标;
所述服务器确定所述目标点与所述特征点的相对位置;
所述服务器根据所述特征点在所述第一坐标系中的坐标、所述目标点与所述特征点的相对位置确定所述目标点在所述第一坐标系中的所述第一坐标。
14.根据权利要求13所述的方法,其特征在于,所述服务器确定所述目标点与所述特征点的相对位置,包括:
所述服务器接收所述终端上传的所述目标点的屏幕坐标和所述特征点的屏幕坐标,以及所述目标点的特征数据和所述特征点的特征数据;
所述服务器根据所述目标点的屏幕坐标和所述特征点的屏幕坐标,以及所述目标点的特征数据和所述特征点的特征数据,确定所述目标点与所述特征点的相对位置。
15.根据权利要求12至14任一项所述的方法,其特征在于,所述服务器将所述第一坐标转换为第二坐标,包括:
所述服务器根据所述第一坐标系的原点与所述第二坐标系的原点的相对位置、以及所述第一坐标系的轴向与所述第二坐标系的轴向的夹角,将所述第一坐标转换为所述第二坐标。
16.根据权利要求15所述的方法,其特征在于,所述第一坐标系的原点与所述第二坐标系的原点重合,所述第一坐标和所述第二坐标满足以下公式:
X'=X*cos(θ)-Y*sin(θ),Y'=X*sin(θ)+Y*cos(θ);其中,(X',Y')表示所述第二坐标,(X,Y)表示所述第一坐标,θ表示所述第一坐标系的轴向与所述第二坐标系的轴向的夹角。
17.根据权利要求16所述的方法,其特征在于,θ由以下公式确定:
θ=arccos[(X1X1′+Y1Y1′)/(X1 2+Y1 2)],其中,(X1,Y1)、(X1',Y1')分别表示同一点在所述第一坐标系中的坐标和在所述第二坐标系中的坐标。
18.一种机器人,包括存储器和处理器,所述存储器用于存储包括程序指令的信息,所述处理器用于控制程序指令的执行,所述程序指令被处理器加载并执行时,使得所述机器人执行权利要求7至10任意一项所述的方法。
19.一种终端,包括存储器和处理器,所述存储器用于存储包括程序指令的信息,所述处理器用于控制程序指令的执行,所述程序指令被处理器加载并执行时,使得所述终端执行权利要求11所述的方法。
20.一种服务器,包括存储器和处理器,所述存储器用于存储包括程序指令的信息,所述处理器用于控制程序指令的执行,所述程序指令被处理器加载并执行时,使得所述服务器执行权利要求12至17任意一项所述的方法。
21.一种控制系统,其特征在于,所述控制系统包括权利要求18所述的机器人、权利要求19所述的终端、权利要求20所述的服务器。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910673025.0A CN110495819B (zh) | 2019-07-24 | 2019-07-24 | 机器人的控制方法、机器人、终端、服务器及控制系统 |
PCT/CN2020/103859 WO2021013230A1 (zh) | 2019-07-24 | 2020-07-23 | 机器人的控制方法、机器人、终端、服务器及控制系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910673025.0A CN110495819B (zh) | 2019-07-24 | 2019-07-24 | 机器人的控制方法、机器人、终端、服务器及控制系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110495819A CN110495819A (zh) | 2019-11-26 |
CN110495819B true CN110495819B (zh) | 2021-05-18 |
Family
ID=68586780
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910673025.0A Active CN110495819B (zh) | 2019-07-24 | 2019-07-24 | 机器人的控制方法、机器人、终端、服务器及控制系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110495819B (zh) |
WO (1) | WO2021013230A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110495819B (zh) * | 2019-07-24 | 2021-05-18 | 华为技术有限公司 | 机器人的控制方法、机器人、终端、服务器及控制系统 |
CN113063426B (zh) * | 2020-01-02 | 2022-12-13 | 北京魔门塔科技有限公司 | 一种位置信息确定方法及装置 |
CN111367278A (zh) * | 2020-03-04 | 2020-07-03 | 北京小狗智能机器人技术有限公司 | 机器人工作覆盖区域的确定方法及相关设备 |
CN113679289B (zh) * | 2020-05-18 | 2023-02-21 | 云米互联科技(广东)有限公司 | 扫地机控制方法、控制设备及计算机可读存储介质 |
CN112578333A (zh) * | 2020-12-24 | 2021-03-30 | 江苏新冠亿科技有限公司 | 一种智能小车初始坐标检测方法、智能小车及存储介质 |
CN112932338A (zh) * | 2021-02-05 | 2021-06-11 | 深圳拓邦股份有限公司 | 一种扫地机器人定点清扫方法 |
CN112886670A (zh) * | 2021-03-04 | 2021-06-01 | 武汉联一合立技术有限公司 | 机器人的充电控制方法、装置、机器人及存储介质 |
CN113329071A (zh) * | 2021-05-26 | 2021-08-31 | 北京远度互联科技有限公司 | 无人机调度方法及服务系统、计算机存储介质 |
CN113504790B (zh) * | 2021-07-08 | 2022-08-26 | 中国南方电网有限责任公司超高压输电公司大理局 | 一种无人机的飞行控制方法、装置及无人机 |
CN113569849B (zh) * | 2021-08-04 | 2023-11-21 | 北京交通大学 | 基于计算机视觉的汽车充电桩界面检测智能交互系统 |
CN114504285B (zh) * | 2022-04-21 | 2022-07-05 | 深圳市倍思科技有限公司 | 清洁位置确定方法、装置、设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06214639A (ja) * | 1993-01-18 | 1994-08-05 | Fujita Corp | 移動体の走行制御装置 |
CN101650891A (zh) * | 2008-08-12 | 2010-02-17 | 三星电子株式会社 | 创建3维网络地图的方法和控制自动行进设备的方法 |
CN103092201A (zh) * | 2012-08-10 | 2013-05-08 | 江苏科技大学 | 基于射频识别的多传感器语音导盲机器人及路径规划方法 |
CN106168805A (zh) * | 2016-09-26 | 2016-11-30 | 湖南晖龙股份有限公司 | 基于云计算的机器人自主行走的方法 |
CN107402567A (zh) * | 2016-05-19 | 2017-11-28 | 科沃斯机器人股份有限公司 | 组合机器人及其巡航路径生成方法 |
CN107450561A (zh) * | 2017-09-18 | 2017-12-08 | 河南科技学院 | 移动机器人的自主路径规划与避障系统及其使用方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005346477A (ja) * | 2004-06-03 | 2005-12-15 | Toshiba Tec Corp | 自律走行体 |
KR20130090438A (ko) * | 2012-02-04 | 2013-08-14 | 엘지전자 주식회사 | 로봇 청소기 |
TWI561198B (en) * | 2013-05-17 | 2016-12-11 | Lite On Electronics Guangzhou | Robot cleaner and method for positioning the same |
US10335949B2 (en) * | 2016-01-20 | 2019-07-02 | Yujin Robot Co., Ltd. | System for operating mobile robot based on complex map information and operating method thereof |
CN110495819B (zh) * | 2019-07-24 | 2021-05-18 | 华为技术有限公司 | 机器人的控制方法、机器人、终端、服务器及控制系统 |
-
2019
- 2019-07-24 CN CN201910673025.0A patent/CN110495819B/zh active Active
-
2020
- 2020-07-23 WO PCT/CN2020/103859 patent/WO2021013230A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06214639A (ja) * | 1993-01-18 | 1994-08-05 | Fujita Corp | 移動体の走行制御装置 |
CN101650891A (zh) * | 2008-08-12 | 2010-02-17 | 三星电子株式会社 | 创建3维网络地图的方法和控制自动行进设备的方法 |
CN103092201A (zh) * | 2012-08-10 | 2013-05-08 | 江苏科技大学 | 基于射频识别的多传感器语音导盲机器人及路径规划方法 |
CN107402567A (zh) * | 2016-05-19 | 2017-11-28 | 科沃斯机器人股份有限公司 | 组合机器人及其巡航路径生成方法 |
CN106168805A (zh) * | 2016-09-26 | 2016-11-30 | 湖南晖龙股份有限公司 | 基于云计算的机器人自主行走的方法 |
CN107450561A (zh) * | 2017-09-18 | 2017-12-08 | 河南科技学院 | 移动机器人的自主路径规划与避障系统及其使用方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2021013230A1 (zh) | 2021-01-28 |
CN110495819A (zh) | 2019-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110495819B (zh) | 机器人的控制方法、机器人、终端、服务器及控制系统 | |
JP7391102B2 (ja) | ジェスチャ処理方法およびデバイス | |
CN112130742B (zh) | 一种移动终端的全屏显示方法及设备 | |
CN115866121B (zh) | 应用界面交互方法、电子设备和计算机可读存储介质 | |
CN111127509B (zh) | 目标跟踪方法、装置和计算机可读存储介质 | |
CN112907725B (zh) | 图像生成、图像处理模型的训练、图像处理方法和装置 | |
CN112134995A (zh) | 一种查找应用对象的方法、终端及计算机可读存储介质 | |
WO2022027972A1 (zh) | 一种设备搜寻方法以及电子设备 | |
CN113934330A (zh) | 一种截屏方法及电子设备 | |
CN115619858A (zh) | 一种物体重建方法以及相关设备 | |
WO2022161386A1 (zh) | 一种位姿确定方法以及相关设备 | |
WO2022206494A1 (zh) | 目标跟踪方法及其装置 | |
WO2022007707A1 (zh) | 家居设备控制方法、终端设备及计算机可读存储介质 | |
WO2021170129A1 (zh) | 一种位姿确定方法以及相关设备 | |
CN111249728B (zh) | 一种图像处理方法、装置及存储介质 | |
CN115032640B (zh) | 手势识别方法和终端设备 | |
CN114812381B (zh) | 电子设备的定位方法及电子设备 | |
CN111611414A (zh) | 车辆检索方法、装置及存储介质 | |
CN111982293B (zh) | 体温测量方法、装置、电子设备及存储介质 | |
CN115115679A (zh) | 一种图像配准方法及相关设备 | |
CN111294320A (zh) | 数据转换的方法和装置 | |
WO2022222705A1 (zh) | 设备控制方法和电子设备 | |
WO2022222702A1 (zh) | 屏幕解锁方法和电子设备 | |
WO2023216957A1 (zh) | 一种目标定位方法、系统和电子设备 | |
CN116939303A (zh) | 一种视频生成方法、系统及电子设备 |
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 | ||
GR01 | Patent grant |