李紅淵
摘要
本文介紹了一種基于Arduino語音控制的五指靈巧手。該方案主要針對于會說話的殘疾人,通過語音控制實現(xiàn)對目標(biāo)物體的抓取.該語音控制的靈巧手系統(tǒng)包含電池模塊、控制器、電機驅(qū)動模塊、語音模塊等。該五指靈巧手方案為在上海哲謙應(yīng)用科技有限公司期間設(shè)計的第一代靈巧手。語音模塊為非特定人聲語音模塊LD3320。該靈巧手可通過語音控制實現(xiàn)對日常物體的抓取。
【關(guān)鍵詞】非特定人聲語音控制 五指靈巧手
據(jù)不完全統(tǒng)計,截止至2010年末,我國目前肢體殘疾人數(shù)高達(dá)兩千多萬,傳統(tǒng)假肢多采用兩指或三指為主,既不靈活也不美觀,仿人的五指靈巧手產(chǎn)品極少,且多數(shù)進(jìn)口、價格昂貴。本文介紹了一種基于Arduino平臺語音控制五指靈巧手的方案,使用者只要通過語音說出自己要做的動作,即可實現(xiàn)對目標(biāo)物體的抓取。
該語音控制的靈巧手系統(tǒng)包含電池/電源模塊、控制器、電機驅(qū)動模塊、語音模塊等。該五指靈巧手方案為在上海哲謙應(yīng)用科技有限公司期間設(shè)計的第一代靈巧手。語音模塊為非特定人聲語音模塊LD3320。
1 基于Arduino語音控制五指靈巧手方案
本文介紹了一種基于Arduino語音控制五指靈巧手的方案。該方案主要針對于會說話的殘疾人,通過非特定人聲語音控制五指靈巧手實現(xiàn)對目標(biāo)物體的抓取。五指靈巧手采用欠驅(qū)動結(jié)構(gòu),6個自由度,11個活動關(guān)節(jié)。
目前多數(shù)語音交互產(chǎn)品需要聯(lián)網(wǎng),交互效果受網(wǎng)絡(luò)信號制約,且價格較高,不適合殘疾人靈巧手的應(yīng)用,本方案采用非特定人聲語音模塊。方案主要包括控制器、非特定人聲語音模塊、驅(qū)動器及編碼器、執(zhí)行機構(gòu)、力傳感器、電池/電源模塊等。系統(tǒng)框圖如圖1所示。
備注:橘色路徑為能量路徑;箭頭路徑為信號傳輸路徑。
1.1 控制器
控制器用于與非特定人聲語音模塊LD3320通信、讀取力傳感器值、控制電機并讀取電機編碼器的值、用于控制器之間互相通信。主、從控制器均采用ATMEGA2560,16路模擬輸入,14路PWM輸出,4路UART;256KB Flash,8KB RAM,16MHz晶振。
1.2 非特定人聲語音模塊LD3320
LD3320是一顆基于非特定人語音識別技術(shù)的語音識別/聲控芯片,無需用戶進(jìn)行錄音訓(xùn)練。芯片上集成了高精度的A/D和D/A接口,無需外接輔助的Flash和RAM,即可以實現(xiàn)語音識別/聲控/人機對話功能。把高靈敏度低信噪比麥克風(fēng)接在芯片的AD引腳上即可實現(xiàn)錄音功能。支持用戶自由編輯50條關(guān)鍵詞語條,無需語音喚醒。
1.3 力傳感器
力傳感器采用單點壓力傳感器FSR400,柔性力傳感器的電阻值隨著作用于感應(yīng)區(qū)上的壓力增大而減小。根據(jù)壓力傳感器規(guī)格書及實測數(shù)值,10N~100N力范圍,F(xiàn)SR400電阻變化范圍為4kohm~1kohm。
1.4 電機驅(qū)動模塊
電機驅(qū)動模塊采用LV8548,一個模塊可同時控制兩路電機。
1.5 編碼器
編碼器采用FAULHABERPA2-100。
每轉(zhuǎn)100線,頻率上限35KHz,輸出兩通道信號的方波;
輸入電壓范圍:2.7~3.3V;工作電流8mA;
脈沖寬度180±45°e;AB通道信號之間相位差90±45°e;
邏輯狀態(tài)脈沖寬度90±45°e;信號周期360±30°e
碼盤轉(zhuǎn)動慣量0.02gcm2;工作溫度-25℃~85℃。
1.6 執(zhí)行機構(gòu)
執(zhí)行機構(gòu)即電機,本系統(tǒng)選用的是直流有刷電機,型號FAULHABER 1024SR 009SR。
標(biāo)稱電壓9V,電樞電阻14.9歐姆,最大輸出功率1.34W,最大功效82%,空載轉(zhuǎn)速12000轉(zhuǎn)/分鐘,堵轉(zhuǎn)轉(zhuǎn)矩4.28mNm,堵轉(zhuǎn)電流0.6A,轉(zhuǎn)子轉(zhuǎn)動慣量0.12gcm2,額定轉(zhuǎn)矩1.5mNm,額定電流0.22A,額定轉(zhuǎn)速6910轉(zhuǎn)/分鐘。
減速箱10/1,減速比16:1。
1.7 電池/電源模塊
電池采用9V2.6AH鋰離子電池。
2 軟件設(shè)計實現(xiàn)
軟件系統(tǒng)架構(gòu)為四層結(jié)構(gòu),從上層到下層分別是應(yīng)用程序?qū)印?yīng)用程序框架層、系統(tǒng)運行庫層及驅(qū)動層,分別作用如下:
應(yīng)用程序?qū)樱簩崿F(xiàn)特定應(yīng)用功能的程序。如:語音控制抓取物體。
應(yīng)用程序框架層:很多核心算法是通過這一層來實現(xiàn)的,如抓取算法,如抓球。
系統(tǒng)運行庫層:是應(yīng)用程序框架層的支撐,如單手指開合。
驅(qū)動層:驅(qū)動層是程序以訪問底層硬件的形式實現(xiàn)人機交互,驅(qū)動程序和應(yīng)用程序之間需要實現(xiàn)相應(yīng)的信息交互,一方面,應(yīng)用程序通過對驅(qū)動程序發(fā)送相應(yīng)的指令,實現(xiàn)硬件控制的動作指令,另一方面,驅(qū)動程序?qū)⒂布x寫的狀態(tài)、從硬件上獲得的數(shù)據(jù)傳送給應(yīng)用程序,實現(xiàn)應(yīng)用程序與驅(qū)動程序間的交互。如測速、測距、計數(shù)等。
部分程序如下:
#include"103201"
#include"FSR.h"
#include"Smarthand.h"
#include"TMI.h"
#include"Demo.h"
#include"Ball.h"
#include"Card.h"
void setup()
{
Serial.begin(9600)//配置9600
Voice.init()://初始化VoiceRecognition模塊
Voice.addCommand("yan shi",0);//添加指令,參數(shù)
Voice.addCommand("na ka pian",1);
Voice.addCommand("zhua ka pian",1);
Voice.addCommand("zhua qiu",2);
Voice.addCommand("na qiu",2);
Voice.addCommand("wo qiu",2);
Voice.addCommand("zhang kai",3);
Voice.starto;//開始識別
}
void loop()
{
int number;
number=switch(Voice.reado);//判斷識別
Serial.print("Mode=");
Serial.println(number);
if(number==0)Demo();
//語音識別到“yan shi”時,執(zhí)行應(yīng)用程序框架層的Demo程序。
else if(number==1)Card();
//語音識別到"na ka pian"或"zhua kapian"時,執(zhí)行應(yīng)用程序框架層的Card程序。
else if(number==2)Ball();
//語音識別到"zhua qiu"、"na qiu"或"woqiu"時,執(zhí)行應(yīng)用程序框架層的Ball程序。
else if(number==3)Openo;
//語音識別到"zhang kai"時,執(zhí)行應(yīng)用程序框架層的Open程序。
}
3 結(jié)論
基于Arduino語音控制五指靈巧手的方案實現(xiàn)了語音控制五指靈巧手抓取物體的功能。無需聯(lián)網(wǎng),無需語音喚醒。五指靈巧手采用欠驅(qū)動結(jié)構(gòu),6個自由度,11個活動關(guān)節(jié),重約0.8kg,可強力抓取3kg物品,精準(zhǔn)抓取0.2kg物體。具有力機械自鎖功能,電機失電,機械手所持物體不會跌落??勺ト☆惽蛐?、規(guī)則多邊形、類圓柱體、勺子、卡片、手機、電源插頭等物品,可執(zhí)行點擊、OK、Yeah等手勢動作。
參考文獻(xiàn)
[1]趙璐,吳蒙.基于Arduino的語音識別與控制系統(tǒng)實現(xiàn)[J].微型機與應(yīng)用,2015,34(21):55-57,60.