本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,尤其涉及一種可移動(dòng)裝置的控制方法及系統(tǒng)。
背景技術(shù):
搬運(yùn)機(jī)器人并沒(méi)有類(lèi)似人類(lèi)的感知器官,在布滿(mǎn)貨架的倉(cāng)庫(kù)中,需要對(duì)搬運(yùn)機(jī)器人進(jìn)行精確的導(dǎo)航控制,以免發(fā)生碰撞等事故。在搬運(yùn)機(jī)器人的導(dǎo)航控制中,傳統(tǒng)可以采用磁條進(jìn)行連續(xù)導(dǎo)航,保持搬運(yùn)機(jī)器人不偏離既定軌道運(yùn)行。磁條所布置的位置限定了搬運(yùn)機(jī)器人運(yùn)行的路徑,該方式雖然簡(jiǎn)單易行,但是一旦改變倉(cāng)庫(kù)布局,同時(shí)期望更改路徑時(shí)工程會(huì)十分浩大,使得應(yīng)用范圍十分受限。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的一個(gè)方面提供了一種可移動(dòng)裝置的控制方法,用于控制所述可移動(dòng)裝置在第一位置和第二位置之間的運(yùn)動(dòng),包括:確定可移動(dòng)裝置的中心的位置,所述中心到可移動(dòng)裝置的左輪和右輪的距離相等;根據(jù)所述可移動(dòng)裝置的中心的位置、所述第一位置和所述第二位置的位置,確定所述可移動(dòng)裝置的行走路徑;根據(jù)所述行走路徑、所述可移動(dòng)裝置的中心速度和所述可移動(dòng)裝置的幾何數(shù)據(jù),確定所述可移動(dòng)裝置的左輪速度和右輪速度與所述中心速度之間的差值,所述中心速度是所述可移動(dòng)裝置的中心的運(yùn)動(dòng)速度;根據(jù)所述左輪速度和右輪速度與所述中心速度之間的差值,確定所述可移動(dòng)裝置的左輪速度和右輪速度;以及根據(jù)所述左輪速度和右輪速度對(duì)所述可移動(dòng)裝置的運(yùn)動(dòng)進(jìn)行控制。
本發(fā)明的另一個(gè)方面提供了一種可移動(dòng)裝置的控制系統(tǒng),用于控制所述可移動(dòng)裝置在第一位置和第二位置之間的運(yùn)動(dòng),包括:處理器;以及存儲(chǔ)器,存儲(chǔ)有可執(zhí)行指令,所述指令在被處理器執(zhí)行時(shí),使得處理器執(zhí)行:確定可移動(dòng)裝置的中心的位置,所述中心到可移動(dòng)裝置的左輪和右輪的距離相等;根據(jù)所述可移動(dòng)裝置的中心的位置、所述第一位置和所述第二位置的位置,確定所述可移動(dòng)裝置的行走路徑;根據(jù)所述行走路徑、所述可移動(dòng)裝置的中心速度和所述可移動(dòng)裝置的幾何數(shù)據(jù),確定所述可移動(dòng)裝置的左輪速度和右輪速度與所述中心速度之間的差值,所述中心速度是所述可移動(dòng)裝置的中心的運(yùn)動(dòng)速度;根據(jù)所述左輪速度和右輪速度與所述中心速度之間的差值,確定所述可移動(dòng)裝置的左輪速度和右輪速度;以及根據(jù)所述左輪速度和右輪速度對(duì)所述可移動(dòng)裝置的運(yùn)動(dòng)進(jìn)行控制。
本發(fā)明的另一個(gè)方面提供了一種可移動(dòng)裝置的控制系統(tǒng),用于控制所述可移動(dòng)裝置在第一位置和第二位置之間的運(yùn)動(dòng),包括:中心確定模塊,確定可移動(dòng)裝置的中心的位置,所述中心到可移動(dòng)裝置的左輪和右輪的距離相等;路徑確定模塊,根據(jù)所述可移動(dòng)裝置的中心的位置、所述第一位置和所述第二位置的位置,確定所述可移動(dòng)裝置的行走路徑;速度差值確定模塊,根據(jù)所述行走路徑、所述可移動(dòng)裝置的中心速度和所述可移動(dòng)裝置的幾何數(shù)據(jù),確定所述可移動(dòng)裝置的左輪速度和右輪速度與所述中心速度之間的差值,所述中心速度是所述可移動(dòng)裝置的中心的運(yùn)動(dòng)速度;左右輪速度確定模塊,根據(jù)所述左輪速度和右輪速度與所述中心速度之間的差值,確定所述可移動(dòng)裝置的左輪速度和右輪速度;以及運(yùn)動(dòng)控制模塊,根據(jù)所述左輪速度和右輪速度對(duì)所述可移動(dòng)裝置的運(yùn)動(dòng)進(jìn)行控制。
本發(fā)明的另一個(gè)方面提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有用于執(zhí)行以下方法的指令:確定可移動(dòng)裝置的中心的位置,所述中心到可移動(dòng)裝置的左輪和右輪的距離相等;根據(jù)所述可移動(dòng)裝置的中心的位置、所述第一位置和所述第二位置的位置,確定所述可移動(dòng)裝置的行走路徑;根據(jù)所述行走路徑、所述可移動(dòng)裝置的中心速度和所述可移動(dòng)裝置的幾何數(shù)據(jù),確定所述可移動(dòng)裝置的左輪速度和右輪速度與所述中心速度之間的差值,所述中心速度是所述可移動(dòng)裝置的中心的運(yùn)動(dòng)速度;根據(jù)所述左輪速度和右輪速度與所述中心速度之間的差值,確定所述可移動(dòng)裝置的左輪速度和右輪速度;以及根據(jù)所述左輪速度和右輪速度對(duì)所述可移動(dòng)裝置的運(yùn)動(dòng)進(jìn)行控制。
附圖說(shuō)明
圖1示意性示出根據(jù)本發(fā)明實(shí)施例的可移動(dòng)裝置行走的原理示意圖。
圖2示意性示出了根據(jù)本發(fā)明實(shí)施例的可移動(dòng)裝置的控制方法的流程圖。
圖3示意性示出了根據(jù)本發(fā)明實(shí)施例的可移動(dòng)裝置的控制系統(tǒng)的框圖。
圖4示意性示出了根據(jù)本發(fā)明另一實(shí)施例的可移動(dòng)裝置的控制系統(tǒng)的框圖。
具體實(shí)施方式
根據(jù)結(jié)合附圖對(duì)本發(fā)明示例性實(shí)施例的以下詳細(xì)描述,本發(fā)明的其它方面、優(yōu)勢(shì)和突出特征對(duì)于本領(lǐng)域技術(shù)人員將變得顯而易見(jiàn)。
在本發(fā)明中,術(shù)語(yǔ)“包括”和“含有”及其派生詞意為包括而非限制;術(shù)語(yǔ)“或”是包含性的,意為和/或。
在本說(shuō)明書(shū)中,下述用于描述本發(fā)明原理的各種實(shí)施例知識(shí)說(shuō)明,不應(yīng)該以任何方式解釋為限制發(fā)明的范圍。參照附圖的下述描述用于幫助全面理解由權(quán)利要求及其等同物限定的本發(fā)明的示例性實(shí)施例。下述描述包括多種具體細(xì)節(jié)來(lái)幫助理解,但這些細(xì)節(jié)應(yīng)認(rèn)為僅僅是示例性的。因此,本領(lǐng)域普通技術(shù)人員應(yīng)認(rèn)識(shí)到,在不背離本發(fā)明的范圍和精神的情況下,可以對(duì)本文中描述的實(shí)施例進(jìn)行多種改變和修改。此外,為了清楚和簡(jiǎn)潔起見(jiàn),省略了公知功能和結(jié)構(gòu)的描述。此外,貫穿附圖,相同附圖標(biāo)記用于相似功能和操作。
附圖中示出了一些方框圖和/或流程圖。應(yīng)理解,方框圖和/或流程圖中的一些方框或其組合可以由計(jì)算機(jī)程序指令來(lái)實(shí)現(xiàn)。這些計(jì)算機(jī)程序指令可以提供給通用計(jì)算機(jī)、專(zhuān)用計(jì)算機(jī)或其他可編程數(shù)據(jù)處理裝置的處理器,從而這些指令在由該處理器執(zhí)行時(shí)可以創(chuàng)建用于實(shí)現(xiàn)這些方框圖和/或流程圖中所說(shuō)明的功能/操作的裝置。
因此,本公開(kāi)的技術(shù)可以硬件和/或軟件(包括固件、微代碼等)的形式來(lái)實(shí)現(xiàn)。另外,本公開(kāi)的技術(shù)可以采取存儲(chǔ)有指令的計(jì)算機(jī)可讀介質(zhì)上的計(jì)算機(jī)程序產(chǎn)品的形式,該計(jì)算機(jī)程序產(chǎn)品可供指令執(zhí)行系統(tǒng)使用。在本公開(kāi)的上下文中,計(jì)算機(jī)可讀介質(zhì)可以是能夠包含、存儲(chǔ)、傳送、傳播或傳輸指令的任意介質(zhì)。例如,計(jì)算機(jī)可讀介質(zhì)可以包括但不限于電、磁、光、電磁、紅外或半導(dǎo)體系統(tǒng)、裝置、器件或傳播介質(zhì)。計(jì)算機(jī)可讀介質(zhì)的具體示例包括:磁存儲(chǔ)裝置,如磁帶或硬盤(pán)(HDD);光存儲(chǔ)裝置,如光盤(pán)(CD-ROM);存儲(chǔ)器,如隨機(jī)存取存儲(chǔ)器(RAM)或閃存;和/或有線/無(wú)線通信鏈路。
圖1示意性示出根據(jù)本發(fā)明實(shí)施例的可移動(dòng)裝置行走的原理示意圖。根據(jù)本發(fā)明的實(shí)施例,可移動(dòng)裝置可以是機(jī)器人或自動(dòng)駕駛車(chē)輛。機(jī)器人例如可以是倉(cāng)庫(kù)中使用的搬運(yùn)機(jī)器人。
如圖1所示,點(diǎn)O和點(diǎn)Q分別表示已知的第一位置和第二位置,點(diǎn)P表示可移動(dòng)裝置的中心的當(dāng)前位置??梢苿?dòng)裝置可以是機(jī)器人或自動(dòng)駕駛車(chē)輛,但不限于此。根據(jù)本發(fā)明的實(shí)施例,可移動(dòng)裝置可以包括至少左輪和右輪,可移動(dòng)裝置的中心是到左輪和右輪的距離相等的點(diǎn)??梢苿?dòng)裝置的中心可以位于可移動(dòng)裝置上,也可以位于可移動(dòng)裝置之外。例如,根據(jù)本發(fā)明的實(shí)施例,可移動(dòng)裝置的中心可以是可移動(dòng)裝置的運(yùn)動(dòng)平面(例如,地面)上位于可移動(dòng)裝置下方的點(diǎn)。根據(jù)本發(fā)明的實(shí)施例,可移動(dòng)裝置的中心可以是可移動(dòng)裝置的左右輪觸地點(diǎn)的連線中點(diǎn)。根據(jù)下面描述的方法,計(jì)算一條從點(diǎn)P到點(diǎn)Q的行走路徑,用于控制可移動(dòng)裝置的中心從點(diǎn)P運(yùn)動(dòng)到點(diǎn)Q。
根據(jù)本發(fā)明的實(shí)施例,可移動(dòng)裝置的中心、點(diǎn)O、和點(diǎn)Q的連線平行于可移動(dòng)裝置的運(yùn)動(dòng)平面。下面,為了說(shuō)明方便,假設(shè)可移動(dòng)裝置的中心、點(diǎn)O、和點(diǎn)Q都是可移動(dòng)裝置的運(yùn)動(dòng)平面(例如,地面)上的點(diǎn)。
如圖1所示,以點(diǎn)O作為坐標(biāo)系原點(diǎn),點(diǎn)O和點(diǎn)Q之間的連線作為橫軸(x軸);以經(jīng)過(guò)原點(diǎn)并垂直于橫軸的軸線作為縱軸(y軸),曲線表示計(jì)算得到的可移動(dòng)裝置的行走路徑。
根據(jù)本發(fā)明的實(shí)施例,首先確定點(diǎn)P相對(duì)于點(diǎn)O的偏移,以根據(jù)位置已知的點(diǎn)O確定點(diǎn)P的位置。例如,可以通過(guò)可移動(dòng)裝置上的圖像獲取單元(例如,攝像頭)獲取在點(diǎn)O處布置的圖片的圖像,根據(jù)該圖像確定點(diǎn)P相對(duì)于點(diǎn)O的偏移。根據(jù)本發(fā)明的實(shí)施例,可以在不同位置處布置不同的圖片,例如不同的二維碼圖片。該圖片可以設(shè)計(jì)為使得當(dāng)點(diǎn)P相對(duì)于點(diǎn)O的位置不同時(shí),獲得的圖像也是不同的。這樣,就可以根據(jù)不同的圖像來(lái)確定所述偏移。例如,可以事先遍歷各種偏移狀態(tài),形成偏移與圖像之間的映射表,然后根據(jù)查找該映射表來(lái)確定與獲取的圖像所對(duì)應(yīng)的偏移?;蛘撸部梢韵全@取點(diǎn)P與點(diǎn)O相對(duì)位置已知時(shí)的圖像,例如點(diǎn)P與點(diǎn)O重合時(shí)的圖像作為基準(zhǔn)圖像,將后來(lái)實(shí)時(shí)獲取的圖像與該基準(zhǔn)圖像比較,再根據(jù)可移動(dòng)裝置的幾何數(shù)據(jù)來(lái)計(jì)算當(dāng)前的偏移。根據(jù)本發(fā)明的實(shí)施例,P相對(duì)于點(diǎn)O的偏移可以以圖1所示坐標(biāo)系中的坐標(biāo)(Δx,Δy)來(lái)表示,點(diǎn)O與點(diǎn)P的連線與y軸的夾角ΔA=arctan(Δx/Δy)。
在確定點(diǎn)P的位置之后,可以在點(diǎn)P和點(diǎn)Q之間擬合出一條曲線作為可移動(dòng)裝置的行走路徑。該行走路徑是可移動(dòng)裝置的中心點(diǎn)的行走路徑。然后,根據(jù)該行走路徑、可移動(dòng)裝置的中心的運(yùn)動(dòng)速度和可移動(dòng)裝置的幾何數(shù)據(jù),來(lái)對(duì)可移動(dòng)裝置的左輪速度和右輪速度進(jìn)行控制,從而控制可移動(dòng)裝置的運(yùn)動(dòng)。
圖2示意性示出了根據(jù)本發(fā)明實(shí)施例的可移動(dòng)裝置的控制方法的流程圖。如上所述,所述可移動(dòng)裝置可以是機(jī)器人或自動(dòng)駕駛車(chē)輛,本實(shí)施例的機(jī)器人使用搬運(yùn)機(jī)器人,但不限于此。根據(jù)本實(shí)施例,控制可移動(dòng)裝置在第一位置和第二位置之間的運(yùn)動(dòng)。
該方法開(kāi)始于步驟S200。
在步驟S201,確定搬運(yùn)機(jī)器人的中心的位置,所述中心是到搬運(yùn)機(jī)器人的左輪和右輪的距離相等的點(diǎn)。例如,搬運(yùn)機(jī)器人的中心可以是以下任意之一:位于搬運(yùn)機(jī)器人上;位于搬運(yùn)機(jī)器人之外;位于搬運(yùn)機(jī)器人的運(yùn)動(dòng)平面(例如,地面)上;或者搬運(yùn)機(jī)器人的左右輪觸地點(diǎn)的連線中點(diǎn)。下面,為了描述方便,假設(shè)搬運(yùn)機(jī)器人的中心是搬運(yùn)機(jī)器人的左右輪觸地點(diǎn)的連線中點(diǎn)。
根據(jù)本發(fā)明的實(shí)施例,可以通過(guò)設(shè)置在搬運(yùn)機(jī)器人上的攝像頭掃描地面上布置的二維碼圖片,來(lái)確定其中心點(diǎn)的位置。例如,可以在地面上布置二維碼圖片的陣列,每個(gè)二維碼圖片互不相同并且其位置是已知的。這樣,當(dāng)攝像頭掃描到例如第一位置的點(diǎn)O處的二維碼圖片時(shí),就可以通過(guò)識(shí)別該二維碼而知道其正位于點(diǎn)O附近。進(jìn)一步地,可以根據(jù)上面參考圖1描述的方法,使用掃描得到的二維碼圖片的圖像得到搬運(yùn)機(jī)器人的中心的當(dāng)前位置點(diǎn)P相對(duì)于點(diǎn)O的偏移。
在步驟S202,確定搬運(yùn)機(jī)器人的行走路徑。參考圖1所示,假設(shè)搬運(yùn)機(jī)器人要從點(diǎn)P運(yùn)動(dòng)到已知的第二位置點(diǎn)Q。
以點(diǎn)O作為坐標(biāo)系原點(diǎn),點(diǎn)O和點(diǎn)Q之間的連線作為橫軸(x軸);以經(jīng)過(guò)原點(diǎn)并垂直于橫軸的軸線作為縱軸(y軸),建立坐標(biāo)系。然后,可以根據(jù)步驟S201確定的點(diǎn)P相對(duì)于點(diǎn)O的偏移,確定點(diǎn)P在該坐標(biāo)系中的坐標(biāo)(Δx,Δy),點(diǎn)O與點(diǎn)P的連線與y軸的夾角ΔA=arctan(Δx/Δy)。已知點(diǎn)Q與點(diǎn)O之間的距離為Δs,因此,點(diǎn)Q的坐標(biāo)是(Δs,0)。在本實(shí)施例中,Δs=1400,因此點(diǎn)Q的坐標(biāo)是(1400,0),如圖1所示。
然后,可以在點(diǎn)P與點(diǎn)Q之間進(jìn)行曲線擬合,所得到的曲線即為所述行走路徑。所述插值算法可以是三次Hermite插值算法,具體如以下公式(1)所示:
其中,H3(x)就是搬運(yùn)機(jī)器人的中心的行走路徑。
根據(jù)本發(fā)明的實(shí)施例,也可以采用其他插值算法進(jìn)行上述曲線擬合,例如Lagrange插值算法、Newton插值算法或分段插值算法等。
在步驟S203:確定所述搬運(yùn)機(jī)器人的左輪速度和右輪速度與所述車(chē)體中心速度之間的差值。
上面計(jì)算得到了搬運(yùn)機(jī)器人的中心的行走路徑。要使搬運(yùn)機(jī)器人沿著該行走路徑運(yùn)動(dòng),需要相應(yīng)地計(jì)算搬運(yùn)機(jī)器人的左輪速度和右輪速度與所述車(chē)體中心速度之間的差值,確定搬運(yùn)機(jī)器人的左輪速度和右輪速度,并據(jù)此控制左右輪的運(yùn)動(dòng)。
根據(jù)本發(fā)明的實(shí)施例,可以把在步驟S202確定的行走路徑分成多段圓弧,計(jì)算搬運(yùn)機(jī)器人的中心經(jīng)過(guò)每段圓弧時(shí)的旋轉(zhuǎn)半徑cycleR0,根據(jù)旋轉(zhuǎn)半徑cycleR0、搬運(yùn)機(jī)器人的車(chē)體中心速度f(wàn)CurVel、以及搬運(yùn)機(jī)器人的左右輪間距vehicleRadius,就可以確定搬運(yùn)機(jī)器人車(chē)體中心在經(jīng)過(guò)每段圓弧時(shí)的左輪速度和右輪速度與所述車(chē)體中心速度之間的差值fDiffVel,如以下公式(2)所示:
fDiffVel=fCurVel×vehicleRadius÷cycleR0 (2)
根據(jù)本發(fā)明的實(shí)施例,可以每隔時(shí)間段t根據(jù)以下公式(3)計(jì)算搬運(yùn)機(jī)器人的中心的橫坐標(biāo)xNew。
xNew=fCurVel×t+xOld (3)
式中,fCurVel為搬運(yùn)機(jī)器人的中心在該時(shí)間段t期間的速度,xOld為上一次計(jì)算得到的橫坐標(biāo)。當(dāng)搬運(yùn)機(jī)器人的中心位于P點(diǎn)時(shí),xOld=Δx??梢钥闯觯瑇New的計(jì)算是一個(gè)以Δx為初始值的迭代過(guò)程,每次計(jì)算的xOld都是上一次計(jì)算得到的xNew。這里,使用fCurVel來(lái)近似搬運(yùn)機(jī)器人的中心沿x軸方向的速度??梢岳斫獾氖?,t可以是預(yù)先設(shè)置的固定的值,但本發(fā)明并不限于此。
把上述xOld和xNew的值帶入公式(1)得到對(duì)應(yīng)的H3(xOld)和H3(xNew)的值,分別作為yOld和yNew。還可以得到H3(x)在xOld和xNew的導(dǎo)數(shù)值hyOld和hyNew。
接下來(lái),根據(jù)以下公式(4)計(jì)算得到搬運(yùn)機(jī)器人的中心在時(shí)間段t內(nèi)經(jīng)過(guò)圓弧的旋轉(zhuǎn)半徑cycleR0:
然后,就可以根據(jù)公式(2)確定搬運(yùn)機(jī)器人車(chē)體中心在經(jīng)過(guò)這段圓弧時(shí)的左輪速度和右輪速度與所述車(chē)體中心速度之間的差值fDiffVel。
在步驟S204,根據(jù)搬運(yùn)機(jī)器人車(chē)體中心速度f(wàn)CurVel和上述差值fDiffVel,確定搬運(yùn)機(jī)器人的左輪速度VL和右輪速度VR,具體如以下公式(5)所示:
VL=fCurVel+fDiffVel
VR=fCurVel-fDiffVel (5)
在步驟S205,根據(jù)上述左輪速度和右輪速度就可以對(duì)搬運(yùn)機(jī)器人的運(yùn)動(dòng)進(jìn)行控制,即可實(shí)現(xiàn)在已知的第一位置和第二位置之間沒(méi)有導(dǎo)航信息指導(dǎo)的情況下正確地盲走。
該方法在步驟S206結(jié)束。
根據(jù)本發(fā)明的實(shí)施例,可以在地面布置二維碼圖片的陣列。通過(guò)預(yù)先設(shè)計(jì)路線,可以確定可移動(dòng)裝置要經(jīng)過(guò)的二維碼圖片序列。然后,根據(jù)上述方法控制可移動(dòng)裝置運(yùn)動(dòng)通過(guò)該二維碼序列,即可實(shí)現(xiàn)可移動(dòng)裝置的導(dǎo)航。當(dāng)要改變路線時(shí),只需要相應(yīng)地改變二維碼序列即可,而無(wú)需重新對(duì)地面進(jìn)行硬件鋪設(shè),顯著降低了系統(tǒng)的運(yùn)行和維護(hù)成本,并且極大方便了操作使用。
圖3示意性示出了根據(jù)本發(fā)明實(shí)施例的可移動(dòng)裝置的控制系統(tǒng)300的框圖。如上所述,所述可移動(dòng)裝置可以是機(jī)器人或自動(dòng)駕駛車(chē)輛,本實(shí)施例的機(jī)器人使用搬運(yùn)機(jī)器人,但不限于此。根據(jù)本實(shí)施例,控制系統(tǒng)300控制可移動(dòng)裝置在第一位置和第二位置之間的運(yùn)動(dòng)。
該系統(tǒng)300包括中心確定模塊310、路徑確定模塊320、速度差值確定模塊330、左右輪速度確定模塊340和運(yùn)動(dòng)控制模塊350。
中心確定模塊310確定搬運(yùn)機(jī)器人的中心的位置,所述中心是到搬運(yùn)機(jī)器人的左輪和右輪的距離相等的點(diǎn)。例如,搬運(yùn)機(jī)器人的中心可以是以下任意之一:位于搬運(yùn)機(jī)器人上;位于搬運(yùn)機(jī)器人之外;位于搬運(yùn)機(jī)器人的運(yùn)動(dòng)平面(例如,地面)上;或者搬運(yùn)機(jī)器人的左右輪觸地點(diǎn)的連線中點(diǎn)。下面,為了描述方便,假設(shè)搬運(yùn)機(jī)器人的中心是搬運(yùn)機(jī)器人的左右輪觸地點(diǎn)的連線中點(diǎn)。
根據(jù)本發(fā)明的實(shí)施例,可以通過(guò)設(shè)置在搬運(yùn)機(jī)器人上的攝像頭掃描地面上布置的二維碼圖片,來(lái)確定其中心點(diǎn)的位置。例如,可以在地面上布置二維碼圖片的陣列,每個(gè)二維碼圖片互不相同并且其位置是已知的。這樣,當(dāng)攝像頭掃描到例如第一位置的點(diǎn)O處的二維碼圖片時(shí),就可以通過(guò)識(shí)別該二維碼而知道其正位于點(diǎn)O附近。進(jìn)一步地,可以根據(jù)上面參考圖1描述的方法,使用掃描得到的二維碼圖片的圖像得到搬運(yùn)機(jī)器人的中心的當(dāng)前位置點(diǎn)P相對(duì)于點(diǎn)O的偏移。
路徑確定模塊320確定搬運(yùn)機(jī)器人的行走路徑。參考圖1所示,假設(shè)搬運(yùn)機(jī)器人要從點(diǎn)P運(yùn)動(dòng)到已知的第二位置點(diǎn)Q。
根據(jù)本發(fā)明的實(shí)施例,該模塊可以包括坐標(biāo)系模塊321、坐標(biāo)確定模塊322和擬合模塊323。
坐標(biāo)系模塊321根據(jù)點(diǎn)O和點(diǎn)Q建立坐標(biāo)系。具體地,坐標(biāo)系模塊321以點(diǎn)O作為坐標(biāo)系原點(diǎn),點(diǎn)O和點(diǎn)Q之間的連線作為橫軸(x軸);以經(jīng)過(guò)原點(diǎn)并垂直于橫軸的軸線作為縱軸(y軸),建立坐標(biāo)系。
坐標(biāo)確定模塊322確定點(diǎn)P和點(diǎn)Q在上述坐標(biāo)系中的坐標(biāo)。具體地,坐標(biāo)確定模塊322根據(jù)中心確定模塊310確定的點(diǎn)P相對(duì)于點(diǎn)O的偏移,確定點(diǎn)P在該坐標(biāo)系中的坐標(biāo)(Δx,Δy),點(diǎn)O與點(diǎn)P的連線與y軸的夾角ΔA=arctan(Δx/Δy)。已知點(diǎn)Q與點(diǎn)O之間的距離為Δs,因此,點(diǎn)Q的坐標(biāo)是(Δs,0)。在本實(shí)施例中,Δs=1400,因此點(diǎn)Q的坐標(biāo)是(1400,0),如圖1所示。
擬合模塊323采用插值算法在上述點(diǎn)P的位置和點(diǎn)Q的位置之間進(jìn)行曲線擬合,所得到的曲線即為上述行走路徑。具體地,擬合模塊323根據(jù)坐標(biāo)確定模塊322得到的點(diǎn)P和點(diǎn)Q坐標(biāo)可以在點(diǎn)P與點(diǎn)Q之間進(jìn)行曲線擬合,所得到的曲線即為所述行走路徑。所述插值算法可以是三次Hermite插值算法,具體如上述公式(1)所示,計(jì)算得到的H3(x)就是搬運(yùn)機(jī)器人的中心的行走路徑。
根據(jù)本發(fā)明的實(shí)施例,也可以采用其他插值算法進(jìn)行上述曲線擬合,例如Lagrange插值算法、Newton插值算法或分段插值算法等。
速度差值確定模塊330確定所述搬運(yùn)機(jī)器人的左輪速度和右輪速度與所述車(chē)體中心速度之間的差值。
上面計(jì)算得到了搬運(yùn)機(jī)器人的中心的行走路徑。要使搬運(yùn)機(jī)器人沿著該行走路徑運(yùn)動(dòng),需要相應(yīng)地計(jì)算搬運(yùn)機(jī)器人的左輪速度和右輪速度與所述車(chē)體中心速度之間的差值,并據(jù)此控制左右輪的運(yùn)動(dòng)。
根據(jù)本發(fā)明的實(shí)施例,速度差值確定模塊330可以包括旋轉(zhuǎn)半徑確定模塊331和差值計(jì)算模塊332。
旋轉(zhuǎn)半徑確定模塊331確定搬運(yùn)機(jī)器人的中心經(jīng)過(guò)上述行走路徑的弧線的旋轉(zhuǎn)半徑。具體地,旋轉(zhuǎn)半徑確定模塊331把在路徑確定模塊320確定的行走路徑可以分成多段圓弧,計(jì)算搬運(yùn)機(jī)器人的中心經(jīng)過(guò)每段圓弧時(shí)的旋轉(zhuǎn)半徑cycleR0。
根據(jù)本發(fā)明的實(shí)施例,可以每隔時(shí)間段t根據(jù)上述公式(3)計(jì)算搬運(yùn)機(jī)器人的中心的橫坐標(biāo)xNew。式中,fCurVel為搬運(yùn)機(jī)器人的中心在該時(shí)間段t期間的速度,xOld為上一次計(jì)算得到的橫坐標(biāo)。當(dāng)搬運(yùn)機(jī)器人的中心位于P點(diǎn)時(shí),xOld=Δx??梢钥闯觯瑇New的計(jì)算是一個(gè)以Δx為初始值的迭代過(guò)程,每次計(jì)算的xOld都是上一次計(jì)算得到的xNew。這里,使用fCurVel來(lái)近似搬運(yùn)機(jī)器人的中心沿x軸方向的速度??梢岳斫獾氖?,t可以是預(yù)先設(shè)置的固定的值,但本發(fā)明并不限于此。
把上述xOld和xNew的值帶入公式(1)得到對(duì)應(yīng)的H3(xOld)H3(xNew)的值,分別作為yOld和yNew。還可以得到H3(x)在xOld和xNew的導(dǎo)數(shù)值hyOld和hyNew。
接下來(lái),根據(jù)上述公式(4)計(jì)算得到搬運(yùn)機(jī)器人的中心在時(shí)間段t內(nèi)經(jīng)過(guò)圓弧的旋轉(zhuǎn)半徑cycleR0。
差值計(jì)算模塊332根據(jù)上述搬運(yùn)機(jī)器人的中心速度、弧線的旋轉(zhuǎn)半徑、以及搬運(yùn)機(jī)器人的左右輪間距,確定搬運(yùn)機(jī)器人的中心在經(jīng)過(guò)弧線時(shí)的左輪速度和右輪速度與所述車(chē)體中心速度之間的差值。具體地,是根據(jù)旋轉(zhuǎn)半徑cycleR0、搬運(yùn)機(jī)器人的車(chē)體中心速度f(wàn)CurVel、以及搬運(yùn)機(jī)器人的左右輪間距vehicleRadius,就可以確定搬運(yùn)機(jī)器人車(chē)體中心在經(jīng)過(guò)每段圓弧時(shí)的左輪速度和右輪速度與所述車(chē)體中心速度之間的差值fDiffVel,如上述公式(2)所示。
左右輪速度確定模塊340根據(jù)上述左輪速度和右輪速度與所述車(chē)體中心速度之間的差值,確定所述搬運(yùn)機(jī)器人的左輪速度和右輪速度,如上述公式(5)所示。
運(yùn)動(dòng)控制模塊350根據(jù)上述左輪速度和右輪速度與所述車(chē)體中心的速度之間的差值fDiffVel就可以對(duì)搬運(yùn)機(jī)器人的運(yùn)動(dòng)進(jìn)行控制,即可實(shí)現(xiàn)在已知第一位置和第二位置之間沒(méi)有導(dǎo)航信息指導(dǎo)的情況下正確地盲走。
可以理解的是,中心確定模塊310、路徑確定模塊320、坐標(biāo)系模塊321、坐標(biāo)確定模塊322、擬合模塊323、速度差值確定模塊330、旋轉(zhuǎn)半徑確定模塊331、差值計(jì)算模塊332、左右輪速度確定模塊340以及運(yùn)動(dòng)控制模塊350中的任意多個(gè)模塊可以合并在一個(gè)模塊中實(shí)現(xiàn),或者其中的任意一個(gè)模塊可以被拆分成多個(gè)模塊?;蛘?,這些模塊中的一個(gè)或多個(gè)模塊的至少部分功能可以與其他模塊的至少部分功能相結(jié)合,并在一個(gè)模塊中實(shí)現(xiàn)。根據(jù)本發(fā)明的實(shí)施例,中心確定模塊310、路徑確定模塊320、坐標(biāo)系模塊321、坐標(biāo)確定模塊322、擬合模塊323、速度差值確定模塊330、旋轉(zhuǎn)半徑確定模塊331、差值計(jì)算模塊332、左右輪速度確定模塊340以及運(yùn)動(dòng)控制模塊350中的至少一項(xiàng)可以至少被部分地實(shí)現(xiàn)為硬件電路,例如現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)、可編程邏輯陣列(PLA)、片上系統(tǒng)、基板上的系統(tǒng)、封裝上的系統(tǒng)、專(zhuān)用集成電路(ASIC),或可以以用于對(duì)電路進(jìn)行集成或封裝的任何其他的合理方式等硬件或固件來(lái)實(shí)現(xiàn),或以軟件、硬件以及固件三種實(shí)現(xiàn)方式的適當(dāng)組合來(lái)實(shí)現(xiàn)。或者,中心確定模塊310、路徑確定模塊320、坐標(biāo)系模塊321、坐標(biāo)確定模塊322、擬合模塊323、速度差值確定模塊330、旋轉(zhuǎn)半徑確定模塊331、差值計(jì)算模塊332、左右輪速度確定模塊340以及運(yùn)動(dòng)控制模塊350中的至少一項(xiàng)可以至少被部分地實(shí)現(xiàn)為計(jì)算機(jī)程序模塊,當(dāng)該程序被計(jì)算機(jī)運(yùn)行時(shí),可以執(zhí)行相應(yīng)模塊的功能。
圖4示意性示出了根據(jù)本發(fā)明另一個(gè)實(shí)施例的可移動(dòng)裝置的控制系統(tǒng)400的框圖。如圖所示,可移動(dòng)裝置的控制系統(tǒng)400包括處理器410,例如通用微處理器、指令集處理器和/或相關(guān)芯片組和/或?qū)S梦⑻幚砥?例如,專(zhuān)用集成電路(ASIC)),等等。處理器410還可以包括用于緩存用途的板載存儲(chǔ)器。處理器410可以是用于執(zhí)行參考圖2描述的根據(jù)本發(fā)明實(shí)施例的方法流程的不同動(dòng)作的單一處理單元或者是多個(gè)處理單元。
可移動(dòng)裝置的控制系統(tǒng)400還可以包括具有非易失性或易失性存儲(chǔ)器形式的至少一個(gè)可讀存儲(chǔ)介質(zhì)420,例如可以是能夠包含、存儲(chǔ)、傳送、傳播或傳輸指令的任意介質(zhì)。例如,可讀存儲(chǔ)介質(zhì)可以包括但不限于電、磁、光、電磁、紅外或半導(dǎo)體系統(tǒng)、裝置、器件或傳播介質(zhì)??勺x存儲(chǔ)介質(zhì)的具體示例包括:磁存儲(chǔ)裝置,如磁帶或硬盤(pán)(HDD);光存儲(chǔ)裝置,如光盤(pán)(CD-ROM);存儲(chǔ)器,如隨機(jī)存取存儲(chǔ)器(RAM)或閃存;和/或有線/無(wú)線通信鏈路。
可讀存儲(chǔ)介質(zhì)420包括計(jì)算機(jī)程序421,該計(jì)算機(jī)程序421包括代碼/計(jì)算機(jī)可讀指令,其在由處理器410執(zhí)行時(shí)使得處理器410可以執(zhí)行例如上面結(jié)合圖2所描述的方法流程及其任何變形。
計(jì)算機(jī)程序421可被配置為具有例如包括計(jì)算機(jī)程序模塊的計(jì)算機(jī)程序代碼。例如,在示例實(shí)施例中,計(jì)算機(jī)程序421中的代碼可以包括一個(gè)或多個(gè)程序模塊,例如包括421A、模塊421B、……模塊421F。應(yīng)當(dāng)注意,模塊的劃分方式和個(gè)數(shù)并不是固定的,本領(lǐng)域技術(shù)人員可以根據(jù)實(shí)際情況使用合適的程序模塊或程序模塊組合,當(dāng)這些程序模塊組合被處理器410執(zhí)行時(shí),使得處理器410可以執(zhí)行例如上面結(jié)合圖2所描述的方法流程及其任何變形。
根據(jù)本發(fā)明的實(shí)施例,可移動(dòng)裝置的控制系統(tǒng)400還可以包括用于從其他實(shí)體接收信號(hào)的輸入單元430、以及用于向其他實(shí)體提供信號(hào)的輸出單元440。輸入單元430和輸出單元440可以被布置為單一實(shí)體或者是分離的實(shí)體。輸入單元430可以接收例如圖像獲取單元發(fā)送的二維碼圖片的圖像,輸出單元440可以將動(dòng)力控制信號(hào)發(fā)送到可移動(dòng)裝置的動(dòng)力控制系統(tǒng)。動(dòng)力控制信號(hào)可以是基于左輪和右輪速度與所述移動(dòng)裝置的中心速度之間的差值來(lái)對(duì)左輪和右輪進(jìn)行控制的信號(hào)。這樣,就可以對(duì)所述可移動(dòng)裝置的運(yùn)動(dòng)進(jìn)行控制。
結(jié)合圖3和圖4所示,根據(jù)本發(fā)明的實(shí)施例,中心確定模塊310、路徑確定模塊320、坐標(biāo)系模塊321、坐標(biāo)確定模塊322、擬合模塊323、速度差值確定模塊330、旋轉(zhuǎn)半徑確定模塊331、差值計(jì)算模塊332、左右輪速度確定模塊340以及運(yùn)動(dòng)控制模塊350可以實(shí)現(xiàn)為參考圖4描述的計(jì)算機(jī)程序模塊,其在被處理器410執(zhí)行時(shí),可以實(shí)現(xiàn)上面描述的相應(yīng)操作。
盡管已經(jīng)參照本發(fā)明的特定示例性實(shí)施例示出并描述了本發(fā)明,但是本領(lǐng)域技術(shù)人員應(yīng)該理解,在不背離所附權(quán)利要求及其等同物限定的本發(fā)明的精神和范圍的情況下,可以對(duì)本發(fā)明進(jìn)行形式和細(xì)節(jié)上的多種改變。因此,本發(fā)明的范圍不應(yīng)該限于上述實(shí)施例,而是應(yīng)該不僅由所附權(quán)利要求來(lái)進(jìn)行確定,還由所附權(quán)利要求的等同物來(lái)進(jìn)行限定。