0連 接來進(jìn)行通信;所述電源,用于給單片機(jī)供電;
[0133] 所述穩(wěn)壓電路,用于提供5v、3. 3v、6v不同的電壓分別給傳感器、arm芯片和舵機(jī) 供電;
[0134] 所述舵機(jī),用于驅(qū)動(dòng)機(jī)器人進(jìn)行步態(tài)行走和頭部搖動(dòng);
[0135] 所述網(wǎng)絡(luò)攝像頭,用于遠(yuǎn)程監(jiān)控,傳送機(jī)器人周圍的環(huán)境信息;
[0136] 所述單片機(jī)MT7620,用于掛載OpenWRT系統(tǒng)以此將攝像頭的圖像通過wifi發(fā)送 出;
[0137] 所述加速度計(jì)傳感器,安裝在機(jī)器人的機(jī)體中心位置用于采集機(jī)器人實(shí)時(shí)的姿 態(tài);
[0138] 所述超聲波傳感器,安裝在機(jī)器人頭部正上方用于檢測機(jī)器人周圍是否有障礙 物;
[0139] 所述單片機(jī)MEGA644,用于和stm32通信得到控制信息并解碼后通過液晶顯示;
[0140] 所述OLED液晶顯示屏,用于顯示機(jī)器人當(dāng)前信息;
[0141] 所述藍(lán)牙模塊,用于和andorid上位機(jī)間通信,傳輸指令和數(shù)據(jù);
[0142] 所述上位機(jī),用于發(fā)送指令和接收機(jī)器人反饋的數(shù)據(jù);
[0143] 如圖4所示,一種四足機(jī)器人的步態(tài)規(guī)劃方法,包括如下步驟:
[0144] 步驟(1):機(jī)器人初始化;
[0145] 步驟(2):機(jī)器人接收上位機(jī)指令;將指令解碼,通過OLED液晶顯示屏顯示;
[0146] 步驟(3):機(jī)器人對上位機(jī)指令進(jìn)行判斷,判斷是舵機(jī)調(diào)試指令、步態(tài)變換指令、 方向改變指令還是其他功能指令,所述其他功能指令包括自適應(yīng)穩(wěn)定性、拍照指令和自動(dòng) 避障指令。
[0147] 所述步驟(3)中,
[0148] 如果是舵機(jī)調(diào)試指令,則開始單個(gè)舵機(jī)調(diào)試,判斷是否收到調(diào)試值,如果收到就開 始步態(tài)實(shí)現(xiàn),步態(tài)實(shí)現(xiàn)后返回步驟(2);如果沒收到就結(jié)束;
[0149] 如果是步態(tài)變換指令,則開始步態(tài)實(shí)現(xiàn),步態(tài)實(shí)現(xiàn)后返回步驟(2);
[0150] 如果是方向改變指令,則調(diào)整運(yùn)動(dòng)學(xué)方程,開始步態(tài)實(shí)現(xiàn),步態(tài)實(shí)現(xiàn)后返回步驟 (2);
[0151] 如果是其他功能指令,則根據(jù)指令完成穩(wěn)定性調(diào)整、拍照和自動(dòng)避障功能,返回步 驟⑵。
[0152] 如圖5所示,所述步驟⑶中,
[0153] 如果收到其他功能指令,首先判斷是自適應(yīng)穩(wěn)定性指令、拍照指令還是自動(dòng)避障 指令;
[0154] 如果是自適應(yīng)穩(wěn)定性指令,則加速度計(jì)傳感器采集當(dāng)前機(jī)器人軀體的傾角并和穩(wěn) 態(tài)時(shí)比較;計(jì)算偏差;步態(tài)實(shí)現(xiàn);
[0155] 如果是拍照指令,則網(wǎng)絡(luò)攝像頭拍照,將照片通過單片機(jī)MT7620內(nèi)嵌的OpenWRT, 上傳給單片機(jī)STM32,最終通過藍(lán)牙模塊上傳給上位機(jī);
[0156] 如果是自動(dòng)避障指令,則進(jìn)入如下步驟:
[0157]步驟(3-1):超聲波傳感器啟動(dòng),判斷是否在設(shè)定安全距離內(nèi),如果是就開始步態(tài) 實(shí)現(xiàn),返回步驟(3-1);如果否則機(jī)器人頭部的第十四舵機(jī)通過轉(zhuǎn)動(dòng)再次檢測;判斷是否找 到無障礙方向,如果是就改變方向,開始步態(tài)實(shí)現(xiàn),返回步驟(3-1),如果否就結(jié)束。
[0158] 如圖6所示,所述步態(tài)實(shí)現(xiàn)的具體步驟如下:
[0159] 步驟(4-1):建立DH坐標(biāo)系,設(shè)定初始坐標(biāo)點(diǎn);
[0160] 步驟(4-2):建立運(yùn)動(dòng)學(xué)方程;求解逆運(yùn)動(dòng)學(xué)方程;
[0161] 步驟(4-3):設(shè)計(jì)運(yùn)動(dòng)軌跡;
[0162] 步驟(4-4):舵機(jī)關(guān)節(jié)映射;
[0163] 步驟(4-5) :PWM輸出控制舵機(jī)實(shí)現(xiàn)步態(tài)。
[0164] 所述步驟(4-1)的步驟為:
[0165] 如圖1所示,首先,利用D-H(Dnavit-Harbenberg)方法對機(jī)器人建立坐標(biāo)系,以此 來表示各關(guān)節(jié)變量;第一關(guān)節(jié)的坐標(biāo)系為》1,¥1,21),第二關(guān)節(jié)的坐標(biāo)系為》2,¥2,22), 第三關(guān)節(jié)的坐標(biāo)系為(乂3,¥3,23),機(jī)器人軀干的中心位置的坐標(biāo)系為(乂0,¥0,20)
[0166] 根據(jù)建立的D-H坐標(biāo)系建立機(jī)器人D-H坐標(biāo)參數(shù)表。
[0167] 表1機(jī)器人D-H坐標(biāo)參數(shù)表
[0168]
[0169]a:表示每條公垂線的長度(連桿長度);a:兩個(gè)相鄰兩坐標(biāo)系z軸間的角度;[0170] 0:繞當(dāng)前關(guān)節(jié)坐標(biāo)系z軸旋轉(zhuǎn)的角度;d:在當(dāng)前關(guān)節(jié)坐標(biāo)系z軸上兩條相鄰的 公垂線之間的距離(稱關(guān)節(jié)偏移);關(guān)節(jié)1表示橫向髖關(guān)節(jié);關(guān)節(jié)2表示縱向髖關(guān)節(jié);關(guān)節(jié) 3表不膝關(guān)節(jié);a〇表不橫向髓關(guān)節(jié)和縱向髓關(guān)節(jié)之間的連桿長度;al表不縱向髓關(guān)節(jié)和 膝關(guān)節(jié)之間的連桿長度;a2表示膝關(guān)節(jié)關(guān)節(jié)和腿末端節(jié)之間的連桿長度;k的取值范圍是 0~2 ;dik的參數(shù)含義是k和k-1坐標(biāo)系中z軸上兩條相鄰的公垂線之間的距離;0ik的 參數(shù)含義是z軸從k-1坐標(biāo)系旋轉(zhuǎn)到k坐標(biāo)系的角度;如圖2所示,0i0的參數(shù)含義是需 要求解的橫向髖關(guān)節(jié)轉(zhuǎn)動(dòng)角度;9il的參數(shù)含義是需要求解的縱向髖關(guān)節(jié)轉(zhuǎn)動(dòng)角度;9i2 的參數(shù)含義是需要求解的膝關(guān)節(jié)轉(zhuǎn)動(dòng)角度;
[0171] 所述步驟(4-2)的步驟為:
[0172] 建立運(yùn)動(dòng)學(xué)方程
[0173] Xi=-a!S1-B2S12+8I (1)
[0174]Yi=B0Sc^a1S0Cfa2S0C1JAw(2)
[0175] Zi=-aOC0-B1C0C1-B2C0C12-K (3)
[0176]其中:
[0179] 其中s。表不sin9。,c。表不cos9。,8丨表不sin9丨,(^表不cos9 "S12表不 sin( 9 1+9 2),C12表示cos( 0 1+9 2)。Xi表示第i坐標(biāo)系中的X坐標(biāo)ai表示縱向髖關(guān)節(jié)和 膝關(guān)節(jié)之間的連桿長度&表示膝關(guān)節(jié)關(guān)節(jié)和腿末端節(jié)之間的連桿長度,S表示對應(yīng)不同 腿添加的標(biāo)志位,為-1或1,1表示機(jī)器人機(jī)體的長度的一半;Yi表示第i坐標(biāo)系中的y坐 標(biāo);Stl表示橫向髖關(guān)節(jié)和縱向髖關(guān)節(jié)之間的連桿長度。S1表示縱向髖關(guān)節(jié)和膝關(guān)節(jié)之間的 連桿長度;a2表示膝關(guān)節(jié)關(guān)節(jié)和腿末端節(jié)之間的連桿長度;A表示對應(yīng)不同腿添加的標(biāo)志 位,為-1或I 表示機(jī)器人的寬度的一半;Zi表示第i坐標(biāo)系中的z坐標(biāo),h表示機(jī)器人的 基坐標(biāo)和坐標(biāo)系(XI,Yl,Zl)之間的高度。
[0180] 求解得到逆運(yùn)動(dòng)學(xué)方程:
[0187]其中,
[0188] 0i(l表示第i個(gè)坐標(biāo)系中橫向髖關(guān)節(jié)轉(zhuǎn)動(dòng)的角度,yi表示第i坐標(biāo)系中的y坐標(biāo), 入表示對應(yīng)不同腿添加的標(biāo)志位,為-1或1,Zi表示第i坐標(biāo)系中的z坐標(biāo),h表示機(jī)器人 的基坐標(biāo)和坐標(biāo)系(XI,Yl,Zl)之間的高度。0n表示第i個(gè)坐標(biāo)系中縱向髖關(guān)節(jié)轉(zhuǎn)動(dòng)的 角度,0表示一個(gè)綜合的公式。S表示對應(yīng)不同腿添加的標(biāo)位,為-1或1,Xi表示第i坐 標(biāo)系中的X坐標(biāo),1表示機(jī)器人機(jī)體的長度的一半;%表示橫向髖關(guān)節(jié)和縱向髖關(guān)節(jié)之間的 連桿長度,Zi表示第i坐標(biāo)系中的z坐標(biāo),h表示機(jī)器人的基坐標(biāo)和坐標(biāo)系1之間的高度。 cos0i(l表示第i個(gè)坐標(biāo)系中橫向髖關(guān)節(jié)轉(zhuǎn)動(dòng)角度的余弦值。0i2表示第i個(gè)坐標(biāo)系中縱向 膝關(guān)節(jié)轉(zhuǎn)動(dòng)的角度,I表示一個(gè)綜合的公式,Xi表示第i坐標(biāo)系中的X坐標(biāo);
[0189] (2)變開多為:Aw=S0(Bfa1Cja2C12) (7)
[0190] (3)變形為A+h= -Cjac^a1CAa2C12) (8)
[0208] 如果是自適應(yīng)穩(wěn)定性指令,通過加速度計(jì)傳感器測得機(jī)器人重力加速度可以得到 角度信息,與之穩(wěn)定態(tài)的加速度差值通過PID算法得到機(jī)器人的偏移量,單片機(jī)驅(qū)動(dòng)舵機(jī) 通過調(diào)節(jié)髖關(guān)節(jié)實(shí)現(xiàn)重心向原來方向的反作用力,使腿部的反作用力抵消外力的干擾,機(jī) 器人身體的基準(zhǔn)是不變的,根據(jù)當(dāng)前偏移基準(zhǔn)值應(yīng)用增量或者位置PID算法都可以實(shí)現(xiàn)自 動(dòng)調(diào)整,考慮到位置式PID的算法需要不斷累加每次的偏移值,運(yùn)算量較大,所以使用增量 式PID算法。
[0209] 通過超聲波傳感器得到當(dāng)前機(jī)器人與前方物體的距離,當(dāng)距離大于安全距離時(shí)機(jī) 器人前行。當(dāng)小于安全距離時(shí),機(jī)器人頭部舵機(jī)向左或者右搖動(dòng),檢測該方向的障礙情況, 當(dāng)距離符合安全距離時(shí)記錄該方向標(biāo)識(shí)位,并以此向該方向移動(dòng)。
[0210] 足纟而運(yùn)動(dòng)空間
[0211] 以右前腿為例,在第三關(guān)節(jié)的坐標(biāo)系(X3,Y3,Z3)中足端坐標(biāo)為(L3, 0, 0)在第二 關(guān)節(jié)的坐標(biāo)系(X2,Y2,Z2)中第三關(guān)節(jié)的坐標(biāo)系(X3,Y3,Z3)的坐標(biāo)原點(diǎn)是沿著X軸方向平 移L2然后繞z軸旋轉(zhuǎn)0 3得到,即變換矩陣為:
[0216] 其中,丨:T表示由第3坐標(biāo)系(X3,Y3,Z3)移動(dòng)到第2坐標(biāo)系(X2,Y2,Z2)的平移坐 標(biāo)變換,Trans表示平移變換,Rot(z, 03)表示繞z軸旋轉(zhuǎn)9 3角度,z表示z軸方向,0 3表 示旋轉(zhuǎn)的角度值,L2表