一種基于手臂動(dòng)作控制機(jī)械臂的方法
【專利摘要】本發(fā)明一種基于手臂動(dòng)作控制機(jī)械臂的方法,該方法的步驟如下:第一步:利用傳感器將手臂關(guān)鍵自由度的姿態(tài)信息轉(zhuǎn)化為模擬電壓的幅值;第二步:利用Arduino控制器對(duì)模擬信號(hào)進(jìn)行采樣、量化,并利用量化數(shù)值轉(zhuǎn)化為手臂關(guān)鍵自由度旋轉(zhuǎn)或彎曲的角度;第三步:Arduino控制器將旋轉(zhuǎn)或彎曲的角度值轉(zhuǎn)化為舵機(jī)控制指令的參數(shù);第四步:Arduino將完整的舵機(jī)控制指令通過串口發(fā)送至藍(lán)牙發(fā)送模塊,藍(lán)牙發(fā)送模塊對(duì)基帶信號(hào)進(jìn)行調(diào)制,將已調(diào)信號(hào)通過天線發(fā)射到空間中;第五步:藍(lán)牙接收模塊將已調(diào)信號(hào)解調(diào),通過TTL通信串口將解調(diào)后的信號(hào)傳輸至舵機(jī)控制器,舵機(jī)控制器根據(jù)舵機(jī)控制指令控制對(duì)應(yīng)的舵機(jī)旋轉(zhuǎn),完成對(duì)手臂動(dòng)作的模仿。
【專利說明】一種基于手臂動(dòng)作控制機(jī)械臂的方法 【技術(shù)領(lǐng)域】
[0001] 本發(fā)明一種能夠用手臂實(shí)時(shí)遠(yuǎn)程控制的仿生機(jī)械臂的方法,屬于通信與控制領(lǐng) 域。 【【背景技術(shù)】】
[0002] -般機(jī)械臂有三種控制方式:拉桿控制方式、編程控制方式和圖像采集控制方式。 在以往的機(jī)械臂的控制方法中,拉桿控制的方式人的參與感不強(qiáng),而且采用多關(guān)節(jié)機(jī)械臂 時(shí),拉桿數(shù)量也需要增加,不利于單手控制。編程控制的方式在所有控制方式中最精確,但 其缺點(diǎn)是當(dāng)手臂需要完成不同動(dòng)作時(shí),需要進(jìn)行重復(fù)編程,需要一定的編程基礎(chǔ),操作復(fù) 雜。圖像采集的控制方式的優(yōu)點(diǎn)是操作簡便,但是由于圖像采集角度的不同,其對(duì)機(jī)械臂的 控制也會(huì)有所偏差,具有精度不高的問題。 【
【發(fā)明內(nèi)容】
】
[0003] 本發(fā)明的目的是提供一種基于手臂動(dòng)作控制機(jī)械臂的方法,使人對(duì)機(jī)械臂的控制 有參與感,并且操作簡便、精確。
[0004] 本發(fā)明所涉及的一種基于手臂動(dòng)作控制機(jī)械臂的方法,該方法的步驟如下:
[0005] 第一步:利用傳感器將手臂關(guān)鍵自由度的姿態(tài)信息轉(zhuǎn)化為模擬電壓的幅值;
[0006] 第二步:利用Arduino控制器對(duì)模擬信號(hào)進(jìn)行采樣、量化,并利用量化數(shù)值轉(zhuǎn)化為 手臂關(guān)鍵自由度旋轉(zhuǎn)或彎曲的角度;
[0007] 第三步:Arduino控制器將旋轉(zhuǎn)或彎曲的角度值轉(zhuǎn)化為舵機(jī)控制指令的參數(shù);
[0008] 第四步:Arduin〇將完整的舵機(jī)控制指令通過串口發(fā)送至藍(lán)牙發(fā)送模塊,藍(lán)牙發(fā)送 模塊對(duì)基帶信號(hào)進(jìn)行調(diào)制,將已調(diào)信號(hào)通過天線發(fā)射到空間中;
[0009] 第五步:藍(lán)牙接收模塊將已調(diào)信號(hào)解調(diào),通過TTL通信串口將解調(diào)后的信號(hào)傳輸至 舵機(jī)控制器,舵機(jī)控制器根據(jù)舵機(jī)控制指令控制對(duì)應(yīng)的舵機(jī)旋轉(zhuǎn),完成對(duì)手臂動(dòng)作的模仿。 [0010]該方法所用到的硬件模塊包括:數(shù)據(jù)采集裝置、控制平臺(tái)、無線通信裝置以及舵機(jī) 控制裝置。
[0011] 所述數(shù)據(jù)采集裝置,由角度傳感器MMA7361與彎曲傳感器flex 2.2組成。利用手臂 的模型,將傳感器安裝在手臂合適的位置,使其能夠采集手臂關(guān)鍵的自由度的姿態(tài)信息。傳 感器輸出接口輸出模擬電信號(hào),電信號(hào)中包含了手臂姿態(tài)的信息。
[0012] 所述控制平臺(tái)使用Arduino UNO R3開發(fā)板。將傳感器信號(hào)輸出管腳與Arduino開 發(fā)板的模擬接口連接,使用模數(shù)轉(zhuǎn)換技術(shù)將傳感器所采集到的電信號(hào)進(jìn)行采樣、量化;按照 如下的步驟對(duì)量化數(shù)值進(jìn)行數(shù)據(jù)處理:
[0013]第一步:將量化數(shù)值轉(zhuǎn)化為手臂彎曲或旋轉(zhuǎn)角度;
[0014]第二步:將彎曲或旋轉(zhuǎn)角度轉(zhuǎn)化為舵機(jī)控制指令中脈寬參數(shù);
[0015] 第三步:利用Arduino串口發(fā)送舵機(jī)控制指令。
[0016]按照上述的方法,Arduino串口即可將舵機(jī)控制指令傳輸至無線發(fā)送模塊。
[0017] 所述無線通信裝置,采用藍(lán)牙模塊,藍(lán)牙發(fā)送模塊與Arduino串口之間通過導(dǎo)線連 接起來,藍(lán)牙接收模塊與舵機(jī)控制器的串口之間通過導(dǎo)線連接起來。通過此種連接方式,舵 機(jī)控制指令可由Arduino控制平臺(tái)傳輸至舵機(jī)控制裝置。
[0018] 所述舵機(jī)控制裝置采用32路舵機(jī)控制器,該舵機(jī)控制器根據(jù)接收到的指令產(chǎn)生周 期性的脈沖信號(hào),此脈沖信號(hào)脈寬控制舵機(jī)的旋轉(zhuǎn)角度。利用各關(guān)節(jié)舵機(jī)的相對(duì)旋轉(zhuǎn)完成 對(duì)手臂動(dòng)作的模仿。
[0019] 本發(fā)明優(yōu)點(diǎn)及功效在于:
[0020] 1、本發(fā)明利用數(shù)據(jù)采集裝置采集手臂的信息,利用控制平臺(tái)對(duì)數(shù)據(jù)進(jìn)行量化、處 理,生成舵機(jī)控制器的指令,通過無線傳輸裝置將指令傳輸至舵機(jī)控制平臺(tái),舵機(jī)控制平臺(tái) 控制舵機(jī)的轉(zhuǎn)動(dòng),從而控制機(jī)械臂模仿人手臂的動(dòng)作。
[0021] 2、本發(fā)明對(duì)機(jī)械臂平臺(tái)進(jìn)行改進(jìn),使其包含七自由度,具有模仿人手臂的一部分 動(dòng)作的能力。
[0022] 3、本發(fā)明機(jī)械臂平臺(tái)包含數(shù)據(jù)反饋裝置,當(dāng)機(jī)械臂的指關(guān)節(jié)壓力達(dá)到閾值時(shí),可 觸發(fā)振子振動(dòng),提示操作者減少手指的握力,避免損壞機(jī)械臂所持物品。 【【附圖說明】】
[0023] 圖la所示為本發(fā)明所控制的機(jī)械臂結(jié)構(gòu)的主視圖。
[0024] 圖lb所示為本發(fā)明所控制的機(jī)械臂結(jié)構(gòu)的左視圖。
[0025] 圖lc所示為本發(fā)明所控制的機(jī)械臂結(jié)構(gòu)的俯視圖。
[0026] 圖2所示為本發(fā)明數(shù)據(jù)采集裝置中角度傳感器的結(jié)構(gòu)圖。
[0027] 圖3所示為本發(fā)明數(shù)據(jù)采集裝置中彎曲傳感器的結(jié)構(gòu)圖。
[0028] 圖4所示為本發(fā)明數(shù)據(jù)采集裝置的傳感器安裝位置圖。
[0029] 圖5a所示為本發(fā)明彎曲傳感器與控制平臺(tái)之間連接方式的示意圖。
[0030] 圖5b所示為本發(fā)明角度傳感器與控制平臺(tái)之間連接方式的示意圖。
[0031 ]圖6所示為本發(fā)明控制平臺(tái)與無線裝置之間連接方式示意圖。
[0032] 圖7所示為本發(fā)明無線裝置與舵機(jī)控制裝置之間連接方式示意圖。
[0033] 圖8所示為本發(fā)明使用手臂遠(yuǎn)程控制機(jī)械臂動(dòng)作軟件的流程圖。 【【具體實(shí)施方式】】
[0034]為能對(duì)本發(fā)明的特征、目的及功能有更進(jìn)一步的認(rèn)知與了解,現(xiàn)配合附圖對(duì)本發(fā) 明詳細(xì)解說如下。
[0035]圖la、圖lb和圖lc所示為本發(fā)明所控制機(jī)械臂的結(jié)構(gòu)圖,該機(jī)械臂由7個(gè)舵機(jī)以及 支架、圓盤等組成。7個(gè)舵機(jī)形成7個(gè)自由度,7個(gè)自由度與人的手臂自由度的對(duì)應(yīng)關(guān)系為: 1 一手指彎曲;2-手腕旋轉(zhuǎn);3-手腕彎曲;4 一手財(cái)旋轉(zhuǎn);5-手財(cái)彎曲;6-大臂彎曲;7-大 臂旋轉(zhuǎn)。7個(gè)自由度機(jī)械臂能夠克服傳統(tǒng)6自由度機(jī)械臂靈活性差、環(huán)境適應(yīng)性不高的缺點(diǎn), 有利于提高操作靈活性和避障能力,可操作性高。
[0036]圖2所示為本發(fā)明使用的數(shù)據(jù)采集裝置中MMA 7361角度傳感器的結(jié)構(gòu)圖。該角度 傳感器具有三路模擬輸出接口,三個(gè)接口輸出的模擬電壓的幅值中包含X、Y、Z三軸與水平 方向夾角的信息,Arduino控制中心通過對(duì)電壓幅值進(jìn)行數(shù)據(jù)處理,獲得傳感器所處平面的 姿態(tài)。
[0037] 圖3所示為本發(fā)明使用的數(shù)據(jù)采集裝置中flex 2.2彎曲傳感器的結(jié)構(gòu)圖。彎曲傳 感器具有兩個(gè)管腳,該傳感器的實(shí)質(zhì)為一種電阻值隨彎曲角度改變的可變電阻,阻值與彎 曲角度一一對(duì)應(yīng),利用這個(gè)原理,Arduino核心控制器可以采集彎曲傳感器彎曲的角度值。
[0038] 圖4所示為本發(fā)明數(shù)據(jù)采集裝置的傳感器安裝位置圖。本發(fā)明數(shù)據(jù)采集裝置于手 掌背部、小臂位置各安裝一個(gè)角度傳感器;于手指、手肘位置各安裝一個(gè)彎曲傳感器。上述 裝置即可采集上述人的手臂七個(gè)自由度的數(shù)據(jù)變化。
[0039] 本發(fā)明安裝于手掌背部的角度傳感器,通過檢測(cè)其X軸模擬輸出的電壓幅值,得到 手背俯仰的角度;檢測(cè)其Y軸的模擬電壓幅值,得到手腕旋轉(zhuǎn)的角度。通過數(shù)據(jù)處理,得到控 制2、3舵機(jī)的控制指令參數(shù)。安裝于小臂背部的角度傳感器與安裝于手掌背部的角度傳感 器工作原理類似,通過檢測(cè)其X軸模擬電壓的幅值,得到小臂俯仰的角度,繼而獲得5號(hào)舵機(jī) 的控制指令參數(shù)。由于大臂的運(yùn)動(dòng)姿態(tài)與小臂姿態(tài)之間具有一定的關(guān)聯(lián)性,通過對(duì)小臂俯 仰角度乘以一個(gè)衰減系數(shù),得到大臂的俯仰角度,從而獲得6號(hào)舵機(jī)的控制指令參數(shù)。
[0040] 本發(fā)明安置于手指的彎曲傳感器,通過檢測(cè)固定電阻兩端的電壓幅值,獲得手指 彎曲角度,經(jīng)過數(shù)據(jù)處理得到1號(hào)舵機(jī)的控制指令參數(shù)。同理,安置于手肘位置的彎曲傳感 器獲得肘關(guān)節(jié)旋轉(zhuǎn)的角度,從而獲得4號(hào)舵機(jī)的控制指令參數(shù)。將此彎曲角度乘以一個(gè)衰減 系數(shù)得到大臂旋轉(zhuǎn)的角度,繼而獲得7號(hào)舵機(jī)的控制指令參數(shù)。
[0041] 圖5a和圖5b所示為本發(fā)明數(shù)據(jù)采集裝置與控制平臺(tái)之間連接方式的示意圖。數(shù)據(jù) 采集裝置將模擬電信號(hào)傳輸至Arduino控制平臺(tái)的模擬輸入接口,經(jīng)過Arduino控制平臺(tái)的 采樣、量化,將包含手臂姿態(tài)信息的模擬電信號(hào)轉(zhuǎn)化為控制平臺(tái)能夠處理的量化數(shù)值??刂?平臺(tái)獲得量化數(shù)值后,對(duì)數(shù)值進(jìn)行如下處理:
[0042] 第一步:將量化數(shù)值轉(zhuǎn)化為手臂彎曲或旋轉(zhuǎn)角度。
[0043] 對(duì)于角度傳感器,選擇MMA7 361的量程為S = 0.8V/1 g,按照?qǐng)D4說明中的對(duì)應(yīng)方式, 可以得到彎曲/旋轉(zhuǎn)的角度Θ:
[0044]
L <5 ^ ^ 」
[0045] 其中,Umax為量化器的量化范圍的最大值;Ud,g=o為該軸無重力加速度分量時(shí),該軸 輸出電壓量化值;U d為該軸處于與水平夾角為Θ的位置時(shí),該軸輸出電壓量化值;g為重力加 速度的值,通常取9.8m/s2; S為角度傳感器該軸的靈敏度,本設(shè)計(jì)選擇800mV/lg; N為量化器 的位數(shù)。
[0046]彎曲傳感器的應(yīng)用電路為圖5b,其中固定電阻取值75kQ,Arduino控制中心采集 到的量化值Ud與彎曲角度Θ的對(duì)應(yīng)關(guān)系為:
[0047]
[0048] 其中,Rlmax為傳感器在彎曲角度范圍內(nèi)最大電阻值;辦為固定電阻的電阻值;0d_in 為彎曲傳感器能測(cè)量的彎曲角度的范圍;Rlmin為傳感器在彎曲角度范圍內(nèi)最小電阻值。
[0049] 第二步:將彎曲或旋轉(zhuǎn)角度轉(zhuǎn)化為舵機(jī)控制指令中脈寬參數(shù)。
[0050] 令周期性脈沖信號(hào)的周期為20ms,舵機(jī)的旋轉(zhuǎn)角度Θ與脈沖寬度TP的對(duì)應(yīng)關(guān)系為:
[0051]
[0052] 其中,ys為微秒,是一種時(shí)間的計(jì)量單位。
[0053] 第三步:利用Arduino串口發(fā)送舵機(jī)控制指令。
[0054]舵機(jī)控制指令的格式為:
[0055] #<ch>P<pw>T 150
[0056] 其中,<ch>為舵機(jī)號(hào),可在0-31之間選擇;<pw>為輸入正脈沖寬度,單位為微秒,范 圍500-2500;動(dòng)作完成時(shí)間為150ms ;P、T均為控制指令中的關(guān)鍵字。
[0057] 按照上述步驟,得到舵機(jī)控制裝置控制指令,從而使用舵機(jī)控制器控制舵機(jī)旋轉(zhuǎn) 完成模仿手臂動(dòng)作的目的??刂破脚_(tái)完成計(jì)算舵機(jī)控制裝置指令中的參數(shù)后,將舵機(jī)控制 裝置的指令通過控制中心的串口傳輸至無線發(fā)送設(shè)備。
[0058]圖6所示為本發(fā)明Arduino控制平臺(tái)與無線發(fā)送設(shè)備之間的連接方式示意圖??刂?平臺(tái)通過串口將舵機(jī)控制裝置指令傳輸至無線發(fā)送設(shè)備,無線發(fā)送設(shè)備對(duì)基帶信號(hào)進(jìn)行調(diào) 制,將已調(diào)信號(hào)通過天線發(fā)射到空間中。
[0059] 圖7所示為本發(fā)明無線接收設(shè)備與舵機(jī)控制器之間連接方式示意圖。無線接收設(shè) 備通過天線在空間中接收已調(diào)信號(hào),將其解調(diào)后生成的基帶信號(hào)通過TTL通信接口傳輸至 舵機(jī)控制器,舵機(jī)控制器即可獲得控制平臺(tái)發(fā)送的控制指令。舵機(jī)控制器依照控制指令的 參數(shù),生成周期性的脈沖電信號(hào),控制舵機(jī)的轉(zhuǎn)動(dòng),完成對(duì)手臂動(dòng)作的模仿。
[0060] 圖8所示為本發(fā)明使用手臂遠(yuǎn)程控制機(jī)械臂動(dòng)作軟件的流程圖。如圖8所示,基于 手臂動(dòng)作控制的機(jī)械臂的工作流程如下:首先,初始化控制平臺(tái)串口的波特率;其次,本發(fā) 明控制中心的模擬或數(shù)字輸入接口將手臂姿態(tài)數(shù)據(jù)傳輸至控制平臺(tái),控制平臺(tái)對(duì)手臂姿態(tài) 數(shù)據(jù)進(jìn)行處理,計(jì)算得到舵機(jī)控制裝置控制指令的參數(shù);最后,舵機(jī)控制指令傳輸至舵機(jī)控 制器,舵機(jī)控制器根據(jù)指令生成周期性脈沖信號(hào)控制舵機(jī)旋轉(zhuǎn),即完成了人的手臂遠(yuǎn)程控 制機(jī)械臂的目的。
[0061] 如軟件流程圖所示,本發(fā)明于機(jī)械臂手指關(guān)節(jié)位置安裝壓力傳感器,壓力傳感器 對(duì)機(jī)械臂的握力進(jìn)行實(shí)時(shí)反饋。若壓力超過預(yù)先設(shè)定的閾值,即會(huì)引發(fā)振子振動(dòng)。本方法可 以避免因機(jī)械臂的指關(guān)節(jié)處壓力過大造成的物品損害。
[0062] 在本實(shí)例中,各自由度的控制方法如下:
[0063] 1、手指彎曲自由度控制方法
[0064]第一步:利用安置于手指處的flex 2.2彎曲傳感器,將手指彎曲角度信息轉(zhuǎn)化為 電壓的幅值信息;
[0065]第二步:Arduino控制中心對(duì)模擬電壓進(jìn)行采樣、量化,并將量化值轉(zhuǎn)化為手指彎 曲的角度,轉(zhuǎn)化公式如下:
[0066]
[0067] 其中,Rlmax為傳感器在彎曲角度范圍內(nèi)最大電阻值;R2為與安置于手指位置的彎曲 傳感器串聯(lián)的固定電阻的電阻值;9 d_in為彎曲傳感器能測(cè)量的彎曲角度的范圍,本實(shí)例取 90° ;Rlmin為傳感器在彎曲角度范圍內(nèi)最小電阻值。
[0068] 第三步:將手指彎曲的角度轉(zhuǎn)化為舵機(jī)控制指令中的脈寬參數(shù),并生成舵機(jī)控制 指令,手指彎曲的角度與舵機(jī)控制指令中的脈寬參數(shù)對(duì)應(yīng)關(guān)系為:
[0069]
[0070]生成的舵機(jī)控制指令為:
[0071] #〇P<pw>T 150
[0072] 其中,T、P均為控制指令中的關(guān)鍵字,<pw>為脈寬的數(shù)值。
[0073] 第四步:Arduin〇將完整的舵機(jī)控制指令通過串口發(fā)送至藍(lán)牙發(fā)送模塊,藍(lán)牙發(fā)送 模塊對(duì)基帶信號(hào)進(jìn)行調(diào)制,將已調(diào)信號(hào)通過天線發(fā)射到空間中;
[0074]第五步:藍(lán)牙接收模塊將已調(diào)信號(hào)解調(diào),通過TTL通信串口將解調(diào)后的信號(hào)傳輸至 舵機(jī)控制器,舵機(jī)控制器根據(jù)舵機(jī)控制指令控制如圖1所示的1號(hào)舵機(jī)旋轉(zhuǎn),1號(hào)舵機(jī)旋轉(zhuǎn)帶 動(dòng)機(jī)械臂手指關(guān)節(jié)齒輪的旋轉(zhuǎn),完成手指的彎曲動(dòng)作。
[0075] 2、手腕旋轉(zhuǎn)自由度控制方法
[0076]第一步:利用安置于手腕處的MMA7361角度傳感器,將手腕旋轉(zhuǎn)角度信息轉(zhuǎn)化為Y 軸輸出的模擬電壓的電壓幅值信息;
[0077] 第二步:Arduino控制中心對(duì)模擬電壓進(jìn)行采樣、量化,并將量化值轉(zhuǎn)化為手腕旋 轉(zhuǎn)的角度,轉(zhuǎn)化公式如下:
[0078]
[0079] 其中,Ud,g=o為角度傳感器y軸無重力加速度分量時(shí),y軸輸出電壓量化值;Ud為y軸 處于與水平夾角為Θ的位置時(shí),y軸輸出電壓量化值;S y為角度傳感器y軸靈敏度,本設(shè)計(jì)選 擇800mV/1 g; N為量化器的位數(shù),本設(shè)計(jì)中N取10。
[0080] 第三步:將手腕旋轉(zhuǎn)的角度轉(zhuǎn)化為舵機(jī)控制指令中的脈寬參數(shù),并生成舵機(jī)控制 指令,手腕旋轉(zhuǎn)的角度與舵機(jī)控制指令中的脈寬參數(shù)對(duì)應(yīng)關(guān)系為:
[0081]
[0082]生成的舵機(jī)控制指令為:
[0083] #lP<pw>T 150
[0084] 第四步:Arduin〇將完整的舵機(jī)控制指令通過串口發(fā)送至藍(lán)牙發(fā)送模塊,藍(lán)牙發(fā)送 模塊對(duì)基帶信號(hào)進(jìn)行調(diào)制,將已調(diào)信號(hào)通過天線發(fā)射到空間中;
[0085]第五步:藍(lán)牙接收模塊將已調(diào)信號(hào)解調(diào),通過TTL通信串口將解調(diào)后的信號(hào)傳輸至 舵機(jī)控制器,舵機(jī)控制器根據(jù)舵機(jī)控制指令控制如圖1所示的2號(hào)舵機(jī)旋轉(zhuǎn),2號(hào)舵機(jī)旋轉(zhuǎn)帶 動(dòng)機(jī)械臂手掌部分轉(zhuǎn)動(dòng),完成手腕旋轉(zhuǎn)的動(dòng)作。
[0086] 3、手腕俯仰自由度控制方法
[0087]第一步:利用安置于手背處和安置于小臂處的的MMA7361角度傳感器,將手腕和手 肘與水平面的夾角信息轉(zhuǎn)化為X軸輸出的模擬電壓的電壓幅值信息;
[0088] 第二步:Arduino控制中心對(duì)模擬電壓進(jìn)行采樣、量化,并將安置于手背處傳感器 輸出的量化值與安置于小臂處的傳感器輸出的量化值相減,將差值轉(zhuǎn)化為手腕俯仰的角 度,轉(zhuǎn)化公式如下:
[0089]
[0090] 其中,Uld,g = 0為安置于手背處角度傳感器X軸無重力加速度分量時(shí),X軸輸出電壓 量化值;U2d,g = 0為安置于小臂處角度傳感器X軸無重力加速度分量時(shí),X軸輸出電壓量化 值;Udl為安置于手背處的角度傳感器的X軸處于與水平面夾角為Θ時(shí),X軸輸出電壓量化值; Ud2為安置于小臂處的角度傳感器的X軸處于與水平面夾角為Θ時(shí),X軸輸出電壓量化值;N為 量化器的位數(shù),本設(shè)計(jì)N取10。
[0091 ]第三步:將手腕俯仰的角度轉(zhuǎn)化為舵機(jī)控制指令中的脈寬參數(shù),并生成舵機(jī)控制 指令,手腕俯仰的角度與舵機(jī)控制指令中的脈寬參數(shù)對(duì)應(yīng)關(guān)系為:
[0092]
[0093]生成的舵機(jī)控制指令為:
[0094] #2P<pw>T 150
[0095] 第四步:Arduin〇將完整的舵機(jī)控制指令通過串口發(fā)送至藍(lán)牙發(fā)送模塊,藍(lán)牙發(fā)送 模塊對(duì)基帶信號(hào)進(jìn)行調(diào)制,將已調(diào)信號(hào)通過天線發(fā)射到空間中;
[0096]第五步:藍(lán)牙接收模塊將已調(diào)信號(hào)解調(diào),通過TTL通信串口將解調(diào)后的信號(hào)傳輸至 舵機(jī)控制器,舵機(jī)控制器根據(jù)舵機(jī)控制指令控制如圖1所示的3號(hào)舵機(jī)旋轉(zhuǎn),3號(hào)舵機(jī)旋轉(zhuǎn)帶 動(dòng)機(jī)械臂手掌部分俯仰運(yùn)動(dòng),完成手腕俯仰的動(dòng)作。
[0097] 4、手肘旋轉(zhuǎn)自由度控制方法
[0098] 第一步:利用安置于手肘處的flex 2.2彎曲傳感器,將手肘旋轉(zhuǎn)角度信息轉(zhuǎn)化為 輸出的模擬電壓的電壓幅值信息;
[0099] 第二步:Arduino控制中心對(duì)模擬電壓進(jìn)行采樣、量化,并將量化值轉(zhuǎn)化為手指彎 曲的角度,轉(zhuǎn)化公式如下:
[0100]
[0101] 其中,r2為與安置于手肘位置的彎曲傳感器串聯(lián)的固定電阻的電阻值;0d_in為彎 曲傳感器能測(cè)量的彎曲角度的范圍,本實(shí)例取90°。
[0102] 第三步:將手肘彎曲的角度轉(zhuǎn)化為舵機(jī)控制指令中的脈寬參數(shù),并生成舵機(jī)控制 指令,手肘彎曲的角度與舵機(jī)控制指令中的脈寬參數(shù)對(duì)應(yīng)關(guān)系為:
[0103]
[0104] 生成的舵機(jī)控制指令為:
[0105] #3P<pw>T 150
[0106] 第四步:Arduin〇將完整的舵機(jī)控制指令通過串口發(fā)送至藍(lán)牙發(fā)送模塊,藍(lán)牙發(fā)送 模塊對(duì)基帶信號(hào)進(jìn)行調(diào)制,將已調(diào)信號(hào)通過天線發(fā)射到空間中;
[0107] 第五步:藍(lán)牙接收模塊將已調(diào)信號(hào)解調(diào),通過TTL通信串口將解調(diào)后的信號(hào)傳輸至 舵機(jī)控制器,舵機(jī)控制器根據(jù)舵機(jī)控制指令控制如圖1所示的4號(hào)舵機(jī)旋轉(zhuǎn),4號(hào)舵機(jī)旋轉(zhuǎn)帶 動(dòng)機(jī)械臂手肘以上部分旋轉(zhuǎn),完成手肘旋轉(zhuǎn)的動(dòng)作。
[0108] 5、小臂俯仰俯仰自由度控制方法
[0109] 第一步:利用安置于小臂處的MMA7361角度傳感器,將小臂俯仰的角度信息轉(zhuǎn)化為 X軸輸出的模擬電壓的電壓幅值信息;
[0110]第二步:Arduino控制中心對(duì)模擬電壓進(jìn)行采樣、量化,并將量化值轉(zhuǎn)化為小臂俯 仰的角度,轉(zhuǎn)化公式如下:
[0111]
[0112] 其中,Ud,g=0為安置于小臂處的角度傳感器X軸無重力加速度分量時(shí),X軸輸出電壓 量化值;Ud為X軸處于與水平夾角為Θ的位置時(shí),X軸輸出電壓量化值。
[0113] 第三步:將小臂俯仰的角度轉(zhuǎn)化為舵機(jī)控制指令中的脈寬參數(shù),并生成舵機(jī)控制 指令,小臂俯仰的角度與舵機(jī)控制指令中的脈寬參數(shù)對(duì)應(yīng)關(guān)系為:
[0114]
[0115]生成的舵機(jī)控制指令為:
[0116] #4P<pw>T 150
[0117] 第四步:Arduin〇將完整的舵機(jī)控制指令通過串口發(fā)送至藍(lán)牙發(fā)送模塊,藍(lán)牙發(fā)送 模塊對(duì)基帶信號(hào)進(jìn)行調(diào)制,將已調(diào)信號(hào)通過天線發(fā)射到空間中;
[0118] 第五步:藍(lán)牙接收模塊將已調(diào)信號(hào)解調(diào),通過TTL通信串口將解調(diào)后的信號(hào)傳輸至 舵機(jī)控制器,舵機(jī)控制器根據(jù)舵機(jī)控制指令控制如圖1所示的5號(hào)舵機(jī)旋轉(zhuǎn),5號(hào)舵機(jī)旋轉(zhuǎn)帶 動(dòng)機(jī)械臂手肘以上部分俯仰,完成小臂俯仰的動(dòng)作。
[0119] 6、大臂俯仰自由度控制方法
[0120] 第一步:利用安置于手背處的MMA7361角度傳感器,將小臂俯仰角度信息轉(zhuǎn)化為X 軸輸出的模擬電壓的電壓幅值信息;
[0121] 第二步:Arduino控制中心對(duì)模擬電壓進(jìn)行采樣、量化,并將量化值轉(zhuǎn)化為小臂俯 仰的角度,轉(zhuǎn)化公式如下:
[0122]
[0123] 第三步:利用大臂與小臂運(yùn)動(dòng)之間的相關(guān)性,將小臂俯仰角度乘以一個(gè)衰減系數(shù) 得到大臂俯仰角度,其對(duì)應(yīng)關(guān)系為:
[0124] θ,=〇·2 · Θ
[0125] 其中,Θ '為大臂俯仰角度,Θ為小臂俯仰角度。
[0126] 第四步:將大臂俯仰的角度轉(zhuǎn)化為舵機(jī)控制指令中的脈寬參數(shù),并生成舵機(jī)控制 指令,大臂俯仰的角度與舵機(jī)控制指令中的脈寬參數(shù)對(duì)應(yīng)關(guān)系為:
[0127]
[0128] 生成的酡機(jī)控制指令為:
[0129] #5P<pw>T 150
[0130] 第五步:Arduino將完整的舵機(jī)控制指令通過串口發(fā)送至藍(lán)牙發(fā)送模塊,藍(lán)牙發(fā)送 模塊對(duì)基帶信號(hào)進(jìn)行調(diào)制,將已調(diào)信號(hào)通過天線發(fā)射到空間中;
[0131] 第六步:藍(lán)牙接收模塊將已調(diào)信號(hào)解調(diào),通過TTL通信串口將解調(diào)后的信號(hào)傳輸至 舵機(jī)控制器,舵機(jī)控制器根據(jù)舵機(jī)控制指令控制如圖1所示的6號(hào)舵機(jī)旋轉(zhuǎn),6號(hào)舵機(jī)旋轉(zhuǎn)帶 動(dòng)機(jī)械臂大臂關(guān)節(jié)以上的部分俯仰運(yùn)動(dòng),完成大臂俯仰的動(dòng)作。
[0132] 7、大臂旋轉(zhuǎn)自由度控制方法
[0133] 第一步:利用安置于手肘處的flex 2.2彎曲傳感器,將手肘旋轉(zhuǎn)角度信息轉(zhuǎn)化為 輸出的模擬電壓的電壓幅值信息;
[0134] 第二步:Arduino控制中心對(duì)模擬電壓進(jìn)行采樣、量化,并將量化值轉(zhuǎn)化為手指彎 曲的角度,轉(zhuǎn)化公式如下:
[0135]
[0136] 第三步:利用大臂與小臂運(yùn)動(dòng)之間的相關(guān)性,得到大臂旋轉(zhuǎn)的角度:
[0137] θ,=〇·1·θ
[0138] 其中,Θ '為大臂旋轉(zhuǎn)角度,Θ為小臂旋轉(zhuǎn)角度。
[0139] 第四步:將大臂旋轉(zhuǎn)的角度轉(zhuǎn)化為舵機(jī)控制指令中的脈寬參數(shù),并生成舵機(jī)控制 指令,大臂旋轉(zhuǎn)的角度與舵機(jī)控制指令中的脈寬參數(shù)對(duì)應(yīng)關(guān)系為:
[0140]
[0141 ]生成的舵機(jī)控制指令為:
[0142] #6P<pw>T 150
[0143] 第五步:Arduino將完整的舵機(jī)控制指令通過串口發(fā)送至藍(lán)牙發(fā)送模塊,藍(lán)牙發(fā)送 模塊對(duì)基帶信號(hào)進(jìn)行調(diào)制,將已調(diào)信號(hào)通過天線發(fā)射到空間中;
[0144] 第六步:藍(lán)牙接收模塊將已調(diào)信號(hào)解調(diào),通過TTL通信串口將解調(diào)后的信號(hào)傳輸至 舵機(jī)控制器,舵機(jī)控制器根據(jù)舵機(jī)控制指令控制如圖1所示的7號(hào)舵機(jī)旋轉(zhuǎn),7號(hào)舵機(jī)旋轉(zhuǎn)帶 動(dòng)機(jī)械臂大臂關(guān)節(jié)以上的部分旋轉(zhuǎn),完成大臂旋轉(zhuǎn)的動(dòng)作。
[0145] 雖然本發(fā)明已以實(shí)施例揭露如上,然而其并非用以限定本發(fā)明,任何所屬技術(shù)領(lǐng) 域中具有通常知識(shí)者,在不脫離本發(fā)明的精神和范圍內(nèi),當(dāng)可作出種種等同的改變或替換, 因此本發(fā)明的保護(hù)范圍當(dāng)視后附的權(quán)利要求書所界定的范圍為準(zhǔn)。
【主權(quán)項(xiàng)】
1. 一種基于手臂動(dòng)作控制機(jī)械臂的方法,其特征在于,該方法的步驟如下: 第一步:利用傳感器將手臂關(guān)鍵自由度的姿態(tài)信息轉(zhuǎn)化為模擬電壓的幅值; 第二步:利用Arduino控制器對(duì)模擬信號(hào)進(jìn)行采樣、量化,并利用量化數(shù)值轉(zhuǎn)化為手臂 關(guān)鍵自由度旋轉(zhuǎn)或彎曲的角度; 第三步:Arduin〇控制器將旋轉(zhuǎn)或彎曲的角度值轉(zhuǎn)化為舵機(jī)控制指令的參數(shù); 第四步:Arduin〇將完整的舵機(jī)控制指令通過串口發(fā)送至藍(lán)牙發(fā)送模塊,藍(lán)牙發(fā)送模塊 對(duì)基帶信號(hào)進(jìn)行調(diào)制,將已調(diào)信號(hào)通過天線發(fā)射到空間中; 第五步:藍(lán)牙接收模塊將已調(diào)信號(hào)解調(diào),通過TTL通信串口將解調(diào)后的信號(hào)傳輸至舵機(jī) 控制器,舵機(jī)控制器根據(jù)舵機(jī)控制指令控制對(duì)應(yīng)的舵機(jī)旋轉(zhuǎn),完成對(duì)手臂動(dòng)作的模仿。2. 根據(jù)權(quán)利要求1所述的一種基于手臂動(dòng)作控制機(jī)械臂的方法,其特征在于:所述的關(guān) 鍵自由度為手指彎曲、手腕旋轉(zhuǎn)、手腕彎曲、手肘旋轉(zhuǎn)、手肘彎曲、大臂彎曲及大臂旋轉(zhuǎn)。3. 根據(jù)權(quán)利要求1所述的一種基于手臂動(dòng)作控制機(jī)械臂的方法,其特征在于:該方法所 用到的硬件模塊包括:數(shù)據(jù)采集裝置、控制平臺(tái)、無線通信裝置以及舵機(jī)控制裝置。4. 根據(jù)權(quán)利要求1或3所述的一種基于手臂動(dòng)作控制機(jī)械臂的方法,其特征在于:所述 數(shù)據(jù)采集裝置,由角度傳感器MMA7361與彎曲傳感器flex 2.2組成;利用手臂的模型,將傳 感器安裝在手臂的位置,使其能夠采集手臂關(guān)鍵的自由度的姿態(tài)信息;傳感器輸出接口輸 出模擬電信號(hào),電信號(hào)中包含了手臂姿態(tài)的信息。5. 根據(jù)權(quán)利要求1或3所述的一種基于手臂動(dòng)作控制機(jī)械臂的方法,其特征在于:所述 控制平臺(tái)使用Arduino UNO R3開發(fā)板;將傳感器信號(hào)輸出管腳與Arduino開發(fā)板的模擬接 口連接,使用模數(shù)轉(zhuǎn)換技術(shù)將傳感器所采集到的電信號(hào)進(jìn)行采樣、量化;并按照如下的步驟 對(duì)量化數(shù)值進(jìn)行數(shù)據(jù)處理: 步驟A:將量化數(shù)值轉(zhuǎn)化為手臂彎曲或旋轉(zhuǎn)角度; 步驟B:將彎曲或旋轉(zhuǎn)角度轉(zhuǎn)化為舵機(jī)控制指令中脈寬參數(shù); 步驟C:利用Arduino串口發(fā)送舵機(jī)控制指令; 按照步驟A-步驟C所述,Arduino串口將舵機(jī)控制指令傳輸至無線發(fā)送模塊。6. 根據(jù)權(quán)利要求1或3所述的一種基于手臂動(dòng)作控制機(jī)械臂的方法,其特征在于:所述 無線通信裝置,采用藍(lán)牙模塊,藍(lán)牙發(fā)送模塊與Arduino串口之間通過導(dǎo)線連接起來,藍(lán)牙 接收模塊與舵機(jī)控制器的串口之間通過導(dǎo)線連接起來;舵機(jī)控制指令由Arduino控制平臺(tái) 傳輸至舵機(jī)控制裝置。7. 根據(jù)權(quán)利要求1或3所述的一種基于手臂動(dòng)作控制機(jī)械臂的方法,其特征在于:所述 舵機(jī)控制裝置采用32路舵機(jī)控制器,該舵機(jī)控制器根據(jù)接收到的指令產(chǎn)生周期性的脈沖信 號(hào),此脈沖信號(hào)脈寬控制舵機(jī)的旋轉(zhuǎn)角度;利用各關(guān)節(jié)舵機(jī)的相對(duì)旋轉(zhuǎn)完成對(duì)手臂動(dòng)作的 模仿。
【文檔編號(hào)】B25J13/00GK105856242SQ201610429863
【公開日】2016年8月17日
【申請(qǐng)日】2016年6月16日
【發(fā)明人】趙洪博, 孫超, 杜松霖, 馮文全, 趙琦, 張杰斌, 高翔, 方麗亞
【申請(qǐng)人】北京航空航天大學(xué)