本发明涉及计算机领域,尤其涉及一种可移动装置的控制方法及系统。
背景技术:
搬运机器人并没有类似人类的感知器官,在布满货架的仓库中,需要对搬运机器人进行精确的导航控制,以免发生碰撞等事故。在搬运机器人的导航控制中,传统可以采用磁条进行连续导航,保持搬运机器人不偏离既定轨道运行。磁条所布置的位置限定了搬运机器人运行的路径,该方式虽然简单易行,但是一旦改变仓库布局,同时期望更改路径时工程会十分浩大,使得应用范围十分受限。
技术实现要素:
本发明的一个方面提供了一种可移动装置的控制方法,用于控制所述可移动装置在第一位置和第二位置之间的运动,包括:确定可移动装置的中心的位置,所述中心到可移动装置的左轮和右轮的距离相等;根据所述可移动装置的中心的位置、所述第一位置和所述第二位置的位置,确定所述可移动装置的行走路径;根据所述行走路径、所述可移动装置的中心速度和所述可移动装置的几何数据,确定所述可移动装置的左轮速度和右轮速度与所述中心速度之间的差值,所述中心速度是所述可移动装置的中心的运动速度;根据所述左轮速度和右轮速度与所述中心速度之间的差值,确定所述可移动装置的左轮速度和右轮速度;以及根据所述左轮速度和右轮速度对所述可移动装置的运动进行控制。
本发明的另一个方面提供了一种可移动装置的控制系统,用于控制所述可移动装置在第一位置和第二位置之间的运动,包括:处理器;以及存储器,存储有可执行指令,所述指令在被处理器执行时,使得处理器执行:确定可移动装置的中心的位置,所述中心到可移动装置的左轮和右轮的距离相等;根据所述可移动装置的中心的位置、所述第一位置和所述第二位置的位置,确定所述可移动装置的行走路径;根据所述行走路径、所述可移动装置的中心速度和所述可移动装置的几何数据,确定所述可移动装置的左轮速度和右轮速度与所述中心速度之间的差值,所述中心速度是所述可移动装置的中心的运动速度;根据所述左轮速度和右轮速度与所述中心速度之间的差值,确定所述可移动装置的左轮速度和右轮速度;以及根据所述左轮速度和右轮速度对所述可移动装置的运动进行控制。
本发明的另一个方面提供了一种可移动装置的控制系统,用于控制所述可移动装置在第一位置和第二位置之间的运动,包括:中心确定模块,确定可移动装置的中心的位置,所述中心到可移动装置的左轮和右轮的距离相等;路径确定模块,根据所述可移动装置的中心的位置、所述第一位置和所述第二位置的位置,确定所述可移动装置的行走路径;速度差值确定模块,根据所述行走路径、所述可移动装置的中心速度和所述可移动装置的几何数据,确定所述可移动装置的左轮速度和右轮速度与所述中心速度之间的差值,所述中心速度是所述可移动装置的中心的运动速度;左右轮速度确定模块,根据所述左轮速度和右轮速度与所述中心速度之间的差值,确定所述可移动装置的左轮速度和右轮速度;以及运动控制模块,根据所述左轮速度和右轮速度对所述可移动装置的运动进行控制。
本发明的另一个方面提供了一种计算机可读存储介质,其上存储有用于执行以下方法的指令:确定可移动装置的中心的位置,所述中心到可移动装置的左轮和右轮的距离相等;根据所述可移动装置的中心的位置、所述第一位置和所述第二位置的位置,确定所述可移动装置的行走路径;根据所述行走路径、所述可移动装置的中心速度和所述可移动装置的几何数据,确定所述可移动装置的左轮速度和右轮速度与所述中心速度之间的差值,所述中心速度是所述可移动装置的中心的运动速度;根据所述左轮速度和右轮速度与所述中心速度之间的差值,确定所述可移动装置的左轮速度和右轮速度;以及根据所述左轮速度和右轮速度对所述可移动装置的运动进行控制。
附图说明
图1示意性示出根据本发明实施例的可移动装置行走的原理示意图。
图2示意性示出了根据本发明实施例的可移动装置的控制方法的流程图。
图3示意性示出了根据本发明实施例的可移动装置的控制系统的框图。
图4示意性示出了根据本发明另一实施例的可移动装置的控制系统的框图。
具体实施方式
根据结合附图对本发明示例性实施例的以下详细描述,本发明的其它方面、优势和突出特征对于本领域技术人员将变得显而易见。
在本发明中,术语“包括”和“含有”及其派生词意为包括而非限制;术语“或”是包含性的,意为和/或。
在本说明书中,下述用于描述本发明原理的各种实施例知识说明,不应该以任何方式解释为限制发明的范围。参照附图的下述描述用于帮助全面理解由权利要求及其等同物限定的本发明的示例性实施例。下述描述包括多种具体细节来帮助理解,但这些细节应认为仅仅是示例性的。因此,本领域普通技术人员应认识到,在不背离本发明的范围和精神的情况下,可以对本文中描述的实施例进行多种改变和修改。此外,为了清楚和简洁起见,省略了公知功能和结构的描述。此外,贯穿附图,相同附图标记用于相似功能和操作。
附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。
因此,本公开的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本公开的技术可以采取存储有指令的计算机可读介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用。在本公开的上下文中,计算机可读介质可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,计算机可读介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。计算机可读介质的具体示例包括:磁存储装置,如磁带或硬盘(HDD);光存储装置,如光盘(CD-ROM);存储器,如随机存取存储器(RAM)或闪存;和/或有线/无线通信链路。
图1示意性示出根据本发明实施例的可移动装置行走的原理示意图。根据本发明的实施例,可移动装置可以是机器人或自动驾驶车辆。机器人例如可以是仓库中使用的搬运机器人。
如图1所示,点O和点Q分别表示已知的第一位置和第二位置,点P表示可移动装置的中心的当前位置。可移动装置可以是机器人或自动驾驶车辆,但不限于此。根据本发明的实施例,可移动装置可以包括至少左轮和右轮,可移动装置的中心是到左轮和右轮的距离相等的点。可移动装置的中心可以位于可移动装置上,也可以位于可移动装置之外。例如,根据本发明的实施例,可移动装置的中心可以是可移动装置的运动平面(例如,地面)上位于可移动装置下方的点。根据本发明的实施例,可移动装置的中心可以是可移动装置的左右轮触地点的连线中点。根据下面描述的方法,计算一条从点P到点Q的行走路径,用于控制可移动装置的中心从点P运动到点Q。
根据本发明的实施例,可移动装置的中心、点O、和点Q的连线平行于可移动装置的运动平面。下面,为了说明方便,假设可移动装置的中心、点O、和点Q都是可移动装置的运动平面(例如,地面)上的点。
如图1所示,以点O作为坐标系原点,点O和点Q之间的连线作为横轴(x轴);以经过原点并垂直于横轴的轴线作为纵轴(y轴),曲线表示计算得到的可移动装置的行走路径。
根据本发明的实施例,首先确定点P相对于点O的偏移,以根据位置已知的点O确定点P的位置。例如,可以通过可移动装置上的图像获取单元(例如,摄像头)获取在点O处布置的图片的图像,根据该图像确定点P相对于点O的偏移。根据本发明的实施例,可以在不同位置处布置不同的图片,例如不同的二维码图片。该图片可以设计为使得当点P相对于点O的位置不同时,获得的图像也是不同的。这样,就可以根据不同的图像来确定所述偏移。例如,可以事先遍历各种偏移状态,形成偏移与图像之间的映射表,然后根据查找该映射表来确定与获取的图像所对应的偏移。或者,也可以先获取点P与点O相对位置已知时的图像,例如点P与点O重合时的图像作为基准图像,将后来实时获取的图像与该基准图像比较,再根据可移动装置的几何数据来计算当前的偏移。根据本发明的实施例,P相对于点O的偏移可以以图1所示坐标系中的坐标(Δx,Δy)来表示,点O与点P的连线与y轴的夹角ΔA=arctan(Δx/Δy)。
在确定点P的位置之后,可以在点P和点Q之间拟合出一条曲线作为可移动装置的行走路径。该行走路径是可移动装置的中心点的行走路径。然后,根据该行走路径、可移动装置的中心的运动速度和可移动装置的几何数据,来对可移动装置的左轮速度和右轮速度进行控制,从而控制可移动装置的运动。
图2示意性示出了根据本发明实施例的可移动装置的控制方法的流程图。如上所述,所述可移动装置可以是机器人或自动驾驶车辆,本实施例的机器人使用搬运机器人,但不限于此。根据本实施例,控制可移动装置在第一位置和第二位置之间的运动。
该方法开始于步骤S200。
在步骤S201,确定搬运机器人的中心的位置,所述中心是到搬运机器人的左轮和右轮的距离相等的点。例如,搬运机器人的中心可以是以下任意之一:位于搬运机器人上;位于搬运机器人之外;位于搬运机器人的运动平面(例如,地面)上;或者搬运机器人的左右轮触地点的连线中点。下面,为了描述方便,假设搬运机器人的中心是搬运机器人的左右轮触地点的连线中点。
根据本发明的实施例,可以通过设置在搬运机器人上的摄像头扫描地面上布置的二维码图片,来确定其中心点的位置。例如,可以在地面上布置二维码图片的阵列,每个二维码图片互不相同并且其位置是已知的。这样,当摄像头扫描到例如第一位置的点O处的二维码图片时,就可以通过识别该二维码而知道其正位于点O附近。进一步地,可以根据上面参考图1描述的方法,使用扫描得到的二维码图片的图像得到搬运机器人的中心的当前位置点P相对于点O的偏移。
在步骤S202,确定搬运机器人的行走路径。参考图1所示,假设搬运机器人要从点P运动到已知的第二位置点Q。
以点O作为坐标系原点,点O和点Q之间的连线作为横轴(x轴);以经过原点并垂直于横轴的轴线作为纵轴(y轴),建立坐标系。然后,可以根据步骤S201确定的点P相对于点O的偏移,确定点P在该坐标系中的坐标(Δx,Δy),点O与点P的连线与y轴的夹角ΔA=arctan(Δx/Δy)。已知点Q与点O之间的距离为Δs,因此,点Q的坐标是(Δs,0)。在本实施例中,Δs=1400,因此点Q的坐标是(1400,0),如图1所示。
然后,可以在点P与点Q之间进行曲线拟合,所得到的曲线即为所述行走路径。所述插值算法可以是三次Hermite插值算法,具体如以下公式(1)所示:
其中,H3(x)就是搬运机器人的中心的行走路径。
根据本发明的实施例,也可以采用其他插值算法进行上述曲线拟合,例如Lagrange插值算法、Newton插值算法或分段插值算法等。
在步骤S203:确定所述搬运机器人的左轮速度和右轮速度与所述车体中心速度之间的差值。
上面计算得到了搬运机器人的中心的行走路径。要使搬运机器人沿着该行走路径运动,需要相应地计算搬运机器人的左轮速度和右轮速度与所述车体中心速度之间的差值,确定搬运机器人的左轮速度和右轮速度,并据此控制左右轮的运动。
根据本发明的实施例,可以把在步骤S202确定的行走路径分成多段圆弧,计算搬运机器人的中心经过每段圆弧时的旋转半径cycleR0,根据旋转半径cycleR0、搬运机器人的车体中心速度fCurVel、以及搬运机器人的左右轮间距vehicleRadius,就可以确定搬运机器人车体中心在经过每段圆弧时的左轮速度和右轮速度与所述车体中心速度之间的差值fDiffVel,如以下公式(2)所示:
fDiffVel=fCurVel×vehicleRadius÷cycleR0 (2)
根据本发明的实施例,可以每隔时间段t根据以下公式(3)计算搬运机器人的中心的横坐标xNew。
xNew=fCurVel×t+xOld (3)
式中,fCurVel为搬运机器人的中心在该时间段t期间的速度,xOld为上一次计算得到的横坐标。当搬运机器人的中心位于P点时,xOld=Δx。可以看出,xNew的计算是一个以Δx为初始值的迭代过程,每次计算的xOld都是上一次计算得到的xNew。这里,使用fCurVel来近似搬运机器人的中心沿x轴方向的速度。可以理解的是,t可以是预先设置的固定的值,但本发明并不限于此。
把上述xOld和xNew的值带入公式(1)得到对应的H3(xOld)和H3(xNew)的值,分别作为yOld和yNew。还可以得到H3(x)在xOld和xNew的导数值hyOld和hyNew。
接下来,根据以下公式(4)计算得到搬运机器人的中心在时间段t内经过圆弧的旋转半径cycleR0:
然后,就可以根据公式(2)确定搬运机器人车体中心在经过这段圆弧时的左轮速度和右轮速度与所述车体中心速度之间的差值fDiffVel。
在步骤S204,根据搬运机器人车体中心速度fCurVel和上述差值fDiffVel,确定搬运机器人的左轮速度VL和右轮速度VR,具体如以下公式(5)所示:
VL=fCurVel+fDiffVel
VR=fCurVel-fDiffVel (5)
在步骤S205,根据上述左轮速度和右轮速度就可以对搬运机器人的运动进行控制,即可实现在已知的第一位置和第二位置之间没有导航信息指导的情况下正确地盲走。
该方法在步骤S206结束。
根据本发明的实施例,可以在地面布置二维码图片的阵列。通过预先设计路线,可以确定可移动装置要经过的二维码图片序列。然后,根据上述方法控制可移动装置运动通过该二维码序列,即可实现可移动装置的导航。当要改变路线时,只需要相应地改变二维码序列即可,而无需重新对地面进行硬件铺设,显著降低了系统的运行和维护成本,并且极大方便了操作使用。
图3示意性示出了根据本发明实施例的可移动装置的控制系统300的框图。如上所述,所述可移动装置可以是机器人或自动驾驶车辆,本实施例的机器人使用搬运机器人,但不限于此。根据本实施例,控制系统300控制可移动装置在第一位置和第二位置之间的运动。
该系统300包括中心确定模块310、路径确定模块320、速度差值确定模块330、左右轮速度确定模块340和运动控制模块350。
中心确定模块310确定搬运机器人的中心的位置,所述中心是到搬运机器人的左轮和右轮的距离相等的点。例如,搬运机器人的中心可以是以下任意之一:位于搬运机器人上;位于搬运机器人之外;位于搬运机器人的运动平面(例如,地面)上;或者搬运机器人的左右轮触地点的连线中点。下面,为了描述方便,假设搬运机器人的中心是搬运机器人的左右轮触地点的连线中点。
根据本发明的实施例,可以通过设置在搬运机器人上的摄像头扫描地面上布置的二维码图片,来确定其中心点的位置。例如,可以在地面上布置二维码图片的阵列,每个二维码图片互不相同并且其位置是已知的。这样,当摄像头扫描到例如第一位置的点O处的二维码图片时,就可以通过识别该二维码而知道其正位于点O附近。进一步地,可以根据上面参考图1描述的方法,使用扫描得到的二维码图片的图像得到搬运机器人的中心的当前位置点P相对于点O的偏移。
路径确定模块320确定搬运机器人的行走路径。参考图1所示,假设搬运机器人要从点P运动到已知的第二位置点Q。
根据本发明的实施例,该模块可以包括坐标系模块321、坐标确定模块322和拟合模块323。
坐标系模块321根据点O和点Q建立坐标系。具体地,坐标系模块321以点O作为坐标系原点,点O和点Q之间的连线作为横轴(x轴);以经过原点并垂直于横轴的轴线作为纵轴(y轴),建立坐标系。
坐标确定模块322确定点P和点Q在上述坐标系中的坐标。具体地,坐标确定模块322根据中心确定模块310确定的点P相对于点O的偏移,确定点P在该坐标系中的坐标(Δx,Δy),点O与点P的连线与y轴的夹角ΔA=arctan(Δx/Δy)。已知点Q与点O之间的距离为Δs,因此,点Q的坐标是(Δs,0)。在本实施例中,Δs=1400,因此点Q的坐标是(1400,0),如图1所示。
拟合模块323采用插值算法在上述点P的位置和点Q的位置之间进行曲线拟合,所得到的曲线即为上述行走路径。具体地,拟合模块323根据坐标确定模块322得到的点P和点Q坐标可以在点P与点Q之间进行曲线拟合,所得到的曲线即为所述行走路径。所述插值算法可以是三次Hermite插值算法,具体如上述公式(1)所示,计算得到的H3(x)就是搬运机器人的中心的行走路径。
根据本发明的实施例,也可以采用其他插值算法进行上述曲线拟合,例如Lagrange插值算法、Newton插值算法或分段插值算法等。
速度差值确定模块330确定所述搬运机器人的左轮速度和右轮速度与所述车体中心速度之间的差值。
上面计算得到了搬运机器人的中心的行走路径。要使搬运机器人沿着该行走路径运动,需要相应地计算搬运机器人的左轮速度和右轮速度与所述车体中心速度之间的差值,并据此控制左右轮的运动。
根据本发明的实施例,速度差值确定模块330可以包括旋转半径确定模块331和差值计算模块332。
旋转半径确定模块331确定搬运机器人的中心经过上述行走路径的弧线的旋转半径。具体地,旋转半径确定模块331把在路径确定模块320确定的行走路径可以分成多段圆弧,计算搬运机器人的中心经过每段圆弧时的旋转半径cycleR0。
根据本发明的实施例,可以每隔时间段t根据上述公式(3)计算搬运机器人的中心的横坐标xNew。式中,fCurVel为搬运机器人的中心在该时间段t期间的速度,xOld为上一次计算得到的横坐标。当搬运机器人的中心位于P点时,xOld=Δx。可以看出,xNew的计算是一个以Δx为初始值的迭代过程,每次计算的xOld都是上一次计算得到的xNew。这里,使用fCurVel来近似搬运机器人的中心沿x轴方向的速度。可以理解的是,t可以是预先设置的固定的值,但本发明并不限于此。
把上述xOld和xNew的值带入公式(1)得到对应的H3(xOld)H3(xNew)的值,分别作为yOld和yNew。还可以得到H3(x)在xOld和xNew的导数值hyOld和hyNew。
接下来,根据上述公式(4)计算得到搬运机器人的中心在时间段t内经过圆弧的旋转半径cycleR0。
差值计算模块332根据上述搬运机器人的中心速度、弧线的旋转半径、以及搬运机器人的左右轮间距,确定搬运机器人的中心在经过弧线时的左轮速度和右轮速度与所述车体中心速度之间的差值。具体地,是根据旋转半径cycleR0、搬运机器人的车体中心速度fCurVel、以及搬运机器人的左右轮间距vehicleRadius,就可以确定搬运机器人车体中心在经过每段圆弧时的左轮速度和右轮速度与所述车体中心速度之间的差值fDiffVel,如上述公式(2)所示。
左右轮速度确定模块340根据上述左轮速度和右轮速度与所述车体中心速度之间的差值,确定所述搬运机器人的左轮速度和右轮速度,如上述公式(5)所示。
运动控制模块350根据上述左轮速度和右轮速度与所述车体中心的速度之间的差值fDiffVel就可以对搬运机器人的运动进行控制,即可实现在已知第一位置和第二位置之间没有导航信息指导的情况下正确地盲走。
可以理解的是,中心确定模块310、路径确定模块320、坐标系模块321、坐标确定模块322、拟合模块323、速度差值确定模块330、旋转半径确定模块331、差值计算模块332、左右轮速度确定模块340以及运动控制模块350中的任意多个模块可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本发明的实施例,中心确定模块310、路径确定模块320、坐标系模块321、坐标确定模块322、拟合模块323、速度差值确定模块330、旋转半径确定模块331、差值计算模块332、左右轮速度确定模块340以及运动控制模块350中的至少一项可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以以用于对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式的适当组合来实现。或者,中心确定模块310、路径确定模块320、坐标系模块321、坐标确定模块322、拟合模块323、速度差值确定模块330、旋转半径确定模块331、差值计算模块332、左右轮速度确定模块340以及运动控制模块350中的至少一项可以至少被部分地实现为计算机程序模块,当该程序被计算机运行时,可以执行相应模块的功能。
图4示意性示出了根据本发明另一个实施例的可移动装置的控制系统400的框图。如图所示,可移动装置的控制系统400包括处理器410,例如通用微处理器、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器410还可以包括用于缓存用途的板载存储器。处理器410可以是用于执行参考图2描述的根据本发明实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
可移动装置的控制系统400还可以包括具有非易失性或易失性存储器形式的至少一个可读存储介质420,例如可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,可读存储介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。可读存储介质的具体示例包括:磁存储装置,如磁带或硬盘(HDD);光存储装置,如光盘(CD-ROM);存储器,如随机存取存储器(RAM)或闪存;和/或有线/无线通信链路。
可读存储介质420包括计算机程序421,该计算机程序421包括代码/计算机可读指令,其在由处理器410执行时使得处理器410可以执行例如上面结合图2所描述的方法流程及其任何变形。
计算机程序421可被配置为具有例如包括计算机程序模块的计算机程序代码。例如,在示例实施例中,计算机程序421中的代码可以包括一个或多个程序模块,例如包括421A、模块421B、……模块421F。应当注意,模块的划分方式和个数并不是固定的,本领域技术人员可以根据实际情况使用合适的程序模块或程序模块组合,当这些程序模块组合被处理器410执行时,使得处理器410可以执行例如上面结合图2所描述的方法流程及其任何变形。
根据本发明的实施例,可移动装置的控制系统400还可以包括用于从其他实体接收信号的输入单元430、以及用于向其他实体提供信号的输出单元440。输入单元430和输出单元440可以被布置为单一实体或者是分离的实体。输入单元430可以接收例如图像获取单元发送的二维码图片的图像,输出单元440可以将动力控制信号发送到可移动装置的动力控制系统。动力控制信号可以是基于左轮和右轮速度与所述移动装置的中心速度之间的差值来对左轮和右轮进行控制的信号。这样,就可以对所述可移动装置的运动进行控制。
结合图3和图4所示,根据本发明的实施例,中心确定模块310、路径确定模块320、坐标系模块321、坐标确定模块322、拟合模块323、速度差值确定模块330、旋转半径确定模块331、差值计算模块332、左右轮速度确定模块340以及运动控制模块350可以实现为参考图4描述的计算机程序模块,其在被处理器410执行时,可以实现上面描述的相应操作。
尽管已经参照本发明的特定示例性实施例示出并描述了本发明,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本发明的精神和范围的情况下,可以对本发明进行形式和细节上的多种改变。因此,本发明的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。