張紅麗
(寶雞職業(yè)技術(shù)學(xué)院,陜西寶雞 721000)
舞蹈機(jī)器人作為一種娛樂機(jī)器人,通過對(duì)舞蹈動(dòng)作的模擬,具有一定觀賞性和趣味性,在機(jī)器人市場中具有廣闊前景。國外機(jī)器人技術(shù)研究較早,要求舞蹈機(jī)器人各個(gè)關(guān)節(jié)動(dòng)作銜接流暢、動(dòng)作穩(wěn)定,與音樂的配合中不存在不穩(wěn)定因素,主要利用舵機(jī)轉(zhuǎn)動(dòng),使機(jī)器人在運(yùn)動(dòng)過程中產(chǎn)生抖動(dòng),對(duì)多個(gè)舵機(jī)運(yùn)動(dòng)進(jìn)行控制,提高舵機(jī)的運(yùn)動(dòng)精度,以此確保機(jī)器人舞蹈動(dòng)作的到位程度。國外學(xué)者提出一個(gè)機(jī)器人系統(tǒng),采用64位RISC架構(gòu)CPU,配備步行控制技術(shù),使其更加接近人類的步行方式。裝置帶有記憶功能的交流和運(yùn)動(dòng)系統(tǒng),通過傳感器進(jìn)行導(dǎo)航,控制移動(dòng)方向和位置的變換。它可以實(shí)時(shí)追蹤音樂音頻的節(jié)拍和下拍,儲(chǔ)存位置信息并自動(dòng)合成與所提取的音樂事件同步的舞蹈動(dòng)作,能夠處理更加復(fù)雜的舞蹈。通過離線分析改進(jìn)的實(shí)時(shí)拍頻預(yù)測方法,對(duì)節(jié)拍和下拍的估計(jì)有積極的作用。實(shí)驗(yàn)結(jié)果表明其設(shè)計(jì)的機(jī)器人在一定程度上具有隨音樂跳舞的能力。而國內(nèi)對(duì)舞蹈機(jī)器人的研究尚處于初步階段,國內(nèi)學(xué)者研究機(jī)器人的運(yùn)動(dòng)規(guī)律,以Arduino M0作為舞蹈機(jī)器人的主控板,設(shè)計(jì)出19個(gè)自由度的小型舞蹈機(jī)器人進(jìn)行簡單的舞蹈表演,基本實(shí)現(xiàn)人機(jī)交互功能,為后續(xù)智能機(jī)器人的研究提供技術(shù)平臺(tái)。楊錦隆等人提出一種舞蹈機(jī)器人主控板,逐一調(diào)試轉(zhuǎn)動(dòng)關(guān)節(jié)角度,對(duì)轉(zhuǎn)動(dòng)的角度數(shù)據(jù)進(jìn)行記錄,當(dāng)舞蹈機(jī)器人完成一系列舞蹈動(dòng)作后,將轉(zhuǎn)動(dòng)關(guān)節(jié)的角度數(shù)據(jù)寫入命令程序,獲得大量關(guān)節(jié)轉(zhuǎn)動(dòng)角度參數(shù),通過步行控制技術(shù),使舞蹈機(jī)器人完成斜向行走和原地轉(zhuǎn)身等動(dòng)作,根據(jù)音樂節(jié)拍改變關(guān)節(jié)運(yùn)動(dòng)角度,并通過聲音識(shí)別和圖像識(shí)別模塊,對(duì)音樂進(jìn)行識(shí)別[1]。錢平等人提出在機(jī)器人內(nèi)部安裝攝像機(jī),將舞蹈視頻輸入機(jī)器人,主控板提取視頻中的音樂特征,包括音高和音長等,生成音樂信號(hào),通過處理器將音樂信號(hào)轉(zhuǎn)化為數(shù)據(jù),機(jī)器人通過PC機(jī)和控制核心,對(duì)信號(hào)數(shù)據(jù)進(jìn)行讀取,構(gòu)建機(jī)器人運(yùn)動(dòng)模型,驅(qū)動(dòng)內(nèi)部程序,實(shí)現(xiàn)機(jī)器人舞蹈動(dòng)作的自動(dòng)控制[2]。在以上理論的基礎(chǔ)上,設(shè)計(jì)基于人工智能的機(jī)器人舞蹈動(dòng)作自動(dòng)生成方法。結(jié)合人工智能和自動(dòng)控制等技術(shù),對(duì)舞蹈機(jī)器人進(jìn)行智能控制,使機(jī)器人能夠根據(jù)外界環(huán)境變化,控制沒有重復(fù)性且變化幅度較大的各類參數(shù),解決復(fù)雜的非線性控制問題。
采集音樂的音頻信號(hào),從中提取音高、力度、旋律等特征參數(shù)。首先對(duì)音樂信號(hào)進(jìn)行預(yù)處理,根據(jù)奎斯特原理,判斷音樂信號(hào)的最高頻率,設(shè)置采樣頻率為該頻率的兩倍,對(duì)音樂信號(hào)進(jìn)行數(shù)據(jù)采集。截取短時(shí)的音樂信號(hào),對(duì)信號(hào)進(jìn)行加窗分幀,設(shè)置窗口幀長的范圍為30ms~50ms,重疊相鄰兩幀之間的信號(hào),設(shè)置重疊幀移的范圍為1/3~1/2。選取海明窗函數(shù)與音樂信號(hào)相乘,得到加窗分幀后的音樂信號(hào)。設(shè)音樂信號(hào)幀長為N,信號(hào)分幀重疊的幀移為ξ,則海明窗函數(shù)計(jì)算公式w為:
利用公式(1),保證信號(hào)連續(xù)性,使音樂信號(hào)在短時(shí)間內(nèi)成為平穩(wěn)信號(hào)[3]。然后對(duì)音樂信號(hào)進(jìn)行預(yù)濾波處理,將采樣頻率的1/2 為標(biāo)準(zhǔn),抑制采集信號(hào)中超過該標(biāo)準(zhǔn)的頻率分量,濾除音樂信號(hào)中的環(huán)境噪聲。對(duì)濾波后的音樂信號(hào)進(jìn)行中心削波,使音頻信號(hào)只有-1、0、1三種值,計(jì)算音樂信號(hào)的自相關(guān)函數(shù)峰值,根據(jù)函數(shù)峰值為音樂信號(hào)周期整數(shù)倍這一特點(diǎn),確定音頻基音周期和極值位置,由此計(jì)算出音頻信號(hào)音高。其中自相關(guān)函數(shù)計(jì)算公式R為:
公式中,S為輸入的短時(shí)音樂信號(hào),j為S周期整數(shù)倍上出現(xiàn)的峰值,取值范圍為(-N+1)~(N-1)。采用計(jì)算短時(shí)能量的方法,判斷短時(shí)音樂信號(hào)幀內(nèi)所有采樣信號(hào)的聚集能量,公式為:
公式中,m為采集音樂信號(hào),Pn(m)為經(jīng)過加窗分幀處理后的第n幀音樂信號(hào),En為第n幀信號(hào)的短時(shí)能量[4]。通過公式(3),檢測音樂信號(hào)幅度值大小,從中提取音樂力度,當(dāng)短時(shí)能量小于一定閾值時(shí),判斷音樂產(chǎn)生斷奏,反之則判斷音樂連續(xù)。利用小波變換方法,使用低通和高通兩個(gè)濾波器識(shí)別音樂節(jié)拍,分別獲得音樂信號(hào)的低頻分量和高頻分量,將低頻分量作為音樂信號(hào)的近似值,高頻分量作為信號(hào)修飾值,通過兩次小波分解,得到低頻分量的四個(gè)子帶頻段信號(hào),從中提取音樂信號(hào)有用信息。對(duì)低頻信號(hào)進(jìn)行波形修正,提取音樂節(jié)拍輪廓,疊加四個(gè)自帶信號(hào),得到音樂信號(hào)的自相關(guān)包絡(luò),根據(jù)包絡(luò)波形中的峰值距離、以及谷值峰值大小,分別識(shí)別音樂節(jié)拍速度、以及節(jié)拍重復(fù)部分。其中節(jié)拍速度Q計(jì)算公式為:
ki+1、ki分別為第i+1 個(gè)和第i 個(gè)包絡(luò)峰值對(duì)應(yīng)位置,f 為包絡(luò)峰值權(quán)重之和,φ為離散小波變換分解系數(shù)[5]。至此完成音樂特征的提取。
編排機(jī)器人基本動(dòng)作,設(shè)置機(jī)器人肢體動(dòng)作有5個(gè)自由度,包括雙足、頭部和雙臂,其中頭部僅為上下點(diǎn)頭動(dòng)作,將機(jī)器人雙足和雙臂簡化為一個(gè)七連桿結(jié)構(gòu),利用廣義坐標(biāo)確定機(jī)器人各桿件的位姿參數(shù),構(gòu)建機(jī)器人運(yùn)動(dòng)模型[6]。如圖1所示。
圖1 機(jī)器人連桿結(jié)構(gòu)運(yùn)動(dòng)模型
如上圖所示,設(shè)置機(jī)器人動(dòng)作的鉛垂方向?yàn)閦軸,運(yùn)動(dòng)方向?yàn)閤軸,y軸垂直于xoz平面,模型中動(dòng)作參數(shù)如表1所示。
表1 機(jī)器人運(yùn)動(dòng)參數(shù)設(shè)置
計(jì)算不同連桿的關(guān)節(jié)角,給定機(jī)器人雙臂和雙足擺動(dòng)末端的期望位置,對(duì)機(jī)器人進(jìn)行幾何約束,確定各連桿的運(yùn)動(dòng)軌跡和姿態(tài),進(jìn)而設(shè)定機(jī)器人的基本動(dòng)作。以(Xb,Zb)為參照點(diǎn),設(shè)置該點(diǎn)為坐標(biāo)原點(diǎn),使連桿重心在桿件中部且不同連桿質(zhì)量均勻,由此可得各關(guān)節(jié)坐標(biāo)和重心坐標(biāo)。則雙臂之間關(guān)節(jié)角θ1、支撐足與上肢關(guān)節(jié)角θ2、擺動(dòng)足與上肢關(guān)節(jié)角θ3控制公式為:
將以上關(guān)系式輸入Matlab軟件,利用軟件的編制調(diào)用程序,調(diào)控機(jī)器人連桿運(yùn)動(dòng)模型中的運(yùn)動(dòng)參數(shù),給出一組θ1、θ2、θ3,使機(jī)器人生成一個(gè)位姿,確定機(jī)器人動(dòng)作方向和動(dòng)作幅度大小[7]。然后采用直流電機(jī)控制機(jī)器人肢體動(dòng)作,使電機(jī)運(yùn)行速度對(duì)應(yīng)機(jī)器人動(dòng)作速度,電機(jī)運(yùn)行時(shí)間對(duì)應(yīng)動(dòng)作持續(xù)時(shí)間。動(dòng)作速度和時(shí)間的編排格式如表2所示。
表2 舞蹈動(dòng)作編排格式
其中動(dòng)作速度取值為小于10 的數(shù)字,與電機(jī)運(yùn)行速度成正比。根據(jù)機(jī)器人動(dòng)作結(jié)構(gòu)特點(diǎn)和自由度,對(duì)不同連桿的幅度方向、速度時(shí)間進(jìn)行總體編排,獲得多組肢體動(dòng)作。至此完成機(jī)器人舞蹈動(dòng)作的編排。
根據(jù)四種音樂情感建立不同舞蹈動(dòng)作庫,進(jìn)一步匹配音樂特征參數(shù)和機(jī)器人具體動(dòng)作,使機(jī)器人通過音樂信號(hào)的識(shí)別,自動(dòng)生成舞蹈動(dòng)作??傮w匹配框架如圖2所示。
圖2 音樂特征和機(jī)器人動(dòng)作匹配的總體框架
如上圖所示,將機(jī)器人動(dòng)作與音樂特征的匹配分為兩個(gè)層次,分別為音樂情感與舞蹈動(dòng)作庫的匹配、以及音符和機(jī)器人具體動(dòng)作的匹配。利用人工智能技術(shù),針對(duì)提取的基本音樂特征參數(shù),對(duì)大量參數(shù)進(jìn)行排列組合,采用樹脂迭代方法,深入分析音樂信號(hào)的音高、力度、連續(xù)性和節(jié)拍,進(jìn)而識(shí)別音樂所表達(dá)的情感特征[8]。識(shí)別標(biāo)準(zhǔn)如表3所示。
表3 人工智能的音樂情感識(shí)別標(biāo)準(zhǔn)
利用逆向思維方式,擺置不同情感特征的肢體動(dòng)作,記錄不同動(dòng)作名稱的動(dòng)作參數(shù),包括肢體幅度和速度時(shí)間,根據(jù)機(jī)器人擺置的肢體動(dòng)作序列,按照時(shí)間順序排列動(dòng)作參數(shù),使其形成動(dòng)作數(shù)據(jù)文件,將動(dòng)作數(shù)據(jù)保存至Access數(shù)據(jù)庫中,建立不同情感的舞蹈動(dòng)作庫,存放在機(jī)器人的存儲(chǔ)器,當(dāng)機(jī)器人完成音樂情感識(shí)別后,開始調(diào)用相應(yīng)的表演動(dòng)作庫。采用LPC1752 作為主控芯片,使用Cortex-M3 內(nèi)核的微控制器,區(qū)分開指令總線和數(shù)據(jù)總線,采用哈佛結(jié)構(gòu)的三級(jí)流水線,同時(shí)從內(nèi)存中讀取指令數(shù)據(jù),增加輸入輸出管腳數(shù)量,使主控芯片外設(shè)更加豐富,通過多個(gè)控制接口,使機(jī)器人能夠并行執(zhí)行多個(gè)動(dòng)作口令[9]。對(duì)主控芯片應(yīng)用電路進(jìn)行優(yōu)化,如圖3所示。
圖3 機(jī)器人主控應(yīng)用電路
通過優(yōu)化后的外圍電路,對(duì)電源電壓進(jìn)行轉(zhuǎn)換,采用脈寬調(diào)制方式,調(diào)節(jié)I/O 管腳輸出PWM 信號(hào)的占空比,當(dāng)PWM信號(hào)占空比減小時(shí),直流電機(jī)速度隨之減小,反之則增大。固定PWM 方波周期后,輸出動(dòng)作指令的數(shù)字信號(hào),利用I/O 管腳的邏輯0 和邏輯1,改變PWM 的輸出狀態(tài),驅(qū)動(dòng)電機(jī)轉(zhuǎn)至自由度端點(diǎn)位置,通過外設(shè)資源的匹配寄存器,驅(qū)動(dòng)電機(jī)正反向運(yùn)動(dòng),實(shí)現(xiàn)邊沿PWM 信號(hào)的動(dòng)作指令,對(duì)機(jī)器人的5 個(gè)自由度進(jìn)行控制,驅(qū)動(dòng)舞蹈動(dòng)作的自動(dòng)生成[10-11]。最后觀察舞蹈動(dòng)作與音樂的同步情況,修改機(jī)器人動(dòng)作速度和延時(shí)長短,減少動(dòng)作相對(duì)音樂的滯后時(shí)間,實(shí)現(xiàn)音樂特征參數(shù)和機(jī)器人動(dòng)作的協(xié)調(diào)匹配。至此完成基于人工智能的機(jī)器人舞蹈動(dòng)作自動(dòng)生成方法設(shè)計(jì)。
進(jìn)行對(duì)比實(shí)驗(yàn),記此次方法為實(shí)驗(yàn)A 組,兩種傳統(tǒng)方法分別為實(shí)驗(yàn)B 組和實(shí)驗(yàn)C 組,比較三組實(shí)驗(yàn)中,機(jī)器人自動(dòng)生成舞蹈動(dòng)作時(shí),雙足關(guān)節(jié)角度變化軌跡是否順暢。
選取一舞蹈機(jī)器人作為實(shí)驗(yàn)對(duì)象,利用matlab 編寫程序,對(duì)音樂信號(hào)進(jìn)行讀取,可得實(shí)驗(yàn)所用音樂的基音頻率范圍為102HZ~400HZ,音樂信號(hào)的頻率范圍為20HZ~20kHZ,峰值大小范圍為2.5ms~9.8ms,控制matlab 最大絕對(duì)值誤差為0.6。設(shè)置采樣頻率范圍為11kHZ、25kHZ、47kHZ,窗口長范圍取30ms~50ms,分幀處理后的音樂信號(hào)如圖4所示。
圖4 分頻處理后的音樂信號(hào)
計(jì)算上圖所示音樂信號(hào)的特征參數(shù),從初始數(shù)據(jù)集中隨機(jī)采取3000個(gè)訓(xùn)練集樣本,根據(jù)特征參數(shù)編排舞動(dòng)動(dòng)作,計(jì)算舞蹈動(dòng)作參數(shù),編排該音樂的雙足舞蹈動(dòng)作。最后設(shè)定音樂相應(yīng)的雙足舞蹈動(dòng)作為交叉式行走,雙足動(dòng)作模式如圖5所示。
圖5 設(shè)定雙足舞蹈動(dòng)作
三組實(shí)驗(yàn)使用同組舞蹈動(dòng)作庫,測試可得三組實(shí)驗(yàn)雙足舞蹈動(dòng)作循環(huán)時(shí)間為2.7s左右,舞蹈動(dòng)作都較為穩(wěn)定。選取第三個(gè)舞蹈動(dòng)作——軀干下蹲、膝關(guān)節(jié)前屈,測量該動(dòng)作下的關(guān)節(jié)角度。
首先測量膝關(guān)節(jié)俯仰角,該角度設(shè)置初始值為1.20rad,三組實(shí)驗(yàn)測量結(jié)果如表4所示。
如表4所示,實(shí)驗(yàn)A 組膝關(guān)節(jié)俯仰角變化幅度不大,極值分別為1.19rad、1.21rad,俯仰角平均值為1.205rad,而B 組和C 組最大值分別為1.24rad、1.25rad,最小值分別為1.18rad、1.16rad,與初始值相差較大。測量髖關(guān)節(jié)俯仰角,該角度設(shè)置初始值為0.30rad,三組實(shí)驗(yàn)測量結(jié)果如表5所示。
表4 第一組實(shí)驗(yàn)結(jié)果(rad)
如表5所示,實(shí)驗(yàn)A組極值分別為0.29rad、0.31rad,俯仰角平均值為0.302rad,而B 組和C 組最大值分別為0.33rad、0.35rad,最小值分別為0.27rad、0.26rad,實(shí)驗(yàn)A組更加貼近初始設(shè)置角度。最后測量裸關(guān)節(jié)俯仰角,該角度設(shè)置初始值為-0.20rad,三組實(shí)驗(yàn)測量結(jié)果如表6所示。
表5 第二組實(shí)驗(yàn)結(jié)果(rad)
表6 第三組實(shí)驗(yàn)結(jié)果(rad)
如表6所示,實(shí)驗(yàn)A 組極值分別為-0.20rad、-0.21rad,俯仰角平均值為-0.203rad,而B 組和C 組最大值分別為-0.18rad、-0.17rad,最小值分別為-0.23rad、-0.24rad,相比實(shí)驗(yàn)B組和C組,實(shí)驗(yàn)A組裸關(guān)節(jié)俯仰角基本沒有發(fā)生變化,與初始值十分接近。綜上所述,此次方法利用人工智能技術(shù),對(duì)采集參數(shù)進(jìn)行迭代處理,簡化了參數(shù)識(shí)別計(jì)算過程,使雙足舞蹈動(dòng)作的關(guān)節(jié)角度更加貼合初始角度,角度軌跡變化十分平滑,機(jī)器人舞蹈動(dòng)作穩(wěn)定性要優(yōu)于傳統(tǒng)方法。
此次設(shè)計(jì)方法充分發(fā)揮了人工智能技術(shù)的數(shù)據(jù)處理能力,使機(jī)器人舞蹈動(dòng)作角度更加貼合初始角度。但此次研究仍存在一定不足,雙足步態(tài)較為緩慢,在今后的研究中,會(huì)適當(dāng)增加機(jī)器人足底尺寸,調(diào)大雙足運(yùn)動(dòng)速度,模仿人類保持平衡的控制策略,使機(jī)器人生成動(dòng)作更加靈活。