本發(fā)明涉及機器人技術(shù)領(lǐng)域,尤其涉及機器人的動作控制方法和裝置。
背景技術(shù):
機器人編程是指為使機器人完成某種任務(wù)而設(shè)置的動作順序描述。機器人運動和作業(yè)的指令都是由程序進行控制,常見的編制方法有兩種:示教編程方法和離線編程方法。其中示教編程方法包括示教、編輯和軌跡再現(xiàn),可以通過示教盒示教和導(dǎo)引式示教兩種途徑實現(xiàn)。離線編程方法是利用計算機圖形學(xué)成果,借助圖形處理工具建立幾何模型,通過一些規(guī)劃算法來獲取作業(yè)規(guī)劃軌跡。
目前,機器人動作編程一般基于pc平臺,編程人員需要比較專業(yè)的三維動畫知識和技術(shù)背景,特別是需要結(jié)合人體力學(xué)和機器人的關(guān)節(jié)自由度進行編程,比較難掌握,動作的準(zhǔn)確度會受到編程人員技術(shù)水平的影響,還容易出現(xiàn)某些動作不自然、不流暢的情況。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于提出機器人的動作控制方法和裝置,能夠讓機器人直接模擬人的動作,不需要對機器人舵機進行編程。
為達(dá)此目的,本發(fā)明采用以下技術(shù)方案:
一方面,本發(fā)明提供一種機器人動作的控制方法,包括:
利用深度傳感器的三維坐標(biāo)系,按幀采集人體的骨骼節(jié)點的三維坐標(biāo);
根據(jù)所述三維坐標(biāo),通過空間向量算法計算出所述骨骼節(jié)點的角度;
將所述角度以指令的形式發(fā)送給機器人,使機器人根據(jù)所述指令中的所述角度執(zhí)行相應(yīng)的動作。
其中,根據(jù)所述三維坐標(biāo),通過空間向量算法計算出所述骨骼節(jié)點的角度,包括:
若所述骨骼節(jié)點為第一關(guān)節(jié),則取與所述第一關(guān)節(jié)相鄰且遠(yuǎn)離軀干的骨骼節(jié)點為第二關(guān)節(jié);
所述第一關(guān)節(jié)與所述第二關(guān)節(jié)連接組成第一肢體;
根據(jù)所述三維坐標(biāo),通過空間向量算法計算所述第一肢體在水平面上的運動角度和在豎直面上的運動角度。
其中,根據(jù)所述三維坐標(biāo),通過空間向量算法計算所述第一肢體在水平面上的運動角度和在豎直面上的運動角度,包括:
根據(jù)所述第一關(guān)節(jié)的三維坐標(biāo)和所述第二關(guān)節(jié)的三維坐標(biāo),將所述第一肢體表示為第一向量;
計算所述第一向量與所述三維坐標(biāo)系的y軸的夾角,作為所述第一肢體在豎直面上的運動角度;
計算所述第一向量與所述三維坐標(biāo)系的z軸的夾角,作為所述第一肢體在水平面上的運動角度。
進一步的,根據(jù)所述三維坐標(biāo),通過空間向量算法計算出所述骨骼節(jié)點的角度,還包括:
若所述骨骼節(jié)點為第二關(guān)節(jié),則取與所述第二關(guān)節(jié)相鄰且遠(yuǎn)離軀干的骨骼節(jié)點為第三關(guān)節(jié);
所述第二關(guān)節(jié)與所述第三關(guān)節(jié)連接組成第二肢體;
根據(jù)所述三維坐標(biāo),通過空間向量算法計算所述第一肢體與所述第二肢體之間的夾角。
其中,根據(jù)所述三維坐標(biāo),通過空間向量算法計算所述第一肢體與所述第二肢體之間的夾角,包括:
根據(jù)所述第一關(guān)節(jié)的三維坐標(biāo)、所述第二關(guān)節(jié)的三維坐標(biāo)和所述第三關(guān)節(jié)的三維坐標(biāo),將所述第一肢體表示為第一向量,將所述第二肢體表示為第二向量;
計算所述第一向量與所述第二向量之間的夾角,即為所述第一肢體與所述第二肢體之間的夾角。
進一步的,利用深度傳感器按幀采集人體的骨骼節(jié)點的三維坐標(biāo)之后,還包括:
根據(jù)所述骨骼關(guān)節(jié)在一幀中的位移,計算所述骨骼節(jié)點的運動速度;
將所述運動速度以指令的形式發(fā)送給機器人,使機器人根據(jù)所述指令中的所述運動速度執(zhí)行相應(yīng)的動作。
其中,根據(jù)所述骨骼關(guān)節(jié)在一幀中的位移,計算所述骨骼節(jié)點的運動速度,包括:
以所述骨骼關(guān)節(jié)在上一幀的三維坐標(biāo)為初態(tài)位置;
以所述骨骼關(guān)節(jié)在當(dāng)前幀的三維坐標(biāo)為末態(tài)位置;
所述位移為所述末態(tài)位置到所述初態(tài)位置的距離;
所述骨骼節(jié)點的運動速度=位移/每一幀的時間長度。
第二方面,本發(fā)明提供一種機器人動作的控制方法,包括:
按幀接收包括各骨骼節(jié)點的角度的指令;
根據(jù)所述指令中的所述角度執(zhí)行相應(yīng)的動作。
第三方面,本發(fā)明提供一種機器人動作的控制裝置,包括:
深度傳感器,用于按幀采集人體的骨骼節(jié)點的三維坐標(biāo);
微處理器,用于通過空間向量算法計算出所述骨骼節(jié)點的角度;
網(wǎng)絡(luò)通信設(shè)備,用于將所述角度以指令的形式發(fā)送給機器人,使機器人根據(jù)所述指令中的所述角度執(zhí)行相應(yīng)的動作。
第四方面,本發(fā)明提供一種機器人動作的控制裝置,包括:
指令接收模塊,用于按幀接收包括了各骨骼節(jié)點的角度的指令;
動作執(zhí)行模塊,用于根據(jù)所述指令中的所述角度執(zhí)行相應(yīng)的動作。
本發(fā)明的有益效果為:
本發(fā)明利用深度傳感器,按幀采集人體動作過程中的各骨骼節(jié)點的三維坐標(biāo),通過空間向量算法,可計算出骨骼節(jié)點的運動的角度,將這些角度通過指令發(fā)送給機器人,機器人舵機就能根據(jù)這些角度執(zhí)行相應(yīng)的動作,使機器人能夠模仿、復(fù)制人的動作,不需要編程人員單獨對每個舵機進行三維動畫編程;并且一秒之內(nèi)包括了若干幀的指令,機器人的動作更準(zhǔn)確、流暢。
附圖說明
圖1是本發(fā)明實施例一中機器人動作的控制方法的流程圖。
圖2是本發(fā)明實施例一中機器人的骨骼節(jié)點示意圖。
圖3是本發(fā)明實施例二中機器人動作的控制方法的流程圖。
圖4是本發(fā)明實施例三中機器人動作的控制裝置的結(jié)構(gòu)示意圖。
圖5是本發(fā)明實施例四中機器人動作的控制裝置的結(jié)構(gòu)示意圖。
具體實施方式
為使本發(fā)明解決的技術(shù)問題、采用的技術(shù)方案和達(dá)到的技術(shù)效果更加清楚,下面將結(jié)合附圖對本發(fā)明實施例的技術(shù)方案作進一步的詳細(xì)描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。
實施例一
本實施例提供一種機器人動作的控制方法,用于采集人的動作供機器人模仿、復(fù)制,通常由一種機器人動作的控制裝置來執(zhí)行,該裝置由軟件和/或硬件實現(xiàn),一般集成于計算機及其輔助設(shè)備。
如圖1所示,所述機器人動作的控制方法包括如下步驟:
s11,利用深度傳感器,按幀采集人體的骨骼節(jié)點的三維坐標(biāo)。
深度傳感器一般為cmos紅外傳感器(紅外攝像頭),通過紅外線成像,將其視野內(nèi)的圖像通過黑白光譜的形式表示,形成一幅景深圖像,純黑代表無窮遠(yuǎn),純白代表無窮近,不同灰度對應(yīng)了物體到傳感器的不同距離。深度傳感器捕捉景深圖像中移動的人體,將人體與背景分隔開,并分辨出人體不同部位;針對人體進行骨架綁定,追蹤各骨骼節(jié)點的位置,通過計算后得出各骨骼節(jié)點的坐標(biāo)。深度傳感器的三維坐標(biāo)系中,人面對深度傳感器,豎直向上的方向為y軸正方向,水平向右的方向為x軸正方向,水平向后的方向為z軸正方向。
要進行動作采集的人位于深度傳感器的紅外攝像頭前,在其視野范圍內(nèi),將需要機器人完成的動作示范一遍,深度傳感器按幀采集景深圖像,追蹤并計算出人體的骨骼節(jié)點的三維坐標(biāo)。
s12,根據(jù)所述三維坐標(biāo),通過空間向量算法計算出所述骨骼節(jié)點的角度。
圖2是本發(fā)明實施例一中機器人的骨骼節(jié)點示意圖。如圖2所示,所述第一關(guān)節(jié)101為肩關(guān)節(jié)或髖關(guān)節(jié),所述第二關(guān)節(jié)102為肘關(guān)節(jié)或膝關(guān)節(jié),所述第一肢體111為上臂或大腿;深度傳感器的三維坐標(biāo)系如圖2中xyz。
若所述骨骼節(jié)點為第一關(guān)節(jié)101,則取與所述第一關(guān)節(jié)101相鄰且遠(yuǎn)離軀干的骨骼節(jié)點為第二關(guān)節(jié)102;所述第一關(guān)節(jié)101與所述第二關(guān)節(jié)102連接組成第一肢體111;根據(jù)所述三維坐標(biāo),通過空間向量算法計算所述第一肢體111在水平面上的運動角度β和在豎直面上的運動角度α。
所述第一關(guān)節(jié)101的三維坐標(biāo)為a(x1,y1,z1),所述第二關(guān)節(jié)102的三維坐標(biāo)為b(x2,y2,z2),則所述第一肢體111表示為向量
取z軸的單位向量
第一肢體111在水平面上的運動角度和在豎直面上的運動角度決定了第一肢體111在三維空間中的位置。并且可以從所述第二關(guān)節(jié)102的y坐標(biāo)的變化得知所述第一肢體111的運動狀態(tài),若y坐標(biāo)值增大,則表示所述第一肢體111為向上抬,若y坐標(biāo)值減小,則表示所述第一肢體111為向下擺。
或者,將所述第一肢體111投影到y(tǒng)oz平面上,該投影與z軸負(fù)方向的夾角為第一肢體111在豎直方向上的運動角度;將所述第一肢體111投影到xoz平面上,該投影與x軸正方向的夾角為第一肢體111在水平方向上的運動角度。
若所述骨骼節(jié)點為第二關(guān)節(jié)102,則取與所述第二關(guān)節(jié)102相鄰且遠(yuǎn)離軀干的骨骼節(jié)點為第三關(guān)節(jié)103;所述第二關(guān)節(jié)102與所述第三關(guān)節(jié)103連接組成第二肢體112;根據(jù)所述三維坐標(biāo),通過空間向量算法計算所述第一肢體111與所述第二肢體112之間的夾角γ。如圖2所示,第三關(guān)節(jié)103為腕關(guān)節(jié)或踝關(guān)節(jié),第二肢體112為前臂或小腿。
所述第一關(guān)節(jié)101的三維坐標(biāo)為a(x1,y1,z1),所述第二關(guān)節(jié)102的三維坐標(biāo)為b(x2,y2,z2),所述第三關(guān)節(jié)103的三維坐標(biāo)為c(x3,y3,z3),則所述第一肢體111表示為向量
s13,將所述角度以指令的形式發(fā)送給機器人,使機器人根據(jù)所述指令中的所述角度執(zhí)行相應(yīng)的動作。
以幀為單位,將計算出的每一個骨骼節(jié)點的角度以指令的形式發(fā)送給機器人,或者將指令上傳到服務(wù)器中保存,在需要機器人動作時,再由服務(wù)器發(fā)送給機器人。機器人收到指令后,骨骼節(jié)點上的機器人舵機會根據(jù)所述角度控制相應(yīng)的機器人肢體運動,使其作出與人的示范動作相同或相似的動作。
深度傳感器在采集各骨骼節(jié)點的三維坐標(biāo)時,會先對景深圖像進行濾波,再對坐標(biāo)數(shù)據(jù)進行篩選,將可信度較低的數(shù)據(jù)舍棄,僅保留可信度高的數(shù)據(jù),這樣做的好處是,當(dāng)一秒內(nèi)幀數(shù)較多時,機器人會因為數(shù)據(jù)量龐大而出現(xiàn)卡頓,進行一定的數(shù)據(jù)篩選,可以減輕機器人的數(shù)據(jù)處理負(fù)擔(dān),可靠的數(shù)據(jù)能使機器人在動作時更加流暢和真實。
但是,當(dāng)深度傳感器舍棄的幀數(shù)較多時,機器人在完成當(dāng)前幀的動作之后,不知道下一幀甚至往后幾幀如何動作,因此,利用深度傳感器按幀采集人體的骨骼節(jié)點的三維坐標(biāo)之后,還包括:
根據(jù)所述骨骼關(guān)節(jié)在一幀中的位移,計算所述骨骼節(jié)點的運動速度;將所述運動速度以指令的形式發(fā)送給機器人,使機器人根據(jù)所述指令中的所述運動速度執(zhí)行相應(yīng)的動作。
這樣,在下一幀的角度數(shù)據(jù)缺失時,機器人可以按照當(dāng)前幀的運動速度繼續(xù)執(zhí)行動作,避免了機器人因為沒有角度數(shù)據(jù)可參考而停止動作。
一秒內(nèi)有幾十幀的情況下,一幀的時長很短,一幀內(nèi)骨骼節(jié)點的運動可以視為直線運動,因此,
以所述骨骼關(guān)節(jié)在上一幀的三維坐標(biāo)d1(x4,y4,z4)為初態(tài)位置;
以所述骨骼關(guān)節(jié)在當(dāng)前幀的三維坐標(biāo)d2(x5,y5,z5)為末態(tài)位置;
所述位移為所述末態(tài)位置到所述初態(tài)位置的距離,即
計算一秒內(nèi)每一幀的時間長度t,則所述骨骼節(jié)點的運動速度=位移/每一幀的時間長度,即
本實施例利用深度傳感器,按幀采集人體動作過程中的各骨骼節(jié)點的三維坐標(biāo),通過空間向量算法,可計算出骨骼節(jié)點的運動的角度和運動速度,將這些角度和運動速度通過指令發(fā)送給機器人,機器人舵機就能控制機器人的肢體執(zhí)行相應(yīng)的動作,使機器人能夠模仿、復(fù)制人的動作,不需要編程人員單獨對每個舵機進行三維動畫編程;并且一秒之內(nèi)包括了若干幀的指令,機器人的動作更準(zhǔn)確、流暢。
實施例二
本實施例提供一種機器人動作的控制方法,應(yīng)用于機器人,通過所述控制方法,機器人能夠復(fù)制人的動作;所述控制方法由一種機器人的動作控制裝置來執(zhí)行,該裝置由軟件和/或硬件實現(xiàn),一般集成于機器人內(nèi)部。
圖3是本發(fā)明實施例二中機器人動作的控制方法的流程圖。如圖3所示,所述控制方法包括如下步驟:
s21,按幀接收包括各骨骼節(jié)點的角度的指令。
機器人通過網(wǎng)絡(luò)接收上述實施例中生成的指令,每一幀一個指令,指令中包括各骨骼節(jié)點的角度,必要時還包括骨骼節(jié)點的運動速度。
s22,根據(jù)所述指令中的所述角度執(zhí)行相應(yīng)的動作。
解析所述指令,獲得各個骨骼節(jié)點的角度,機器人舵機控制相應(yīng)的關(guān)節(jié)旋轉(zhuǎn),使機器人作出所述指令代表的動作。
本實施例中,機器人按幀接收指令后,舵機按照指令中的角度執(zhí)行即可,不需要編程人員對每個舵機進行單獨編程,機器人的執(zhí)行結(jié)果是可預(yù)期的。并且指令可以保存和復(fù)制,任何需要的時候都能讓機器人重復(fù)執(zhí)行。
實施例三
本實施例提供一種機器人動作的控制裝置,用于執(zhí)行實施例一所述的控制方法,解決相同的技術(shù)問題,達(dá)到同樣的技術(shù)效果,該裝置一般為計算機及其輔助設(shè)備。
圖4是本發(fā)明實施例三中機器人動作的控制裝置的結(jié)構(gòu)示意圖。如圖4所示,所述控制裝置包括:
深度傳感器31,用于按幀采集人體的骨骼節(jié)點的三維坐標(biāo).
微處理器32,用于通過空間向量算法計算出所述骨骼節(jié)點的角度。
網(wǎng)絡(luò)通信設(shè)備33,用于將所述角度以指令的形式發(fā)送給機器人,使機器人根據(jù)所述指令中的所述角度執(zhí)行相應(yīng)的動作。
本實施例中,深度傳感器能夠以一秒十幾幀甚至幾十幀的頻率采集人體的骨骼節(jié)點的三維坐標(biāo),經(jīng)過微處理器計算后,得到每個骨骼節(jié)點的運動角度,再通過網(wǎng)絡(luò)將這些角度指令發(fā)送給機器人,使機器人按照所述角度執(zhí)行相應(yīng)的動作,整個過程中不需要編程人員對舵機進行編程,在需要機器人完成任何動作之前,有人進行動作示范并采集即可,方便易用,多編程的依賴度降低。
實施例四
本實施例提供一種機器人動作的控制裝置,用于執(zhí)行實施例二所述的控制方法,該裝置設(shè)置在機器人上,能使機器人根據(jù)人的動作示范作出相同或相似的動作。
圖5是本發(fā)明實施例四中機器人動作的控制裝置的結(jié)構(gòu)示意圖。如圖5所示,所述控制裝置包括:
指令接收模塊41,用于按幀接收包括了各骨骼節(jié)點的角度的指令;
動作執(zhí)行模塊42,用于根據(jù)所述指令中的所述角度執(zhí)行相應(yīng)的動作。
本實施例中,機器人按幀接收指令后,動作執(zhí)行模塊(即舵機)按照指令中的角度執(zhí)行即可,不需要編程人員對每個舵機進行單獨編程,機器人的執(zhí)行結(jié)果是可預(yù)期的。
以上結(jié)合具體實施例描述了本發(fā)明的技術(shù)原理。這些描述只是為了解釋本發(fā)明的原理,而不能以任何方式解釋為對本發(fā)明保護范圍的限制?;诖颂幍慕忉?,本領(lǐng)域的技術(shù)人員不需要付出創(chuàng)造性的勞動即可聯(lián)想到本發(fā)明的其它具體實施方式,這些方式都將落入本發(fā)明的保護范圍之內(nèi)。