第一篇:自動(dòng)避障小車技術(shù)報(bào)告2
自動(dòng)避障小車
技術(shù)報(bào)告
學(xué)
校:樂山師范學(xué)院成員:鄭素仙
朱平
吳志 指導(dǎo)老師:張九華
前言
設(shè)計(jì)背景:在科學(xué)探索和緊急搶險(xiǎn)中經(jīng)常會(huì)遇到對(duì)與一些危險(xiǎn)或人類不能直接到達(dá)的地域的探測(cè),這些就需要用機(jī)器人來完成。而在機(jī)器人在復(fù)雜地形中行進(jìn)時(shí)自動(dòng)避障是一項(xiàng)必不可少也是最基本的功能。因此,自動(dòng)避障系統(tǒng)的研發(fā)就應(yīng)運(yùn)而生。
我們的自動(dòng)避障小車就是基于這一系統(tǒng)開發(fā)而成的。隨著科技的發(fā)展,對(duì)于未知空間和人類所不能直接到達(dá)的地域的探索逐步成為熱門,這就使機(jī)器人的自動(dòng)避障有了重大的意義。我們的自動(dòng)避障小車就是自動(dòng)避障機(jī)器人中的一類。自動(dòng)避障小車可以作為地域探索機(jī)器人和緊急搶險(xiǎn)機(jī)器人的運(yùn)動(dòng)系統(tǒng),讓機(jī)器人在行進(jìn)中自動(dòng)避過障礙物。
目錄
一、設(shè)計(jì)目標(biāo):.........................................................4
二、方案設(shè)計(jì):.........................................................4
2.1直流調(diào)速系統(tǒng).................................................4 2.2檢測(cè)系統(tǒng).....................................................5 三 硬件設(shè)計(jì).............................................................6 3.1、SPCE061A單片機(jī)最小系統(tǒng).....................................6
3.1.1.SPCE061A時(shí)鐘電路...........................................................................................8
3.1.2.PLL鎖相環(huán)...........................................................................................................9 3.1.3.看門狗Watchdog..................................................................................................9 3.1.4.低電壓復(fù)位(LVR).........................................................................................10 3.1.5.I/O端口..............................................................................................................10 3.1.6.時(shí)基與定時(shí)器.....................................................................................................11 3.1.7.SPCE061A的定時(shí)器/計(jì)數(shù)器............................................................................11 3.1.8.ADC、DAC........................................................................................................12 3.2、超聲波傳感器..............................................12 四 軟件設(shè)計(jì)...........................................................16 4.1軟件設(shè)計(jì)各模塊..............................................16 4.2速度控制....................................................17 4.3障礙物檢測(cè)..................................................17 4.4看門狗......................................................17 4.5基頻中斷....................................................18 4.6程序設(shè)計(jì)流程圖..............................................19 五:測(cè)試數(shù)據(jù)、測(cè)試結(jié)果分析及結(jié)論.......................................19 程序附錄...............................................................21 1.主程序:....................................................21 2.中斷程序....................................................24
3、測(cè)距程序....................................................28
一、設(shè)計(jì)目標(biāo):
1.小車從無障礙地區(qū)啟動(dòng)前進(jìn),感應(yīng)前進(jìn)路線上的障礙物后,能自動(dòng)避開障礙物。
2.根據(jù)障礙物的位置選擇下一步行進(jìn)方向,選擇左拐還是右拐,若障礙物在左邊則自動(dòng)右拐,若障礙物在右邊則左拐,若障礙物在正前方可任意選擇左拐或者是右拐,以達(dá)到避開障礙物的目的。
3.通過利用單片機(jī)內(nèi)時(shí)鐘源的控制設(shè)定左拐和右拐的時(shí)間,從而能持續(xù)前進(jìn)。
4.為達(dá)到速度的可控性,需設(shè)置兩個(gè)獨(dú)立按鍵對(duì)小車進(jìn)行控速。
二、方案設(shè)計(jì):
根據(jù)設(shè)計(jì)要求,確定如下方案:在現(xiàn)有玩具電動(dòng)車的基礎(chǔ)上,加裝超聲波傳感器,實(shí)現(xiàn)對(duì)電動(dòng)車的運(yùn)行狀況的實(shí)時(shí)測(cè)量,并將測(cè)量數(shù)據(jù)傳送至單片機(jī)進(jìn)行處理,然后由單片機(jī)根據(jù)所檢測(cè)的各種數(shù)據(jù)實(shí)現(xiàn)對(duì)電動(dòng)車的智能控制。
這種方案能實(shí)現(xiàn)對(duì)電動(dòng)車的運(yùn)動(dòng)狀態(tài)進(jìn)行實(shí)時(shí)控制,控制靈活、可靠,精度高,可滿足對(duì)系統(tǒng)的各項(xiàng)要求。
2.1直流調(diào)速系統(tǒng)
采用脈寬調(diào)速系統(tǒng)
脈寬調(diào)速系統(tǒng)的主電路采用脈寬調(diào)制式變換器,簡(jiǎn)稱PWM變換器。
脈寬調(diào)速也可通過單片機(jī)控制繼電器的閉合來實(shí)現(xiàn),但是驅(qū)動(dòng)能力有限。為順利實(shí)現(xiàn)電動(dòng)小汽車的前行與倒車,本設(shè)計(jì)采用了可逆PWM變換器。可逆PWM變換器主電路的結(jié)構(gòu)式有H型、T型等類型。我們?cè)谠O(shè)計(jì)中采用了常用的雙極式H型變換器,它是由4個(gè)三極電力晶體管和4個(gè)續(xù)流二極管組成的橋式電路。如附錄一:
2.2檢測(cè)系統(tǒng)
檢測(cè)系統(tǒng)主要實(shí)現(xiàn)紅外傳感器,超聲波傳感,光電傳感器對(duì)車的運(yùn)行進(jìn)行實(shí)時(shí)測(cè)量,即利用這種傳感器對(duì)電動(dòng)車的避障、位置、行車狀態(tài)進(jìn)行測(cè)量。行車開始、結(jié)束及超聲波檢測(cè):
在車的開始和結(jié)束階段,都是用紅外式的光電傳感器,當(dāng)按下此光電開頭,小車就開始行駛,在完成任務(wù)后,再按下此開關(guān),小車就停止前進(jìn)。在前進(jìn)的過程中不斷的發(fā)送超聲波,并對(duì)接到的進(jìn)行處理計(jì)算。如果處理得到的結(jié)果是發(fā)現(xiàn)前面的障礙時(shí),再行進(jìn)一次距離的處理,當(dāng)距離小是40CM時(shí),讓小車倒退一段時(shí)間,再進(jìn)行避障處理,如果距離大于40CM,就直接進(jìn)避障處理。
三 硬件設(shè)計(jì)
3.1、SPCE061A單片機(jī)最小系統(tǒng)
我們用的是凌陽的SPCE061A單片機(jī)最小系統(tǒng)其概述如下: SPCE061A 是繼μ’nSP?系列產(chǎn)品SPCE500A等之后凌陽科技推出的又一款16位結(jié)構(gòu)的微控制器。與SPCE500A不同的是,在存儲(chǔ)器資源方面考慮到用戶的較少資源的需求以及便于程序調(diào)試等功能,SPCE061A里只內(nèi)嵌32K字的閃存(FLASH)。較高的處理速度使μ’nSP?能夠非常容易地、快速地處理復(fù)雜的數(shù)字信號(hào)。因此,與SPCE500A相比,以μ’nSP?為核心的SPCE061A微控制器是適用于數(shù)字語音識(shí)別應(yīng)用領(lǐng)域產(chǎn)品的一種最經(jīng)濟(jì)的選擇。
性能
16位μ’nSP?微處理器;
工作電壓(CPU)VDD為2.4~3.6V(I/O)VDDH為2.4~5.5V ;
CPU時(shí)鐘:0.32MHz~49.152MHz ;
內(nèi)置2K字SRAM;
內(nèi)置32K FLASH;
可編程音頻處理;
晶體振蕩器;
系統(tǒng)處于備用狀態(tài)下(時(shí)鐘處于停止?fàn)顟B(tài)),耗電僅為2μA@3.6V;
2個(gè)16位可編程定時(shí)器/計(jì)數(shù)器(可自動(dòng)預(yù)置初始計(jì)數(shù)值);
2個(gè)10位DAC(數(shù)-模轉(zhuǎn)換)輸出通道;
32位通用可編程輸入/輸出端口;
14個(gè)中斷源可來自定時(shí)器A / B,時(shí)基,2個(gè)外部時(shí)鐘源輸入,鍵喚醒;
具備觸鍵喚醒的功能;
使用凌陽音頻編碼SACM_S240方式(2.4K位/秒),能容納210秒的語音數(shù)據(jù);
鎖相環(huán)PLL振蕩器提供系統(tǒng)時(shí)鐘信號(hào);
32768Hz實(shí)時(shí)時(shí)鐘;
7通道10位電壓模-數(shù)轉(zhuǎn)換器(ADC)和單通道聲音模-數(shù)轉(zhuǎn)換器;
聲音模-數(shù)轉(zhuǎn)換器輸入通道內(nèi)置麥克風(fēng)放大器和自動(dòng)增益控制(AGC)功能;
具備串行設(shè)備接口;
具有低電壓復(fù)位(LVR)功能和低電壓監(jiān)測(cè)(LVD)功能;
內(nèi)置在線仿真電路ICE(In-Circuit Emulator)接口;
具有保密能力;
具有WatchDog功能;
16位μ’nSP?微處理器硬件結(jié)構(gòu)圖
ICE_ENICE_SCKICE_SDA16位微控制器u'nSPFLASH雙16位定時(shí)器/計(jì)數(shù)器時(shí)基中斷控制+ICERAMVCPXI/RXO鎖相環(huán)振蕩器CPU時(shí)鐘實(shí)時(shí)時(shí)鐘7通道10位ADC單通道ADC+AGCMIC_IN低電壓監(jiān)測(cè)/低電壓復(fù)位Watchdog串行異步通訊接口IOB7(RXD)IOB10(TXD)雙通道10位DAC串行輸入輸出接口IOB0(SCK)IOB1(SDA)AUD1AUD232管腳通用輸入輸出端口IOA150 3.1.1.SPCE061A時(shí)鐘電路
SPCE061A時(shí)鐘電路采用晶體振蕩器。下圖為SPCE061A時(shí)鐘電路的接線圖。外接晶振采用32768Hz。
3.1.2.PLL鎖相環(huán)
PLL電路的作用是將系統(tǒng)提供的實(shí)時(shí)時(shí)鐘的基頻(32768Hz)進(jìn)行倍頻,輸出系統(tǒng)時(shí)鐘Fosc
32768Hz晶振鎖相環(huán)(PLL)系統(tǒng)時(shí)鐘發(fā)生器頻率:20.48M,24.576M,32.768M,40.96M,49.152Mb7b6b5Fosc(默認(rèn)值24.576MHz)系統(tǒng)時(shí)鐘選頻P_SystemClock單元的第7,6,5位
3.1.3.看門狗Watchdog SPCE061A的清狗周期為0.75S;清看門狗操作寄存器:P_Watchdog_Clear(0x7012H)清狗操作:在每個(gè)0.75S的清狗周期里P_Watchdog_Clear寫入0x0001。
3.1.4.低電壓復(fù)位(LVR)
通過某種方式,使單片機(jī)內(nèi)存各寄存器的值變?yōu)槌跏嫉牟僮鞣Q為復(fù)位。SPCE061A的復(fù)位方式為低電壓復(fù)位。
3.1.5.I/O端口 OA口:
IOA0~IOA6:7路普通AD輸入端口,IOA0~IOA7:觸鍵喚醒功能
IOB口:
外部中斷輸入,串行接口、PWM輸出等復(fù)用端口
3.1.6.時(shí)基與定時(shí)器
時(shí)基信號(hào)可提供常用的、現(xiàn)成的頻率信號(hào),完成部分定時(shí)器的功能
時(shí)間基準(zhǔn)信號(hào)部分時(shí)基選頻時(shí)基中斷32768Hz RTCPLL倍頻定時(shí)器/計(jì)數(shù)器Fosc時(shí)鐘源 3.1.7.SPCE061A的定時(shí)器/計(jì)數(shù)器
遞增計(jì)數(shù)方式,自動(dòng)重載定時(shí)器/計(jì)數(shù)器初始值,輸出4位可調(diào)脈寬比PWM信號(hào),溢出頻率/2的方波輸出,多種時(shí)鐘源 11
輸入。
3.1.8.ADC、DAC SPCE061A的特色是其強(qiáng)大靈活的語音功能;而單片機(jī)對(duì)語音處理的支持,除了其處理能力外,還有片內(nèi)集成的ADC、DAC;特別是集成有AGC電路的MIC通道。ADC轉(zhuǎn)換過程:
啟動(dòng)自動(dòng)方式 RDY=0SAR = 10 0000 0000BDAC0輸出Vdac0與Vin逐次比較比較結(jié)束,RDY=1結(jié)果存入結(jié)果寄存器等待讀取結(jié)果寄存器
3.2、超聲波傳感器
1.基本特性與參數(shù)指標(biāo)
超聲波傳感器諧振頻率:40KHz; 模組傳感器工作電壓:4.5V~9V 模組接口電壓:4.5V~5.5V 2.主要功能
三種測(cè)距模式選擇跳線J1(短距、中距、可調(diào)距):
短距:20cm~100cm左右(根據(jù)被測(cè)物表面材料決定),精度1cm;
中距:70cm~400cm左右(根據(jù)被測(cè)物表面材料決定); 可調(diào):范圍由可調(diào)節(jié)參數(shù)確定,當(dāng)調(diào)節(jié)在合適的值時(shí),最遠(yuǎn)測(cè)距700cm左右; 3.結(jié)構(gòu)示意圖
一般應(yīng)用時(shí),只需要用兩條10PIN排線把J5與SPCE061A的IOB口低八位連接,J4與IOB口高八位連接,同時(shí)設(shè)置好J1、J2跳線就完成硬件的連接了。不同測(cè)距模式的選擇只需改變測(cè)距模式跳線J1的連接方法即可。模組工作的性能與被測(cè)物表面材料有很大關(guān)系,如毛料、布料對(duì)超聲波的反射率很小,會(huì)嚴(yán)重影響測(cè)量結(jié)果 實(shí)物圖: 13
J1為選擇工作模式,J2選擇電源接口 4.電路原理圖介紹:
超聲波諧振頻率調(diào)理電路
由單片機(jī)產(chǎn)生40KHz的方波,并通過模組接口(J4)送到模組的CD4049,而后面的CD4049則對(duì)40KHz頻率信號(hào)進(jìn)行調(diào)理,以使超聲波傳感器產(chǎn)生諧振。
超聲波回波接收處理電路
超聲波接收處理部分電路前級(jí)采用NE5532構(gòu)成10000倍放大器,對(duì)接收信號(hào)進(jìn)行放大;后級(jí)采用LM311比較器對(duì)接收信號(hào)進(jìn)行調(diào)整,比較電壓為L(zhǎng)M311的3管腳的輸入,可由J1跳線選擇不同的比較電壓以選擇不同的測(cè)距模式。
測(cè)距程序流程圖
超聲波測(cè)距的功能函數(shù)流程圖如圖。用戶只需進(jìn)行六次測(cè)距操作,這六次的測(cè)量結(jié)果需要經(jīng)過處理后才可得到最終的測(cè)距返回值,然后將返回值化成距離。
四
軟件設(shè)計(jì)
4.1軟件設(shè)計(jì)各模塊
void RunTime2Hz(void);設(shè)置2HZ基頻中斷向量函數(shù)。
void OffTime2Hz(void);清2HZ基頻中斷向量函數(shù)。void Clear_WatchDog(void);清看門狗函數(shù)
unsigned int SP_GetCh(void);取鍵值函數(shù) void delay2s(int timer)可調(diào)的延遲函數(shù)
4.2速度控制
速度控制用TIMERA的PWM輸出控制,當(dāng)它前進(jìn)時(shí)設(shè)PWM為12/16,當(dāng)它轉(zhuǎn)彎時(shí)設(shè)為8/16。其代碼為:*P_TimerA_Ctrl=0x0333;*P_TimerA_Data=0xff9f;
4.3障礙物檢測(cè)
用TIMERB的TONT輸出給超聲波提供出射頻率,并給它延遲一段時(shí)間,發(fā)射完時(shí),清TIMERB,讓它工作在計(jì)時(shí)方式,當(dāng)計(jì)到10000時(shí)!沒有收到回波,則說明前在無障礙。如果有收到回波則說明有障礙。
4.4看門狗
看門狗只要一定時(shí)間給其喂狗,就可以保證程序不會(huì)跑飛,跑飛就會(huì)自動(dòng)復(fù)位。其代碼就只有一句: *P_Watchdog_Clear = 0x0001;
4.5基頻中斷
采用2HZ的基頻中斷,實(shí)現(xiàn)實(shí)時(shí)控制;一次中斷,中斷時(shí)間為0。5S,其代碼如下:
[P_INT_Ctrl] = r1;
INT IRQ;
//開中斷
4.6程序設(shè)計(jì)流程圖
五:測(cè)試數(shù)據(jù)、測(cè)試結(jié)果分析及結(jié)論
測(cè)試方法與儀器: 1.測(cè)試儀器
測(cè)試儀器包括數(shù)字萬用表、信號(hào)發(fā)生器、示波器、直流穩(wěn)壓電源等。
2.測(cè)試方法
數(shù)字萬用表主要用來測(cè)試各個(gè)IO口的狀態(tài);
信號(hào)發(fā)生器與示波器用于測(cè)試超聲波傳感器信號(hào)的接收與傳輸;
試驗(yàn)測(cè)試能不能完成固定避障。
結(jié)論:
經(jīng)過了我們的努力,我們基本上能完上避障的功能!當(dāng)然我們之后還有很長(zhǎng)的路要走,在之后我們會(huì)自己做一個(gè)最小系統(tǒng),此次我們更側(cè)重于軟件方面的設(shè)計(jì)。同時(shí)我們還要設(shè)計(jì)更多的外圍電路,實(shí)現(xiàn)更多的功能。其中包括:紅外光電檢測(cè)用來檢測(cè)旁邊的物體;還有紅外遙控器,用來控制小車的運(yùn)行與停止;再加一個(gè)顯示器,用來顯示路程和時(shí)間等等。
附錄一:
程序附錄:
程序設(shè)計(jì)中包括:主程序,測(cè)距程序,中斷程序組成;
1.主程序:
#include “SPCE061A.h” #include “ceju.h”
unsigned char INTflag;
//定時(shí)標(biāo)識(shí)
unsigned int sum;
//2hz 計(jì)數(shù)器
1次為0。5秒 void RunTime2Hz(void);void OffTime2Hz(void);void Clear_WatchDog(void);void delay2s(int timer)
//設(shè)置基頻為2HZ的中斷,就是一次定時(shí)0。5S {
sum=timer;RunTime2Hz();
//運(yùn)行中斷
while(!INTflag)
{
Clear_WatchDog();//清看門狗
}
INTflag = 0;
OffTime2Hz();
//結(jié)束中斷
} void delay2s(int timer);int main(void){ unsigned int Back_data;
*P_IOB_Dir=0x1f00;
IOB,IOB8~12同向輸出
*P_IOB_Attrib=0x1f00;*P_IOB_Data=0x0000;INTflag = 0;Clear_WatchDog();
while(1){
*P_TimerA_Ctrl=0x0373;
*P_TimerA_Data=0xff9f;
這14/16
Back_data = measure_Times(0);if(Back_data==0)
//裝距離 //
初
始
化
//清看門狗
//設(shè)前進(jìn)PWM
//測(cè)距
//判斷是否為0,為0則為前進(jìn)
{
*P_TimerA_Ctrl=0x0373;
*P_TimerA_Data=0xff9f;
}
else if(Back_data<=40)
40CM,小于則進(jìn)行倒車
{
*P_TimerA_Ctrl=0x006;
*P_IOB_Data=0x1000;
delay2s(0);
*P_IOB_Data=0x0100;
delay2s(3);
}
else if(Back_data<=100)
1M,小于則進(jìn)行避障
{
*P_TimerA_Ctrl=0x0333;
*P_IOB_Data=0x0400;
delay2s(1);
*P_IOB_Data=0x0800;
delay2s(1);
//判斷是否小于
//倒車
//前進(jìn) //判斷是否小于//左轉(zhuǎn)
//右轉(zhuǎn) 23
*P_IOB_Data=0x0400;
//左轉(zhuǎn)
delay2s(1);*P_TimerA_Ctrl=0x006;
//停止PWM運(yùn)行
*P_IOB_Data=0x0000;
//停車
while(1)
{;}
}
else
Clear_WatchDog();
}
}
2.中斷程序: #include “SPCE061A.h” #include “ceju.h”
void IRQ3(void)__attribute__((ISR));
void IRQ3(void){ *P_INT_Clear = 0x0100;
//
//IRQ中斷服務(wù)程序 24
EXT1_IRQ_ult();
//調(diào)用超聲波測(cè)距的外部中斷服務(wù)程序 }
.TEXT.include SPCE061A.inc;.external _sum;.external _INTflag;.public _IRQ5;_IRQ5:
push r1,r4 to [sp];
r1 =0x0008;
test r1,[P_INT_Ctrl];
jnz L_4Hz;
r1 = 0x0004;
[P_INT_Clear] = r1;
r1 = [_sum]
r1 += 1;
//定時(shí)3秒的中斷程序
// Timer A FIQ entrence
//清中斷
//取時(shí)基信號(hào)量
cmp r1,4;
je loop0;
[_sum]=r1
//保存時(shí)基信號(hào)量
pop r1,r4 from [sp];
reti;
loop0:
r1 = 0x0001;
[_INTflag] = r1;
r1 = 0
[_sum] = r1 pop r1,r4 from [sp];
reti;
L_4Hz:
r1 = 0x0008;
[P_INT_Clear] = r1;
pop r1,r4 from [sp];reti;
//設(shè)置中斷標(biāo)識(shí)
//清中斷 26
.external _sum;.include SPCE061A.inc;.CODE.public _Clear_WatchDog;_Clear_WatchDog:.PROC
R1=0x0001;
[P_Watchdog_Clear]=R1;
//清看門狗
retf;.ENDP
.public _RunTime2Hz;//初始化中斷為2HZ定時(shí)中斷源_RunTime2Hz:
.proc r1 = 0x0004;
[P_INT_Ctrl] = r1;
INT IRQ;
//開中斷
retf.endp;
.public _OffTime2Hz;_OffTime2Hz:.proc
r1 = [P_INT_Ctrl]
r1 &= 0xfffb;
[P_INT_Ctrl] = r1;
r1 = 0x0000
[_sum] = r1;
retf;.endp;
3、測(cè)距程序
#include “SPCE061A.h” #define LONG_SEND_TIMER 40KHz信號(hào)發(fā)射時(shí)長(zhǎng)
#define LONG_SEND_TIMER2 測(cè)距時(shí)的40KHz信號(hào)發(fā)射時(shí)長(zhǎng)#define LONG_WAIT_DELAY 的防余波干擾延時(shí)時(shí)長(zhǎng)
#define LONG_WAIT_DELAY2 測(cè)距時(shí)的防余波干擾延時(shí)時(shí)長(zhǎng)
1000 3000
600 1500
//中距測(cè)距時(shí)的//中距測(cè)距的補(bǔ)充
//中距測(cè)距
//中距測(cè)距的補(bǔ)充
#define LONG_RES_ADD 補(bǔ)償值
0x00B0 //中距測(cè)距的結(jié)果#define LONG_RES_ADD2 充測(cè)距時(shí)的結(jié)果補(bǔ)償值
#define LOW_SEND_TIMER 40KHz信號(hào)發(fā)射時(shí)長(zhǎng) #define LOW_SEND_TIMER2
0x0220 //中距測(cè)距的補(bǔ)
250
//短距測(cè)距時(shí)的 1000 //短距測(cè)距的補(bǔ)充測(cè)距時(shí)的40KHz信號(hào)發(fā)射時(shí)長(zhǎng) #define LOW_WAIT_DELAY 余波干擾延時(shí)時(shí)長(zhǎng)
#define LOW_WAIT_DELAY2
400
//短距測(cè)距
180
//短距測(cè)距的防的補(bǔ)充測(cè)距時(shí)的防余波干擾延時(shí)時(shí)長(zhǎng) #define LOW_RES_ADD 果補(bǔ)償值
#define LOW_RES_ADD2 測(cè)距時(shí)的結(jié)果補(bǔ)償值
unsigned int Counter_buf;
//超聲波測(cè)距當(dāng)中,用于0x00B0
//短距測(cè)距的補(bǔ)充
0x0034
//短距測(cè)距的結(jié)保存TimerB計(jì)數(shù)的變量,相當(dāng)于時(shí)長(zhǎng) unsigned int EXT1_IRQ_flag=0;
//外部中斷標(biāo)志變量,用于EXT1的IRQ中斷程序和測(cè)距程序同步
void Delay_ult(unsigned int timers){ unsigned int i;for(i=0;i __asm(“nop”);} } unsigned int Resoult_ult(unsigned int Counter){ unsigned int uiTemp;unsigned long ulTemp;ulTemp =(unsigned long)Counter*33500;度,以厘米為單位 ulTemp = ulTemp/196608; ulTemp = ulTemp>>1; //除二 uiTemp =(unsigned int)ulTemp;return uiTemp;} unsigned int measure2_ult(unsigned int type);unsigned int measure_ult(unsigned int type) 聲波測(cè)距模組的測(cè)距程序,完成一次測(cè)距 //計(jì)算距離 //*以聲音的速 // 超30 { unsigned int Exit_flag = 1;unsigned int uiTemp;unsigned int uiResoult;unsigned int uiSend_Timer,uiWait_Timer,uiRes_Add;unsigned int uiSystem_Clock;uiSystem_Clock = *P_SystemClock;//將當(dāng)前的系統(tǒng)時(shí)鐘設(shè)置暫時(shí)保存起來 *P_SystemClock = 0x0088; //將系統(tǒng)時(shí)鐘設(shè)置為49MHz,分頻比為1,強(qiáng)振模式 if(type) //根據(jù)type即測(cè)距類型,選擇不同的測(cè)距參數(shù) { } else { uiSend_Timer = LOW_SEND_TIMER;uiWait_Timer = LOW_WAIT_DELAY;uiRes_Add = LOW_RES_ADD; uiSend_Timer = LONG_SEND_TIMER;uiWait_Timer = LONG_WAIT_DELAY;uiRes_Add = LONG_RES_ADD; } *P_TimerB_Data = 0xfed2;*P_TimerB_Ctrl = 0x03c0; //發(fā)40KHz的信號(hào)觸發(fā)超聲波傳感器 率 while(*P_TimerB_Data //TrB 工作在192KHz頻 //等待發(fā)送 //關(guān)定時(shí)器B 再打開TimerA的計(jì)數(shù)(來源于EXT1) 斷 *P_INT_Ctrl = *P_INT_Ctrl_New|0x0100;*P_INT_Clear = 0xffff;__asm(“IRQ ON”); //清除中斷發(fā)生標(biāo)志 //打開總中斷使能 //TimerA的溢出中斷{ } *P_INT_Clear = 0x0100; //開中斷前先清中 //以避開余波的干擾 *P_Watchdog_Clear = 0x0001;EXT1_IRQ_flag = 0;的標(biāo)志變量置0 while(Exit_flag) { if(EXT1_IRQ_flag==1) //當(dāng)該變量在timerA的FIQ中斷中被置1時(shí)表示接收到了回波 { Exit_flag = 0; //退出標(biāo)示 Counter_buf = Counter_buf+uiRes_Add;//計(jì)數(shù)值加上一定的調(diào)整數(shù)據(jù) uiResoult = Resoult_ult(Counter_buf);//對(duì)計(jì)數(shù)值進(jìn)行處理,得出距離值 } if(*P_TimerB_Data>10000) //如計(jì)數(shù)值大于10000,表示超時(shí) { Exit_flag = 0; uiResoult = measure2_ult(type);//再進(jìn)行一次補(bǔ)充的測(cè)距,將會(huì)加長(zhǎng)40KHz信號(hào)發(fā)射的量 } } *P_TimerB_Ctrl = 0x0006;//停止定時(shí)器B uiTemp = *P_TimerB_Data;*P_Watchdog_Clear = 0x0001;*P_INT_Ctrl = *P_INT_Ctrl_New&(~0x0100);//關(guān)掉外部 中斷 置 } void EXT1_IRQ_ult(void) //超聲波測(cè)距模組的測(cè)距程序的EXT1中斷服務(wù)程序 { Counter_buf = *P_TimerB_Data;*P_TimerB_Ctrl = 0x0006; return uiResoult;__asm(“IRQ OFF”); *P_SystemClock = uiSystem_Clock;//恢復(fù)系統(tǒng)時(shí)鐘的設(shè) //關(guān)掉總中斷 *P_INT_Ctrl = *P_INT_Ctrl_New&(~0x0100);//關(guān)掉外部中斷 *P_INT_Clear = 0xffff;EXT1_IRQ_flag = 1; //清除中斷發(fā)生標(biāo)志 //通知測(cè)距程序,外部中斷已發(fā)生 } unsigned int measure2_ult(unsigned int type) //補(bǔ)充進(jìn)行一次遠(yuǎn)距的測(cè)量,以保證能夠獲取測(cè)量結(jié)果 { unsigned int Exit_flag = 1; unsigned int uiResoult;unsigned int uiSend_Timer,uiWait_Timer,uiRes_Add;*P_TimerB_Ctrl = 0x0006; *P_INT_Ctrl = *P_INT_Ctrl_New&(~0x0100);//關(guān)掉外部中斷 __asm(“IRQ OFF”); //關(guān)掉總中斷 //清除掉中斷發(fā)生標(biāo)志 *P_INT_Clear = 0xffff; if(type) //根據(jù)type即測(cè)距類型,選擇不同的測(cè)距參數(shù) { } else { } uiSend_Timer = LONG_SEND_TIMER2;uiWait_Timer = LONG_WAIT_DELAY2;uiRes_Add = LONG_RES_ADD2;uiSend_Timer = LOW_SEND_TIMER2;uiWait_Timer = LOW_WAIT_DELAY2;uiRes_Add = LOW_RES_ADD2; *P_TimerB_Data = 0xfed2;*P_TimerB_Ctrl = 0x03c0;Delay_ult(uiSend_Timer);*P_TimerB_Ctrl = 0x0006;*P_TimerB_Data = 0x0000;*P_TimerB_Ctrl = 0x0001; while(*P_TimerB_Data *P_INT_Ctrl = *P_INT_Ctrl_New|0x0100;//打開外部中斷 *P_INT_Clear = 0xffff;__asm(“IRQ ON”); EXT1_IRQ_flag = 0; //TimerA的溢出中斷 //清除中斷發(fā)生標(biāo)志 //打開總中斷使能 { } *P_Watchdog_Clear = 0x0001;的標(biāo)志變量置0 while(Exit_flag){ if(EXT1_IRQ_flag==1) //當(dāng)該變量在timerA的FIQ中斷中被置1時(shí)表示接收到了回波 { Exit_flag = 0; //exit Counter_buf = Counter_buf+uiRes_Add;//計(jì)數(shù)值加上一定的調(diào)整數(shù)據(jù) uiResoult = Resoult_ult(Counter_buf);//對(duì)計(jì)數(shù)值進(jìn)行處理,得出距離值 } if(*P_TimerB_Data>10000) //如計(jì)數(shù)值大于10000,表示超時(shí) } unsigned int measure_Times(unsigned int type) //組合進(jìn)行共6次的測(cè)距程序,包括對(duì)6次測(cè)量結(jié)果的取平均值處理 { } { } Exit_flag = 0;uiResoult = 0; *P_TimerB_Ctrl = 0x0006;return uiResoult;unsigned int uiResoult=0,uiMeasure_Index=0,i;unsigned int uiTemp_buf[6],uiTemp; unsigned int uiSystem_Clock; for(;uiMeasure_Index<6;uiMeasure_Index++){ //循環(huán)進(jìn)行四次測(cè)量 //進(jìn)行一次測(cè)uiTemp = measure_ult(type); 量,測(cè)量類型由type決定 if(uiMeasure_Index==0) //如果為本次測(cè)量的第一次測(cè)距,則直接保存在緩沖區(qū)第一個(gè)單元 uiTemp_buf[0] = uiTemp; else { //否,則對(duì)結(jié)果進(jìn)行比較,進(jìn)行排序,從大到小排 i = uiMeasure_Index;while(i){ if(uiTemp>uiTemp_buf[i-1]){ } else { //以下為排序的代碼 uiTemp_buf[i] = uiTemp_buf[i-1];uiTemp_buf[i-1] = uiTemp; } } } uiTemp_buf[i] = uiTemp;break; //退出排序 i--; //兩次測(cè)量之間的延時(shí)等待,利用以下代碼軟仿真時(shí)的cycles數(shù)結(jié)合設(shè)置的CPUCLK進(jìn)行計(jì)算,大概72ms uiSystem_Clock = *P_SystemClock; //將之前的系統(tǒng)時(shí)鐘的設(shè)置用變量保存 *P_SystemClock = 0x000b; // 設(shè) 置 為24.576MHz 分頻比為8 for(i=0;i<5;i++){ } *P_SystemClock = uiSystem_Clock; //恢復(fù)系統(tǒng)時(shí)鐘Delay_ult(1000); //調(diào)用延時(shí)程序 *P_Watchdog_Clear = 0x0001;設(shè)置 } //此處延時(shí)結(jié)束 //對(duì)6次測(cè)距的結(jié)果進(jìn)行處理 if(uiTemp_buf[5]==0){ //如果緩沖區(qū)中的最小的測(cè)距值為0,則采用中間4個(gè)數(shù)據(jù)進(jìn)行平均 uiResoult = uiTemp_buf[1]+uiTemp_buf[2]+uiTemp_buf[3]+uiTemp_buf[4]; } else { //否則就取后5個(gè)數(shù)據(jù)uiResoult = uiResoult/4;進(jìn)行平均 uiResoult = uiTemp_buf[1]+uiTemp_buf[2]+uiTemp_buf[3]+uiTemp_buf[4]+uiTemp_buf[5]; } } return uiResoult;uiResoult = uiResoult/5;40 論文編碼:TP39 Capital Normal University 首都師范大學(xué)本科畢業(yè)設(shè)計(jì)論文 基于行為設(shè)計(jì)的移動(dòng)機(jī)器人設(shè)計(jì)與實(shí)現(xiàn) ——機(jī)器人機(jī)械設(shè)計(jì)模塊 Design and Implementation of Mobile Robot Based on Behavior Design —— Robot Mechanical Solutions 論文作者: 張倩穎 院 系: 信息工程學(xué)院 專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) 學(xué) 號(hào): 1111000055 指導(dǎo)老師: 徐敏 完成日期: 2015年 4月 25日 首都師范大學(xué)本科畢業(yè)設(shè)計(jì)論文 摘要 本文簡(jiǎn)要介紹了基于行為設(shè)計(jì)的移動(dòng)機(jī)器人設(shè)計(jì)與實(shí)現(xiàn)----一種基于Arduino新型集成開發(fā)環(huán)境的超聲波避障小車的工作原理。其中包括對(duì)小車的執(zhí)行組件、搭建結(jié)構(gòu)、傳感器、Arduino單片機(jī)軟件編程及試驗(yàn)結(jié)果的介紹。 本方案以Arduino單片機(jī)為控制核心,基于蝙蝠超聲波測(cè)距的原理,利用超聲波傳感器,檢測(cè)小車前方障礙物的距離,然后把數(shù)據(jù)傳送給單片機(jī)。當(dāng)超聲波檢測(cè)到距離小車前方25CM有障礙物時(shí)單片機(jī)就發(fā)出指令讓小車左轉(zhuǎn)一定角度,然后停止行進(jìn)繼續(xù)探測(cè).如果前方25CM沒有障礙物則直行,否則繼續(xù)左轉(zhuǎn)一定角度。如此通過超聲波不斷的循環(huán)檢測(cè)周邊環(huán)境的情況進(jìn)行自動(dòng)避障。 本系統(tǒng)在硬件設(shè)計(jì)方面,以Arduino單片機(jī)為控制核心,以超聲波傳感器檢測(cè)前方障礙物,從而自動(dòng)避障。在軟件方面,利用Arduino語言進(jìn)行編程,通過軟件編程來控制小車運(yùn)轉(zhuǎn)。該系統(tǒng)在驅(qū)動(dòng)方面采用L298N驅(qū)動(dòng)2個(gè)直流電機(jī)帶動(dòng)小車運(yùn)行。并且,用PWM系統(tǒng)調(diào)速,控制小車前進(jìn)的速度。實(shí)現(xiàn)小車根據(jù)外部環(huán)境,做出前進(jìn)、后退和轉(zhuǎn)向等動(dòng)作,從而完成避障的功能,本設(shè)計(jì)具有有一定的實(shí)用價(jià)值。 關(guān)鍵詞:Arduino單片機(jī);超聲波傳感器;避障 I 基于行為設(shè)計(jì)的移動(dòng)機(jī)器人設(shè)計(jì)與實(shí)現(xiàn) ABSTRACT This paper describes the design of mobile robot behavior-based design and implement----A new ultrasound-based integrated development environment Arduino obstacle avoidance car works.These include the implementation of car components, building structures, sensors, Arduino microcontroller software programming and test results presentation.The program to Arduino microcontroller core, based on the principle of ultrasonic distance measurement bats using ultrasonic sensors to detect obstacles in front from the car, and then transmits the data to the microcontroller.When the ultrasonic distance in front of the car detects obstacles 25CM SCM issued a directive to make the car turn left on an angle, then continue probing stop traveling.If there is no obstacle in front of the 25CM straight, turn left or continue certain angle.So the case of the ultrasonic continuous loop through the surrounding environment to automatically detect avoidance.The system hardware design to Arduino microcontroller core, with ultrasonic sensors detect obstacles in front, so that automatic obstacle avoidance.On the software side, the use of Arduino programming language to control the car running through software programming.The system uses the driver side L298N drive two DC motors drive the car running.And, with the PWM system speed, speed control car forward.Realize the car according to the external environment, made forward, backward, and steering movements, thus completing the obstacle avoidance function, the design has a certain practical value.Key words: Arduino;ultrasonic sensors;obstacle avoidance II 首都師范大學(xué)本科畢業(yè)設(shè)計(jì)論文 第一章 緒論....................................................................................................................................1 1.1 論文的選題背景...................................................................................................................1 1.2 Arduino單片機(jī)概述.............................................................................................................2 1.3 Arduino機(jī)器人發(fā)展現(xiàn)狀.....................................................................................................3 1.4 Arduino智能避障機(jī)器人研究意義和目的.........................................................................4 1.5項(xiàng)目主要研究?jī)?nèi)容...............................................................................................................5 第二章 避障小車機(jī)器人的總體設(shè)計(jì)............................................................................................6 2.1設(shè)計(jì)原理與方法...................................................................................................................6 2.2硬件設(shè)計(jì)...............................................................................................................................6 2.3 軟件設(shè)計(jì)...............................................................................................................................7 2.3.1 Arduino語言..................................................................................................................7 2.3.2 Arduino IDE....................................................................................................................8 2.4 實(shí)驗(yàn)前期準(zhǔn)備.....................................................................................................................10 第三章 硬件模塊..........................................................................................................................12 3.1 各模塊的的基本性能.........................................................................................................12 3.1.1 單片機(jī)模塊...................................................................................................................12 3.1.2 電機(jī)、電機(jī)驅(qū)動(dòng)模塊...................................................................................................12 3.1.3避障模塊......................................................................................................................14 3.1.4電源模塊......................................................................................................................15 3.2 小車的基本搭建.................................................................................................................15 3.3連線.....................................................................................................................................17 3.3.1電機(jī)的連線..................................................................................................................17 3.3.2舵機(jī)的連線..................................................................................................................18 3.3.3超聲波的連線..............................................................................................................19 3.3.4 Arduino超聲波小車總體連線圖:.............................................................................20 III 基于行為設(shè)計(jì)的移動(dòng)機(jī)器人設(shè)計(jì)與實(shí)現(xiàn) 第四章 軟件模塊..........................................................................................................................21 4.1 軟件設(shè)計(jì)思路.....................................................................................................................21 4.2 電機(jī)前進(jìn)模塊.....................................................................................................................22 4.2 電機(jī)后退模塊.....................................................................................................................22 4.3 電機(jī)停止工作模塊.............................................................................................................23 4.4 電機(jī)左轉(zhuǎn)模塊.....................................................................................................................23 4.5 電機(jī)右轉(zhuǎn)模塊.....................................................................................................................24 4.6 防卡死模塊.........................................................................................................................25 第五章 實(shí)驗(yàn)及結(jié)果分析..............................................................................................................26 5.1預(yù)期目標(biāo).............................................................................................................................26 5.2遇到的問題和解決方法.....................................................................................................26 5.3 硬件的調(diào)試與整合.............................................................................................................27 5.3.1調(diào)試思路......................................................................................................................27 5.3.2調(diào)試超聲波模塊..........................................................................................................27 5.3.3電機(jī)調(diào)試......................................................................................................................28 5.4 心得體會(huì).............................................................................................................................28 第六章 設(shè)想與展望......................................................................................................................30 參考文獻(xiàn).......................................................................................................................................31 致謝...............................................................................................................................................32 附錄...............................................................................................................................................33 超聲波智能避障車程序(ARDUINO)...................................................................................33 IV 首都師范大學(xué)本科畢業(yè)設(shè)計(jì)論文 第一章 緒論 1.1 論文的選題背景 隨著現(xiàn)代計(jì)算機(jī)技術(shù)的不斷發(fā)展和普及,機(jī)器人的發(fā)展已經(jīng)遍及近年來機(jī)器人的智能水平不斷提高,并且迅速地改變著人們的生活方式。小到智能玩具,大到機(jī)械、電子、冶金、交通、宇航、國防等各個(gè)領(lǐng)域。人們將計(jì)算機(jī)技術(shù)更加廣闊的運(yùn)用的人類生活中,制造能替代人勞動(dòng)的機(jī)器一直是人類的夢(mèng)想,并一直在為之努力。在我們的生活里,有很多的機(jī)器人,如圖1.1所示,這兩種機(jī)器人分別是掃地機(jī)器人和滅火機(jī)器人。他們?cè)谖覀兊纳钪蟹浅3R娨埠軐?shí)用,他們的特點(diǎn)就是無需人們的控制,能夠自行運(yùn)動(dòng)完成他們的任務(wù)。那么這就需要一個(gè)非常必要的基礎(chǔ)功能,那就是能夠感知并躲避前方的障礙物。 因此,在本次的設(shè)計(jì)中,我們將設(shè)計(jì)出一個(gè)能夠避障機(jī)器人,在具有這個(gè)基本功能的基礎(chǔ)上,我們就可以為他附加更多的功能,賦予它更多的實(shí)用價(jià)值。選用Arduino單片機(jī)作為控制核心,使用仿生超聲波技術(shù)傳感器進(jìn)行避障的實(shí)現(xiàn)。“智能避障機(jī)器人”作為現(xiàn)代社會(huì)的新產(chǎn)物,也是以后的發(fā)展方向,他可以按照預(yù)先設(shè)定的模式在一個(gè)特定的環(huán)境里自動(dòng)的運(yùn)作,無需人為管理,便可以完成預(yù)期所要達(dá)到的或是更高的目標(biāo)。 圖1.1 基于行為設(shè)計(jì)的移動(dòng)機(jī)器人設(shè)計(jì)與實(shí)現(xiàn) 1.2 Arduino單片機(jī)概述 Arduino,是一個(gè)基于開放原始碼的軟硬件平臺(tái),構(gòu)建于開放原始碼simple I/O介面版,并且具有使用類似Java,C語言的Processing/Wiring開發(fā)環(huán)境。它包含兩個(gè)主要的部分:硬件部分是可以用來做電路連接和Arduino電路板;另外一個(gè)則是Arduino IDE,你的計(jì)算機(jī)中的程序開發(fā)環(huán)境。你只要在IDE中編寫程序代碼,將程序上傳到Arduino電路板后,程序便會(huì)告訴Arduino電路板要做些什么了。 Arduino能通過各種各樣的傳感器來感知環(huán)境,通過控制燈光、馬達(dá)和其他的裝置來反饋、影響環(huán)境。板子上的微控制器可以通過Arduino的編程語言來編寫程序,編譯成二進(jìn)制文件,收錄進(jìn)微控制器。對(duì)Arduino的編程是利用Arduino編程語言(基于 Wiring)和Arduino開發(fā)環(huán)境(based on Processing)來實(shí)現(xiàn)的。基于Arduino的項(xiàng)目,可以只包含Arduino,也可以包含Arduino和其他一些在PC上運(yùn)行的軟件,他們之間進(jìn)行通信(比如 Flash, Processing, MaxMSP)來實(shí)現(xiàn)。可以自己動(dòng)手制作,也可以購買成品套裝;Arduino所使用到的軟件都可以免費(fèi)下載.硬件參考設(shè)計(jì)(CAD 文件)也是遵循availableopen-source協(xié)議, 你可以非常自由地根據(jù)你自己的要求去修改他們.Arduino可以使用開發(fā)完成的電子元件例如Switch或sensors或其他控制器、LED、步進(jìn)馬達(dá)或其他輸出裝置。Arduino也可以獨(dú)立運(yùn)作成為一個(gè)可以跟軟件溝通的接口,例如說:flash、processing、Max/MSP、VVVV或其他互動(dòng)軟件…。Arduino開發(fā)IDE接口基于開放源代碼原,可以讓您免費(fèi)下載使用開發(fā)出更多令人驚艷的互動(dòng)作品。 其主要特點(diǎn)如下: 1)開放源代碼的電路圖設(shè)計(jì),程序開發(fā)接口免費(fèi)下載,也可依個(gè)人需求自己修改。2)使用低價(jià)格的微處理控制器(AVR系列控制器),可以采用USB接口供電,不需外接電源,也可以使用外部9VDC輸入。 3)Arduino支持ISP在線燒,可以將新的“bootloader”固件燒入AVR芯片。有了bootloader之后,可以通過串口或者USB to Rs232線更新固件。 4)可依據(jù)官方提供的Eagle格式PCB和SCH電路圖簡(jiǎn)化Arduino模組,完成獨(dú)立運(yùn)作的微處理控制;可簡(jiǎn)單地與傳感器,各式各樣的電子元件連接(例如:紅外線,超音波,熱敏電阻,光敏電阻,伺服馬達(dá),…等)5)支持多種互動(dòng)程序,如:Flash、Max/Msp、VVVV、PD、C、Processing等。 首都師范大學(xué)本科畢業(yè)設(shè)計(jì)論文 6)應(yīng)用方面,利用Arduino,突破以往只能使用鼠標(biāo)、鍵盤、CCD等輸入的裝置的互動(dòng)內(nèi)容,可以更簡(jiǎn)單地達(dá)成單人或多人游戲互動(dòng)。 我們?yōu)槭裁匆褂肁rduino?有很多的單片機(jī)和單片機(jī)平臺(tái)都適合用做交互式系統(tǒng)的設(shè)計(jì)。例如:Parallax Basic Stamp,Netmedia’s BX-24,Phidgets,MIT’s Handyboard和其它等等提供類似功能的。所有這些工具,你都不需要去關(guān)心單片機(jī)編程繁瑣的細(xì)節(jié),提供給你的是一套容易使用的工具包。Arduino同樣也簡(jiǎn)化了同單片機(jī)工作的流程,但同其它系統(tǒng)相比Arduino在很多地方更具有優(yōu)越性,特別適合老師,學(xué)生和一些業(yè)余愛好者們使用:和其它平臺(tái)相比,Arduino板算是相當(dāng)便宜了。最便宜的Arduino版本可以自己動(dòng)手制作,即使是組裝好的成品,其價(jià)格也不會(huì)超過200元。而且Arduino軟件可以跨平臺(tái)運(yùn)行在Windows,Macintosh OSX,和Linux操作系統(tǒng)。而大部分其它的單片機(jī)系統(tǒng)都只能運(yùn)行在Windows上。另外,它具有簡(jiǎn)易的編程環(huán)境。初學(xué)者很容易就能學(xué)會(huì)使用Arduino編程環(huán)境,同時(shí)它又能為高級(jí)用戶提供足夠多的高級(jí)應(yīng)用。對(duì)于老師們來說,一般都能很方便的使用Processing 編程環(huán)境,所以如果學(xué)生學(xué)習(xí)過使用Processing 編程環(huán)境的話,那他們?cè)谑褂肁rduino開發(fā)環(huán)境的時(shí)候就會(huì)覺得很相似很熟悉。 軟件開源并可擴(kuò)展-Arduino軟件是開源的,對(duì)于有經(jīng)驗(yàn)的程序員可以對(duì)其進(jìn)行擴(kuò)展。Arduino編程語言可以通過C++庫進(jìn)行擴(kuò)展,如果有人想去了解技術(shù)上的細(xì)節(jié),可以跳過Arduino語言而直接使用AVR C 編程語言(因?yàn)锳rduino語言實(shí)際上是基于AVR C的)。類似的,如果你需要的話,你也可以直接往你的Arduino程序中添加AVR-C 代碼。 Arduino基于AVR平臺(tái),對(duì)AVR庫進(jìn)行了二次編譯封裝,把端口都打包好了,寄存器啦、地址指針之類的基本不用管。大大降低了軟件開發(fā)難度,適宜非專業(yè)愛好者使用。優(yōu)點(diǎn)和缺點(diǎn)并存,因?yàn)槭嵌尉幾g封裝,代碼不如直接使用AVR代碼編寫精練,代碼執(zhí)行效率與代碼體積都弱于AVR直接編譯。 1.3 Arduino機(jī)器人發(fā)展現(xiàn)狀 我國目前的發(fā)展現(xiàn)狀是研制中的智能移動(dòng)機(jī)器人智能水平并不高,只能說是智能移動(dòng)機(jī)器人的初級(jí)階段。智能移動(dòng)機(jī)器人研究中當(dāng)前的核心問題有兩方面:一方面是,提高智能移動(dòng)機(jī)器人的自主性,這是就智能移動(dòng)機(jī)器人與人的關(guān)系而言,即希望智能 基于行為設(shè)計(jì)的移動(dòng)機(jī)器人設(shè)計(jì)與實(shí)現(xiàn) 移動(dòng)機(jī)器人進(jìn)一步獨(dú)立于人,具有更為友善的人機(jī)界面。從長(zhǎng)遠(yuǎn)來說,希望操作人員只要給出要完成的任務(wù),而機(jī)器能自動(dòng)形成完成該任務(wù)的步驟,并自動(dòng)完成它。另一方面是,提高智能移動(dòng)機(jī)器人的適應(yīng)性,提高智能移動(dòng)機(jī)器人適應(yīng)環(huán)境變化的能力,這是就智能移動(dòng)機(jī)器人與環(huán)境的關(guān)系而言,希望加強(qiáng)它們之間的交互關(guān)系。 智能移動(dòng)機(jī)器人涉及到許多關(guān)鍵技術(shù),這些技術(shù)關(guān)系到智能移動(dòng)機(jī)器人的智能性的高低。這些關(guān)鍵技術(shù)主要有以下幾個(gè)方面:多傳感信息耦合技術(shù),多傳感器信息融合就是指綜合來自多個(gè)傳感器的感知數(shù)據(jù),以產(chǎn)生更可靠、更準(zhǔn)確或更全面的信息,經(jīng)過融合的多傳感器系統(tǒng)能夠更加完善、精確地反映檢測(cè)對(duì)象的特性,消除信息的不確定性,提高信息的可靠性;導(dǎo)航和定位技術(shù),在自主移動(dòng)機(jī)器人導(dǎo)航中,無論是局部實(shí)時(shí)避障還是全局規(guī)劃,都需要精確知道機(jī)器人或障礙物的當(dāng)前狀態(tài)及位置,以完成導(dǎo)航、避障及路徑規(guī)劃等任務(wù);路徑規(guī)劃技術(shù),最優(yōu)路徑規(guī)劃就是依據(jù)某個(gè)或某些優(yōu)化準(zhǔn)則,在機(jī)器人工作空間中找到一條從起始狀態(tài)到目標(biāo)狀態(tài)、可以避開障礙物的最優(yōu)路徑;機(jī)器人視覺技術(shù),機(jī)器人視覺系統(tǒng)的工作包括圖像的獲取、圖像的處理和分析、輸出和顯示,核心任務(wù)是特征提取、圖像分割和圖像辨識(shí);智能控制技術(shù),智能控制方法提高了機(jī)器人的速度及精度;人機(jī)接口技術(shù),人機(jī)接口技術(shù)是研究如何使人方便自然地與計(jì)算機(jī)交流。 在各國的智能移動(dòng)機(jī)器人發(fā)展中,美國的智能移動(dòng)機(jī)器人技術(shù)在國際上一直處于領(lǐng)先地位,其技術(shù)全面、先進(jìn),適應(yīng)性也很強(qiáng),性能可靠、功能全面、精確度高,其視覺、觸覺等人工智能技術(shù)已在航天、汽車工業(yè)中廣泛應(yīng)用。日本由于一系列扶植政策,各類機(jī)器人包括智能移動(dòng)機(jī)器人的發(fā)展迅速。歐洲各國在智能移動(dòng)機(jī)器人的研究和應(yīng)用方面在世界上處于公認(rèn)的領(lǐng)先地位。中國起步較晚,而后進(jìn)入了大力發(fā)展的時(shí)期,以期以機(jī)器人為媒介物推動(dòng)整個(gè)制造業(yè)的改變,推動(dòng)整個(gè)高技術(shù)產(chǎn)業(yè)的壯大 1.4 Arduino智能避障機(jī)器人研究意義和目的 機(jī)器人的感覺傳感器種類非常多,其中視覺傳感器成為研制自動(dòng)行走和駕駛機(jī)器人的重要部件。機(jī)器人要實(shí)現(xiàn)自動(dòng)導(dǎo)引功能和避障功能就必須要感知導(dǎo)引線和障礙物,感知導(dǎo)引線相當(dāng)給機(jī)器人一個(gè)視覺功能。本設(shè)計(jì)以超聲波作為智能車避障的一種重要手段,以其避障實(shí)現(xiàn)方便,計(jì)算簡(jiǎn)單,易于做到實(shí)時(shí)控制,測(cè)量精度也能達(dá)到實(shí)用的要求,在未來汽車智能化進(jìn)程中必將得到廣泛應(yīng)用。我國作為一個(gè)世界大國,在高科 首都師范大學(xué)本科畢業(yè)設(shè)計(jì)論文 技領(lǐng)域也必須占據(jù)一席之地,未來汽車的智能化是汽車產(chǎn)業(yè)發(fā)展必然的,在這種情況下研究超聲波在智能車避障上的應(yīng)用具有深遠(yuǎn)意義,這將對(duì)我國未來智能汽車的研究在世界高科技領(lǐng)域占據(jù)領(lǐng)先地位具有重要作用。 本設(shè)計(jì)主要體現(xiàn)多功能小車的智能避障功能,本設(shè)計(jì)中的理論方案、分析方法及特色與創(chuàng)新點(diǎn)等可以為自動(dòng)運(yùn)輸機(jī)器人、采礦勘探機(jī)器人、家用自動(dòng)清潔機(jī)器人等自動(dòng)半自動(dòng)機(jī)器人的設(shè)計(jì)與普及有一定的參考意義。同時(shí)小車可以作為玩具的發(fā)展對(duì)象,為中國玩具市場(chǎng)技術(shù)含量的缺乏進(jìn)行一定的彌補(bǔ),實(shí)現(xiàn)經(jīng)濟(jì)收益,形成商業(yè)價(jià)值。我們所設(shè)計(jì)的智能移動(dòng)機(jī)器人利用超聲波能夠在路面上順利躲避障礙物,從而在導(dǎo)盲和輔助人類行動(dòng)方面也有著重要意義。 1.5項(xiàng)目主要研究?jī)?nèi)容 本設(shè)計(jì)題目為《基于行為設(shè)計(jì)的移動(dòng)機(jī)器人設(shè)計(jì)與實(shí)現(xiàn)》是以Arduino單片機(jī)為控制核心,主要研究小車的避障功能。利用超聲波傳感器檢測(cè)道路上的障礙,然后把數(shù)據(jù)傳送給單片機(jī),當(dāng)超聲波檢測(cè)到距離小車前方有障礙物時(shí)單片機(jī)就發(fā)出指令讓小車左轉(zhuǎn)一定角度,然后停止運(yùn)行繼續(xù)探測(cè).如果前方?jīng)]有障礙物就直走,否則繼續(xù)左轉(zhuǎn)一定角度。如此通過超聲波不斷的循環(huán)檢測(cè)周邊環(huán)境的情況進(jìn)行自動(dòng)避障。該功能的小車能夠?qū)崿F(xiàn)在無人操作的情況下在比較寬闊平坦的環(huán)境中避開障礙物。當(dāng)機(jī)器人在行走過程中遇到前方障礙時(shí),能夠根據(jù)有效范圍內(nèi)的距離作出相應(yīng)處理,由單片機(jī)軟件發(fā)出轉(zhuǎn)彎、直行、后退指令,避免機(jī)器與障礙物相撞。 基于行為設(shè)計(jì)的移動(dòng)機(jī)器人設(shè)計(jì)與實(shí)現(xiàn) 第二章 避障小車機(jī)器人的總體設(shè)計(jì) 2.1設(shè)計(jì)原理與方法 本設(shè)計(jì)中直流電機(jī)PWM控制系統(tǒng)的主要功能包括實(shí)現(xiàn)對(duì)直流電機(jī)的加速、減速,并且可以調(diào)整電機(jī)的轉(zhuǎn)速,能夠很方便的實(shí)現(xiàn)電機(jī)的智能控制。主體電路:即直流電機(jī)PWM 控制模塊。這部分電路主要由AT89S52 單片機(jī)的 I/O 端口、定時(shí)計(jì)數(shù)器、外部中斷擴(kuò)展等控制直流電機(jī)的加速、減速以及電機(jī)的正轉(zhuǎn)和反轉(zhuǎn),并且可以調(diào)整電機(jī)的轉(zhuǎn)速,能夠很方便的實(shí)現(xiàn)電機(jī)的智能控制。其間是通過 AT89S52 單片機(jī)產(chǎn)生脈寬可調(diào)的脈沖信號(hào)并輸入到L298 驅(qū)動(dòng)芯片來控制直流電機(jī)工作的。該直流電機(jī)PWM 控制系統(tǒng)由以下電路模塊組成:設(shè)計(jì)控制部分:主要由AT89S52 單片機(jī)的外部中斷擴(kuò)展電路組成。直流電機(jī)PWM控制實(shí)現(xiàn)部分主要由一些二極管、電機(jī)和L298 直流電機(jī)驅(qū)動(dòng)模塊組成。智能小車采用后輪驅(qū)動(dòng),兩個(gè)后輪各用一個(gè)電機(jī),前輪是萬象輪,起到支撐和轉(zhuǎn)向的作用。 2.2硬件設(shè)計(jì) 本小車的硬件部分分為幾個(gè)模塊:超聲波傳感器、Arduino單片機(jī)、電源、兩個(gè)直流電動(dòng)機(jī)、電機(jī)驅(qū)動(dòng)板、車身。電源連接在Arduino單片機(jī)上給整個(gè)小車供電。小車以Arduino單片機(jī)為核心,連接電機(jī)驅(qū)動(dòng)板控制兩個(gè)直流電動(dòng)機(jī)的運(yùn)轉(zhuǎn),從而實(shí)現(xiàn)小車的前進(jìn)。將超聲波傳感器安置在車身的最前端,用于探測(cè)前方是否有障礙物。當(dāng)超聲波傳感器遇到障礙物,將反饋提供到單片機(jī)里從而做出向左旋轉(zhuǎn)的反應(yīng),再次檢測(cè)前方是否有障礙物,若有障礙物則繼續(xù)旋轉(zhuǎn),沒有障礙物則電機(jī)驅(qū)動(dòng)器驅(qū)動(dòng)電機(jī)前進(jìn),從而實(shí)現(xiàn)整個(gè)小車的避障功能。硬件框架圖如圖2.1。 首都師范大學(xué)本科畢業(yè)設(shè)計(jì)論文 圖2.1 硬件設(shè)計(jì)框架 2.3 軟件設(shè)計(jì) 2.3.1 Arduino語言 Arduino語言具有如下特點(diǎn): 1、開放源代碼的電路圖設(shè)計(jì),程序開發(fā)接口免費(fèi)下載,也可依需求自己修改。 2、使用低價(jià)格的微處理控制器(AVR系列控制器),可以采用USB接口供電,不需外接電源,也可以使用外部9VDC輸入。 3、Arduino支持ISP在線燒,可以將新的“bootloader”固件燒入AVR芯片。有了bootloader之后,可以通過串口或者USB to Rs232線更新固件。 4、可依據(jù)官方提供的Eagle格式PCB和SCH電路圖簡(jiǎn)化Arduino模組,完成獨(dú)立運(yùn)作的微處理控制;可簡(jiǎn)單地與傳感器,各式各樣的電子元件連接(例如:紅外線,超音波,熱敏電阻,光敏電阻,伺服馬達(dá),?等) 5、支持多種互動(dòng)程序,如:Flash、Max/Msp、VVVV、PD、C、Processing等。 6、應(yīng)用方面,利用Arduino,突破以往只能使用鼠標(biāo)、鍵盤、CCD等輸入的裝置的互動(dòng)內(nèi)容,可以更簡(jiǎn)單地達(dá)成單人或多人游戲互動(dòng)。Arduino的功能: 基于行為設(shè)計(jì)的移動(dòng)機(jī)器人設(shè)計(jì)與實(shí)現(xiàn) Arduino可以讓我們快速使用與Macromedia Flash, Processing, Max/MSP, Pure Data, SuperCollider等軟件結(jié)合,作出互動(dòng)作品。Arduino可以使用現(xiàn)有的電子元件例如開關(guān)或者傳感器或者其他控制器件、LED、步進(jìn)馬達(dá)或其他輸出裝置。Arduino也可以獨(dú)立運(yùn)行,并與軟件進(jìn)行交互,例如:Macromedia Flash, Processing,Max/MSP, Pure Data,VVVV或其他互動(dòng)軟件,Arduino的IDE界面基于開放源代碼,可以讓我們免費(fèi)下載使用,開發(fā)出更多令人驚艷的互動(dòng)作品。 Arduino可使用ICSP線上燒入器,將「bootloader」燒入新的IC晶片;可依據(jù)官方電路圖,簡(jiǎn)化Arduino模組,完成獨(dú)立運(yùn)作的微處理控制;可簡(jiǎn)單地與傳感器,各式各樣的電子元件連接(例如:紅外線,超聲波,熱敏電阻,光敏電阻,伺服馬達(dá)等);支援多樣的互動(dòng)程序例如: Macromedia Flash、Max/Msp、VVVV、PD、C、Processing等;使用低價(jià)格的微處理控制器(ATMEGA 8-168);USB接口,不需外接電源。另外有提供9V直流電源輸入;在應(yīng)用方面,利用Arduino,突破以往只能使用鼠標(biāo),鍵盤,CCD等輸入的裝置進(jìn)行互動(dòng)內(nèi)容的設(shè)計(jì),可以更簡(jiǎn)單地達(dá)成單人或多人游戲互動(dòng)。 2.3.2 Arduino IDE 如圖2.3這是運(yùn)行界面。Arduino語言是一種類c的語言。在這個(gè)界面里有我們編程時(shí)最常用的東西。當(dāng)我們把鼠標(biāo)放在上面就會(huì)在右側(cè)出現(xiàn)按鍵的功能。 圖2.3 Arduino IDE運(yùn)行界面 首都師范大學(xué)本科畢業(yè)設(shè)計(jì)論文 圖2.4就是upload上傳功能。最右邊的圖標(biāo)是我們需要熟知的串口監(jiān)視器,快捷鍵是:Ctrl+Shift+M。點(diǎn)這個(gè)圖標(biāo)有用的前提是插上了串口設(shè)備,當(dāng)然Arduino插在USB上也可以,因?yàn)榘迳系腁tmega16U2就是USB轉(zhuǎn)串口的功能。 圖2.4 upload 上傳功能 如圖2.5這就是串口監(jiān)視器的運(yùn)行畫面相對(duì)于網(wǎng)上流傳的眾多串口調(diào)試軟件,它的功能可以說較為簡(jiǎn)單。右下角是波特率,波特率接收端和發(fā)射端要相同,要不然收到的會(huì)是亂碼。 圖2.5 串口監(jiān)視器 如果電腦沒找到串口或者驅(qū)動(dòng)沒裝好,就會(huì)有如圖2.6的提示。serial port的意思是串行通訊接口。 圖2.6 Arduino IDE的菜單欄中有很多選項(xiàng),例如“文件”“編輯”等英文界面。其中Sketch是草圖的意思,在Arduino IDE中,每個(gè)Arduino程序都稱為sketch,他是一個(gè) 基于行為設(shè)計(jì)的移動(dòng)機(jī)器人設(shè)計(jì)與實(shí)現(xiàn) 可以上傳進(jìn)Arduino Board中的程序包,當(dāng)然經(jīng)過編譯以后他就不是代碼包了。Tools里面第一項(xiàng),自動(dòng)格式,當(dāng)你把一段從網(wǎng)上下載的源代碼放到sketch里面,會(huì)有一些縮進(jìn)的亂碼,這時(shí),Auto Format就起到了很好的作用。 當(dāng)我們編寫好程序后,點(diǎn)擊Update,IDE會(huì)自動(dòng)編譯,上傳。如果程序有錯(cuò)誤,就會(huì)有如圖2.7的顯示,標(biāo)出了行號(hào)。修改程序后就可以繼續(xù)編譯上傳了。 圖2.7 2.4 實(shí)驗(yàn)前期準(zhǔn)備 搭建小車的零件清單如下: 1.減速電機(jī) 2個(gè) 2.優(yōu)質(zhì)輪胎2個(gè) 3.電機(jī)固定件2個(gè) 4.萬向輪1個(gè) 5.100*150*2.6MM有機(jī)玻璃板 2片 6.L298N電機(jī)驅(qū)動(dòng)板1個(gè) 7.ARDUINO 328給力板 1個(gè) 8.云臺(tái) 1個(gè) 9.舵機(jī) 1個(gè) 10.超聲波模塊1個(gè) 11.迷你面包板1個(gè) 12.6節(jié)5號(hào)電池盒一個(gè) 13.杜邦線 12條 14.1米長(zhǎng)USB線1條 15.銅柱 35MM長(zhǎng) 3個(gè) 12MM 4個(gè) 首都師范大學(xué)本科畢業(yè)設(shè)計(jì)論文 16.3MM螺絲螺母若干 基于行為設(shè)計(jì)的移動(dòng)機(jī)器人設(shè)計(jì)與實(shí)現(xiàn) 第三章 硬件模塊 3.1 各模塊的的基本性能 3.1.1 單片機(jī)模塊 本設(shè)計(jì)采用Atmel Atmega328微處理控制器。其性能為:Digital I/O 數(shù)字輸入/輸出端共 0~13。Analog I/O 模擬輸入/輸出端共 0~5。支持ISP下載功能。輸入電壓:接上電腦USB時(shí)無須外部供電,外部供電7V~12V 直流電壓輸入。輸出電壓:5V 直流電壓輸出和3.3V 直流電壓輸出。 圖3.1 Arduino單片機(jī)實(shí)物圖 3.1.2 電機(jī)、電機(jī)驅(qū)動(dòng)模塊 本設(shè)計(jì)采用由雙極性管組成的H橋電路(L298N)。用單片機(jī)控制晶體管使之工作在占空比可調(diào)的開關(guān)狀態(tài),精確調(diào)整電機(jī)轉(zhuǎn)速。這種電路由于工作在管子的飽和截止模式下,則效率非常高;H橋電路保證了可以簡(jiǎn)單地實(shí)現(xiàn)轉(zhuǎn)速和方向的控制,電子開關(guān)的速度很快,穩(wěn)定性也很高。而且它有更強(qiáng)的驅(qū)動(dòng)能力。而且L298N有過電流保護(hù) 首都師范大學(xué)本科畢業(yè)設(shè)計(jì)論文 功能,當(dāng)出現(xiàn)電機(jī)卡死時(shí),可以保護(hù)電路和電機(jī)。這種調(diào)速方式有調(diào)速特性優(yōu)良、調(diào)整平滑、調(diào)速范圍廣、過載能力大,能承受頻繁的負(fù)載沖擊,還可以實(shí)現(xiàn)頻繁的無級(jí)快速啟動(dòng)、制動(dòng)和反轉(zhuǎn)等優(yōu)點(diǎn)。因此決定采用使用功率三極管作為功率放大器的輸出控制直流電機(jī)。 圖 3.2 L298N引腳圖 圖3.3 L298N電路原理圖 基于行為設(shè)計(jì)的移動(dòng)機(jī)器人設(shè)計(jì)與實(shí)現(xiàn) 圖3.4 L298N實(shí)物圖 3.1.3避障模塊 本設(shè)計(jì)采用HC-SR04超聲波測(cè)距模塊,該原件可提供2CM-400CM的非接觸式距離感測(cè)功能,測(cè)距精度可達(dá)高到3mm;模塊包括超聲波發(fā)射器,接收器和控制電路。 基本工作原理:(1)采用IO口TRIG觸發(fā)測(cè)距,給至少10us的高電平信號(hào);(2)模塊自動(dòng)發(fā)送8個(gè)40khz的方波,自動(dòng)檢測(cè)是否有信號(hào)返回;(3)有信號(hào)返回,通過IO口ECHO輸出一個(gè)高電平,高電平持續(xù)的時(shí)間就是超聲波從發(fā)射到返回的時(shí)間。測(cè)試距離=(高電平時(shí)間*聲速(340M/S))/2; 圖3.5避障模塊實(shí)物圖 首都師范大學(xué)本科畢業(yè)設(shè)計(jì)論文 3.1.4電源模塊 本設(shè)計(jì)采用的電源為車載電源。為保證電源工作可靠,單片機(jī)系統(tǒng)與動(dòng)力伺服系統(tǒng)的電源采用了大功率、大容量的蓄電池;而傳感器的工作電源則采用了小巧輕便的干電池。 圖3.6 電源模塊實(shí)物圖 3.2 小車的基本搭建 舵機(jī),云臺(tái)和超聲波的連接步驟如下圖: 1.如圖3.7準(zhǔn)備好云臺(tái)舵機(jī)超聲波安裝所需配件。 圖3.7 2.圖3.8取出舵機(jī)配件之一“十字膠體”將十字剪成四邊對(duì)等的長(zhǎng)度,打磨成寬度一樣。 基于行為設(shè)計(jì)的移動(dòng)機(jī)器人設(shè)計(jì)與實(shí)現(xiàn) 圖3.8 3.將2*8mm的和1.2*5mm的螺絲安裝到十字的第二個(gè)孔,裝到云臺(tái)底座上。在云臺(tái)底部的螺絲位套上螺母,并用熱熔膠固定如圖3.9。 圖3.9 4.將舵機(jī)裝上云臺(tái)的兩個(gè)邊翼,并用螺絲緊固如圖3.10。 圖3.10 5.將裝好的舵機(jī)放進(jìn)固定好的十字膠體調(diào)整好方向后,從舵機(jī)組件包里取出2*6mm的螺絲安裝到舵機(jī)固定孔中。完成云臺(tái)安裝后用扎帶將超聲波模塊固定在云臺(tái)前端如圖3.11。 首都師范大學(xué)本科畢業(yè)設(shè)計(jì)論文 圖3.11 6.將6mm銅柱裝在云臺(tái)底座安裝孔并將裝好的云臺(tái)組件直接安裝到小車底盤上,小車搭建成品如圖3.12。 圖3.12 小車搭建成品 3.3連線 3.3.1電機(jī)的連線 L298N的供電處理: 用6節(jié)5號(hào)電池盒取一路電源給L298N電機(jī)驅(qū)動(dòng)模塊供電,另一路給ARDUINO主板供電給L298N電機(jī)驅(qū)動(dòng)模塊供電的電源+極接L298N的VMS接口,電源的-接L298N的GND接口,L298N板上的+5V接口放空不接。電機(jī)一接L298N的MOTOA,電機(jī)二接L298N的MOTOB。 基于行為設(shè)計(jì)的移動(dòng)機(jī)器人設(shè)計(jì)與實(shí)現(xiàn) 圖3.13 電機(jī)的連線 3.3.2舵機(jī)的連線 首先設(shè)置函數(shù):myservo.attach(5);// 定義伺服馬達(dá)輸出第5腳位。 舵機(jī)需要連接的有三條線,分別是+,-,信號(hào)。三條線均直接連接到Arduino板上。 接線方法:將+5V接到J5位,-位接到J6位,信號(hào)位接到J4位PWM口的第五腳。 連線方式如圖3.14所示: 圖3.14舵機(jī)的連線 首都師范大學(xué)本科畢業(yè)設(shè)計(jì)論文 3.3.3超聲波的連線 超聲波傳感器有四個(gè)腳,如圖3.15所示: 四個(gè)引腳的功能分別是: 1:VCC 接+5V。2:TRIQ 信號(hào)輸入。3:ECHO信號(hào)輸出。4:GND 接地。 圖3.15超聲波的引腳示意圖 超聲波模塊四個(gè)引腳直接與Arduino單片機(jī)連接,接線方法如圖3.16所示: 圖3.16超聲波與Arduino單片機(jī)接線 基于行為設(shè)計(jì)的移動(dòng)機(jī)器人設(shè)計(jì)與實(shí)現(xiàn) 3.3.4 Arduino超聲波小車總體連線圖: 電機(jī)A和電機(jī)B將正負(fù)兩端接在L298N電機(jī)驅(qū)動(dòng)板上,若正負(fù)兩級(jí)接反則車輪反轉(zhuǎn)。電機(jī)驅(qū)動(dòng)板、舵機(jī)、超聲波模塊直接與Arduino核心控制板相連,電源模塊分別給電機(jī)驅(qū)動(dòng)板和Arduino板供電。 圖3.17 Arduino超聲波小車總體連線圖 首都師范大學(xué)本科畢業(yè)設(shè)計(jì)論文 第四章 軟件模塊 4.1 軟件設(shè)計(jì)思路 在軟件設(shè)計(jì)方面,采用Arduino語言編程,編寫程序流程圖4.1 圖4.1 軟件編譯流程圖 基于行為設(shè)計(jì)的移動(dòng)機(jī)器人設(shè)計(jì)與實(shí)現(xiàn) 4.2 電機(jī)前進(jìn)模塊 在定義好各個(gè)引腳之后,進(jìn)入主程序的編寫部分。我在程序控制模塊里主要編寫的是電機(jī)的控制函數(shù)。本程序中提及的digitalWrite函數(shù)的作用是設(shè)置引腳的輸出的電壓為高電平或低電平。該函數(shù)也是一個(gè)無返回值的函數(shù),函數(shù)有兩個(gè)參數(shù)pin和value,pin參數(shù)表示所要設(shè)置的引腳,value參數(shù)表示輸出的電壓HIGH(高電平)或LOW(低電平)。 首先定義為advance前進(jìn)函數(shù): void advance(int a){ 編寫模擬信號(hào),定義馬達(dá)右后動(dòng)作為低電平,即不給電: digitalWrite(pinRB,LOW);編寫模擬信號(hào),定義馬達(dá)右前動(dòng)作為高電平: digitalWrite(pinRF,HIGH);編寫模擬信號(hào),定義馬達(dá)左后動(dòng)作為低電平: digitalWrite(pinLB,LOW);編寫模擬信號(hào),定義馬達(dá)左前動(dòng)作為高電平: digitalWrite(pinLF,HIGH);定義延時(shí),即將前進(jìn)動(dòng)作保持一段時(shí)間,直到開始執(zhí)行下一程序。delay(a * 100);延時(shí) } 4.2 電機(jī)后退模塊 將函數(shù)定義為back后退函數(shù) void back(int g)//后退 { 編寫模擬信號(hào),定義馬達(dá)右后動(dòng)作為高電平: digitalWrite(pinRB,HIGH);編寫模擬信號(hào),定義馬達(dá)右前動(dòng)作為低電平: digitalWrite(pinRF,LOW); 首都師范大學(xué)本科畢業(yè)設(shè)計(jì)論文 編寫模擬信號(hào),定義馬達(dá)左后動(dòng)作為高電平: digitalWrite(pinLB,HIGH);編寫模擬信號(hào),定義馬達(dá)左前動(dòng)作為低電平: digitalWrite(pinLF,LOW);定義延時(shí),即將電機(jī)的后退動(dòng)作保持一段時(shí)間,直到開始執(zhí)行下一程序。delay(g * 100);} 4.3 電機(jī)停止工作模塊 將函數(shù)定義為stopp停止函數(shù) void stopp(int f){ 編寫模擬信號(hào),定義馬達(dá)右后動(dòng)作為高電平: digitalWrite(pinRB,HIGH);編寫模擬信號(hào),定義馬達(dá)右前動(dòng)作為高電平digitalWrite(pinRF,HIGH);編寫模擬信號(hào),定義馬達(dá)左后動(dòng)作為高電平digitalWrite(pinLB,HIGH);編寫模擬信號(hào),定義馬達(dá)左前動(dòng)作為高電平digitalWrite(pinLF,HIGH);定義延時(shí),即將電機(jī)的停止動(dòng)作保持一段時(shí)間,直到開始執(zhí)行下一程序。delay(f * 100);} 4.4 電機(jī)左轉(zhuǎn)模塊 將函數(shù)定義為left左轉(zhuǎn)函數(shù) void left(int c){ 基于行為設(shè)計(jì)的移動(dòng)機(jī)器人設(shè)計(jì)與實(shí)現(xiàn) 編寫模擬信號(hào),定義馬達(dá)右后動(dòng)作為高電平 digitalWrite(pinRB,HIGH);編寫模擬信號(hào),定義馬達(dá)右前動(dòng)作為高電平 digitalWrite(pinRF,HIGH);編寫模擬信號(hào),定義馬達(dá)左后動(dòng)作為低電平 digitalWrite(pinLB,LOW);編寫模擬信號(hào),定義馬達(dá)左前動(dòng)作為高電平 digitalWrite(pinLF,HIGH);定義延時(shí),即將電機(jī)的左轉(zhuǎn)動(dòng)作保持一段時(shí)間,直到開始執(zhí)行下一程序。delay(c * 100);} 4.5 電機(jī)右轉(zhuǎn)模塊 將函數(shù)定義為right右轉(zhuǎn)函數(shù) void right(int b){ 編寫模擬信號(hào),定義馬達(dá)右后動(dòng)作為低電平 digitalWrite(pinRB,LOW);編寫模擬信號(hào),定義馬達(dá)右前動(dòng)作為高電平 digitalWrite(pinRF,HIGH);編寫模擬信號(hào),定義馬達(dá)左后動(dòng)作為高電平 digitalWrite(pinLB,HIGH);編寫模擬信號(hào),定義馬達(dá)左前動(dòng)作為高電平 digitalWrite(pinLF,HIGH);定義延時(shí),即將電機(jī)的右轉(zhuǎn)動(dòng)作保持一段時(shí)間,直到開始執(zhí)行下一程序。delay(b * 100);} 首都師范大學(xué)本科畢業(yè)設(shè)計(jì)論文 4.6 防卡死模塊 該模塊為防止避障小車卡死的編譯,即當(dāng)小車發(fā)生與障礙物距離過近的情況而無法轉(zhuǎn)彎時(shí),該程序會(huì)指引小車向后倒退,倒退一定距離后左轉(zhuǎn)前進(jìn),若仍有障礙物則繼續(xù)倒退,若無障礙物則左轉(zhuǎn)后直行。即可防止車在行進(jìn)途中卡在死巷里。 if(directionn == 2)//假如directionn(方向)= 2(倒車){ back(8);// 倒退(車)turnL(2);//些微向左方移動(dòng)(防止卡在死巷里)Serial.print(“ Reverse ”);//顯示方向(倒退)} 基于行為設(shè)計(jì)的移動(dòng)機(jī)器人設(shè)計(jì)與實(shí)現(xiàn) 第五章 實(shí)驗(yàn)及結(jié)果分析 5.1預(yù)期目標(biāo) 總體來說本次試驗(yàn)達(dá)到預(yù)期目標(biāo)。 (1)在車前方?jīng)]有障礙物時(shí),小車沿直線向前走。 (2)在車前方有障礙物時(shí),小車能避開障礙物,避障方法如下:超聲波檢測(cè)到障礙物后,先向左邊旋轉(zhuǎn),檢測(cè)。如果旋轉(zhuǎn)后前面沒有檢測(cè)障礙物,則沿直線向前走;如果旋轉(zhuǎn)后檢測(cè)到前方仍有障礙物,則繼續(xù)旋轉(zhuǎn),如果前面沒有障礙物,則沿直線向前行走; 但是該超聲波避障小車還存在著許多的不足,比如說只能對(duì)正前方一定角度內(nèi)進(jìn)行探測(cè),使用的是一路超聲波而不是多路超聲波探測(cè),并且為了簡(jiǎn)化,默認(rèn)的只是向同一個(gè)方向轉(zhuǎn)彎等,這些都是有待進(jìn)一步發(fā)展和提高的。 5.2遇到的問題和解決方法 在此之前我們并沒有制作過任何智能的機(jī)器人。初定避障小車這個(gè)題目時(shí),最初我們采用樂高機(jī)器人搭建了一個(gè)循跡避障的機(jī)器人,由于操作較為簡(jiǎn)單,后來我們決定嘗試采用Arduino芯片,利用超聲波傳感器搭建出一臺(tái)智能的避障小車。最初我們對(duì)硬件的原理不夠明白,不知道采用哪些原件,課程設(shè)計(jì)指導(dǎo)書上介紹的也并不詳細(xì),因此我們利用大量時(shí)間去圖書館查閱了許多資料,對(duì)其電機(jī)驅(qū)動(dòng)、Arduino控制板以及超聲波傳感器的引腳、電路設(shè)計(jì)等各方面都做了近一步的了解之后才開始進(jìn)行小車的搭建。 在選擇硬件設(shè)施上,我們也花了很大功夫。在最初我們?cè)O(shè)計(jì)了兩個(gè)驅(qū)動(dòng)方案的選擇。一個(gè)是采用ULN2003驅(qū)動(dòng),它是由7組達(dá)林頓晶體管陣列和相應(yīng)的電阻網(wǎng)絡(luò)以及鉗位二極管網(wǎng)絡(luò)構(gòu)成,具有同時(shí)驅(qū)動(dòng)7組負(fù)載的能力,一般用于高速大功率驅(qū)動(dòng)電路。另個(gè)一就是采用由雙極性管組成的H橋電路(L298N)。用單片機(jī)控制晶體管使之工作在占空比可調(diào)的開關(guān)狀態(tài),精確調(diào)整電機(jī)轉(zhuǎn)速。這種電路由于工作在管子的飽和截止模式下,則效率非常高;H橋電路保證了可以簡(jiǎn)單地實(shí)現(xiàn)轉(zhuǎn)速和方向的控制,電子開關(guān)的速度很快,穩(wěn)定性也很高。而且它有更強(qiáng)的驅(qū)動(dòng)能力。此驅(qū)動(dòng)板體積小,重量輕,而且它有一個(gè)外加的續(xù)流二極管,可以防止電機(jī)線圈在斷電時(shí)的方向電勢(shì)損壞芯片,同時(shí)也也安裝有散熱 首都師范大學(xué)本科畢業(yè)設(shè)計(jì)論文 片能使芯片溫度降低,盡量防止他自動(dòng)斷電,讓驅(qū)動(dòng)性能更加穩(wěn)定。板子設(shè)有兩個(gè)電流反饋檢測(cè)接口、內(nèi)邏輯取電選擇端、4個(gè)上拉電阻選擇端、2路直流電機(jī)接口、控制電機(jī)方向指向燈等等。這個(gè)板子不僅適用于智能程控小車、輪式機(jī)器人等,還可以配合各種控制器使用。因此經(jīng)過一番對(duì)比和考慮,最終我們選擇了L298N電機(jī)驅(qū)動(dòng)板。在超聲波的選擇上我們也出現(xiàn)了分期,本設(shè)計(jì)最終采用的是HC-SR04超聲波測(cè)距模塊。而最初我們選擇的事紅外傳感裝置。之所以最終沒有選擇紅外線傳感,是因?yàn)榧t外線對(duì)使用環(huán)境有較高的要求,當(dāng)遇上淺色或是深色的家居物品它無法反射回來,會(huì)造成機(jī)器人無法正常避障。而這款HC-SR04則采用仿生超聲波技術(shù),類似鯨魚,蝙蝠采用聲波來偵測(cè)判斷障礙物以及及空間方位,該超聲波避障模塊包括超聲波發(fā)射器,接收器和控制電路,靈敏度較高,但技術(shù)成本也較高。 在搭建方面,我們完成程序的編譯通電之后,小車發(fā)生了原地旋轉(zhuǎn)的現(xiàn)象,經(jīng)過觀察,我們發(fā)現(xiàn)小車在感應(yīng)障礙物方面并沒有問題。問題出現(xiàn)在左側(cè)輪前轉(zhuǎn),而右側(cè)輪后轉(zhuǎn)。所以我們將控制右側(cè)車輪的電機(jī)的接線進(jìn)行改接,這個(gè)問題便得以解決。 在軟硬件調(diào)試方面,我們也遇到了一些問題。首先是避障小車的旋轉(zhuǎn)角度不夠,也許是因?yàn)榈孛婺Σ亮Φ年P(guān)系,小車的旋轉(zhuǎn)角度并達(dá)不到我們所設(shè)定的左轉(zhuǎn)九十度。后來我們又將程序進(jìn)行改進(jìn),設(shè)置的旋轉(zhuǎn)角度比九十度多一些,小車就可正常避障了。還有一個(gè)問題就是小車在遇到障礙物之后的反應(yīng)速度并不是很快,需要障礙物在前面平行持續(xù)1,2秒才可以做出轉(zhuǎn)向的判斷,這個(gè)延遲反應(yīng)也經(jīng)常造成小車和障礙物發(fā)生碰撞,這也是我們遇到的最大問題,在這個(gè)問題上我們做了很多程序上的調(diào)試,但終究達(dá)不到很理想的效果,在后續(xù)的試驗(yàn)中,我們準(zhǔn)備嘗試換一個(gè)感測(cè)避障模塊進(jìn)行嘗試改進(jìn)。 5.3 硬件的調(diào)試與整合 5.3.1調(diào)試思路 本設(shè)計(jì)的智能避障小車,難點(diǎn)重點(diǎn)有兩大模塊。分別是:L298驅(qū)動(dòng)模塊和超聲波測(cè)距模塊。我們?cè)谡{(diào)試的時(shí)候我們把兩大模塊分別調(diào)試,最后再把所有模塊和硬件組合起來再進(jìn)行最后的整機(jī)調(diào)試這樣一個(gè)調(diào)試的思路。 5.3.2調(diào)試超聲波模塊 超聲波模塊一共有四個(gè)腳,一個(gè)是VCC,一個(gè)是GND,還有兩個(gè)分別是超聲波的發(fā)射和接收引腳。連接電路時(shí)候只需引出四根插線,分別連接到89S52的對(duì)應(yīng)引腳,燒制好 基于行為設(shè)計(jì)的移動(dòng)機(jī)器人設(shè)計(jì)與實(shí)現(xiàn) 測(cè)試程序,測(cè)試結(jié)果圖如5.2.2。本設(shè)計(jì)四根插線分別連接到VCC,GND,還有發(fā)射和接收引腳分別為:P3.0和P3.2。 5.3.3電機(jī)調(diào)試 在電機(jī)驅(qū)動(dòng)板上。有EA,I1,I2,EB,I3,I4六個(gè)端子用于控制電機(jī)。EA,EB為兩路電機(jī)的控制使能,通過PWM可以控制電機(jī)轉(zhuǎn)速,高電平有效。我們完成程序的編譯通電之后,小車發(fā)生了不停地旋轉(zhuǎn)的現(xiàn)象,我們觀察到小車在感應(yīng)障礙物方面并沒有問題。問題出現(xiàn)在左側(cè)輪前轉(zhuǎn),而右側(cè)輪后轉(zhuǎn)。所以我們將控制右側(cè)車輪的電機(jī)的接線進(jìn)行修改,這個(gè)問題便得以解決。 圖5.1電機(jī)驅(qū)動(dòng)板的引腳及其功能 5.4 心得體會(huì) 通過這次的項(xiàng)目實(shí)訓(xùn),我學(xué)習(xí)到了很多的電子知識(shí),提高了我對(duì)于陌生硬件的學(xué)習(xí)能力。超聲波傳感器在此之前我沒有接觸過,對(duì)我來說非常的陌生,從一無所知慢慢查資料到能夠熟練應(yīng)用,讓我知道了面對(duì)新的硬件應(yīng)該怎么學(xué)習(xí),在以后的工作學(xué)習(xí)中,我一定會(huì)遇到非常多的不熟悉的硬件,我相信,通過不斷地鍛煉積累,學(xué)習(xí)能力會(huì)進(jìn)一步提高。這次實(shí)訓(xùn)同時(shí)還加強(qiáng)了我實(shí)踐動(dòng)手能力,特別培養(yǎng)了出現(xiàn)問題、分析問題、解決問題的能力,我相信這些能力的提高對(duì)我以后在從事任何工作都將會(huì)有極大的幫助。 這次的項(xiàng)目實(shí)訓(xùn)讓我感觸最深的是:作為電子愛好者,電子制作中不管遇到什么問題和困境都要有一顆平靜的心和堅(jiān)持不懈的精神,一顆浮躁的心是不會(huì)到達(dá)成功的彼岸。這次課程設(shè)計(jì),給我更多的是一種模塊化的思想,將系統(tǒng)按我們所需的功能和系統(tǒng)所能提供的功能進(jìn)行模塊化的分類,將會(huì)使我們的工作變得一目了然,非常清晰。比如說這次我選的避障小車,可以分成超聲波測(cè)速模塊,電機(jī)驅(qū)動(dòng)模塊,單片機(jī)核心模塊三個(gè),首都師范大學(xué)本科畢業(yè)設(shè)計(jì)論文 三個(gè)部分各司其職,無論從硬件上還是軟件上,都能夠比較清晰地將他們的功能區(qū)分開,從而有利于硬件的連接和程序的編寫。 從以后工作來看,這種模塊化處理問題的方式將會(huì)更加的有用,在公司和以后得科研項(xiàng)目中,系統(tǒng)一定是越來越復(fù)雜,不可能一個(gè)人完成所有的任務(wù),一定是一個(gè)團(tuán)隊(duì)來做這些系統(tǒng)的設(shè)計(jì),所以模塊化之后,能夠?qū)⑷蝿?wù)分配給每個(gè)人,最后大家還能夠很好的綜合到一起,大大的縮短了開發(fā)周期。這次的畢設(shè)實(shí)踐學(xué)習(xí)讓我受益匪淺。 基于行為設(shè)計(jì)的移動(dòng)機(jī)器人設(shè)計(jì)與實(shí)現(xiàn) 第六章 設(shè)想與展望 隨著科技的迅猛發(fā)展,智能已經(jīng)成為了現(xiàn)在的高科技的熱詞,智能機(jī)器人可以解決無數(shù)人類無法或者是很難解決的難題。本智能小車系統(tǒng)最誘人的前景就是可用于未來的智能汽車上了,當(dāng)駕駛員因疏忽或打瞌睡時(shí)這樣的智能汽車的設(shè)計(jì)就能體現(xiàn)出它的作用。如果汽車偏離車道或距障礙物小于安全距離時(shí),汽車就會(huì)發(fā)出警報(bào),提醒駕駛員注意,如果駕駛員沒有及時(shí)作出反應(yīng),汽車就會(huì)自動(dòng)減速或停靠于路邊,這樣就大大增大了駕車的安全系數(shù),想的再長(zhǎng)遠(yuǎn)一點(diǎn),這個(gè)避障功能可以作為無人駕駛機(jī)動(dòng)的一個(gè)基本功能。無人駕駛的機(jī)動(dòng)車行駛在路上,擁有定位和導(dǎo)航的功能后就可以將人或物品送到我們所需要送到的位置。這樣智能機(jī)器人的應(yīng)用,就大大的減少了人力和物力,并且方便了更多不會(huì)駕駛機(jī)動(dòng)車的市民。 這樣的避障小車還可以用于月球探測(cè)等的無人探月車,幫助我們傳達(dá)月球上更多的信息,讓我們更加的了解月球,為將來登月做好充分準(zhǔn)備。這樣的小車在科學(xué)考察探測(cè)車上也有廣闊的應(yīng)用前景,在科學(xué)考察中,有很多危險(xiǎn)且人們無法涉足的地方,這時(shí),智能科學(xué)考察車就能夠派上用場(chǎng),在它上面裝上攝像機(jī),代替人們進(jìn)行許多無法進(jìn)行的工作。智能車的應(yīng)用減少了人們的工作危險(xiǎn)系數(shù),解決了惡劣環(huán)境下勘探的需求,實(shí)現(xiàn)了即是沒有人操作應(yīng)用機(jī)器也能很好的完成工作,這項(xiàng)研發(fā)可謂是一舉多得。 在未來的社會(huì)中智能也是大勢(shì)所趨,而智能車作為智能機(jī)器人中一類必不可少的組成部分。最近幾年發(fā)展更是迅速,各個(gè)國家更是投入大量資金。它廣泛涉及人工智能、計(jì)算機(jī)視覺、自動(dòng)控制、精密儀器、傳感和信息等一系列學(xué)科的創(chuàng)新研究,其研究成果可廣泛應(yīng)用于工業(yè)、農(nóng)業(yè)、醫(yī)藥、軍事、航空、信息技術(shù)等實(shí)際領(lǐng)域,智能機(jī)器人的發(fā)展水平可反映出一個(gè)國家的高科技水平和綜合國力,是國家綜合國力強(qiáng)大的標(biāo)志,也是人類文明進(jìn)步的標(biāo)志。在我們未來的工作與生活中,會(huì)越來越多的需要機(jī)器人代替人力來工作和完成一些難度較大或較為費(fèi)力的任務(wù),對(duì)這些實(shí)用的機(jī)器人的需求也會(huì)越來越大。因此,機(jī)器人研發(fā)的前景是不可估量的。 首都師范大學(xué)本科畢業(yè)設(shè)計(jì)論文 參考文獻(xiàn) [1] 袁新娜,與紅英編著.超聲波傳感器在智能小車避障系統(tǒng)中的應(yīng)用.[A]中北大學(xué)(2009)08-0085-04 [2] 邵貝貝.單片機(jī)嵌入式應(yīng)用的在線開發(fā)方法[M].北京.清華大學(xué)出社.2004 [3] 王曉明.電動(dòng)機(jī)的單片機(jī)控制[M].北京.北京航空航天大學(xué)出版社.2002 [4] 臧杰,閻巖.汽車構(gòu)造[M].北京.機(jī)械工業(yè)出版社.2005 哈爾濱工業(yè)大學(xué)課程設(shè)計(jì)說明書 [5] 安鵬,馬偉.S12單片機(jī)模塊應(yīng)用及程序調(diào)試[J].電子產(chǎn)品世界.2006.第211期. 162-163 [6] 童詩白,華成英.模擬電子技術(shù)基礎(chǔ)[M].北京.高等教育出版社.2000 [7] 沈長(zhǎng)生.常用電子元器件使用一讀通[M].北京.人民郵電出版社.2004 [8] 宗光華.機(jī)器人的創(chuàng)意設(shè)計(jì)與實(shí)踐[M].北京.北京航空航天大學(xué)出社.2004 [9] 張偉等.Protel DXP高級(jí)應(yīng)用[M].北京.人民郵電出版社.2002 [10] 張文春.汽車?yán)碚揫M].北京.機(jī)械工業(yè)出版社.2005 [11] 江海波,王卓然,耿德根編著.深入淺出AVR單片機(jī).中國電力出版社,2008.31 基于行為設(shè)計(jì)的移動(dòng)機(jī)器人設(shè)計(jì)與實(shí)現(xiàn) 致謝 歷時(shí)三個(gè)月的畢業(yè)設(shè)計(jì)已經(jīng)告一段落。在我和我組成員張碩的共同努力下,本避障小車的任務(wù)已經(jīng)基本完成。在這段時(shí)間里,非常感謝在遇到困難時(shí)我的同學(xué)們所給予的支持和鼓勵(lì),給我提供專業(yè)的意見和建議。還有和我同組的同學(xué)張碩,我們共同查閱資料,克服許多在選擇小車部件、小車搭建和編程上的種種困難。也正是這次畢業(yè)設(shè)計(jì)使我深刻地認(rèn)識(shí)到學(xué)好專業(yè)知識(shí)的重要性,也理解了理論聯(lián)系實(shí)際的含義,并且檢驗(yàn)了大學(xué)四年的學(xué)習(xí)成果。我更明白了團(tuán)隊(duì)合作的重要性。兩個(gè)人不僅有兩個(gè)大腦和更多的主意和知識(shí),最重要的事能夠在遇到困難時(shí)可以相互鼓勵(lì)學(xué)習(xí),互相分擔(dān)。也正是這種團(tuán)結(jié)合作的精神促使了我們這次畢設(shè)任務(wù)的圓滿成功。 這三個(gè)月的設(shè)計(jì)是對(duì)過去所學(xué)知識(shí)的系統(tǒng)提高和擴(kuò)充的過程,為今后的發(fā)展打下了良好的基礎(chǔ)。也非常感謝指導(dǎo)老師徐老師的支持和指導(dǎo),每次我給徐老師發(fā)郵件她都會(huì)認(rèn)真的給我批改,指出我的不足。也正是因?yàn)樵诶蠋煹闹笇?dǎo)下我的論文進(jìn)行不斷的改正,才有機(jī)會(huì)變得越來越好。 由于自身水平有限,設(shè)計(jì)中一定存在很多不足之處。雖然這次的畢業(yè)設(shè)計(jì)對(duì)于知識(shí)的運(yùn)用和銜接還不夠熟練,但是我將在以后的工作和學(xué)習(xí)中繼續(xù)努力、不斷完善。敬請(qǐng)各位老師批評(píng)指正。 首都師范大學(xué)本科畢業(yè)設(shè)計(jì)論文 附錄 超聲波智能避障車程序(ARDUINO) L = 左 R = 右 F = 前 B = 后 */ #include int pinRB=10;// 定義10腳位右后 int pinRF=11;// 定義11腳位右前 int inputPin = A0;// 定義超音波信號(hào)接收腳位 int outputPin =A1;// 定義超音波信號(hào)發(fā)射腳位 int Fspeedd = 0;// 前速 int Rspeedd = 0;// 右速 int Lspeedd = 0;// 左速 int directionn = 0;// 前=8 后=2 左=4 右=6 Servo myservo;// 設(shè) myservo int delay_time = 250;// 伺服馬達(dá)轉(zhuǎn)向后的穩(wěn)定時(shí)間 int Fgo = 8;// 前進(jìn) int Rgo = 6;// 右轉(zhuǎn) int Lgo = 4;// 左轉(zhuǎn) int Bgo = 2;// 倒車 基于行為設(shè)計(jì)的移動(dòng)機(jī)器人設(shè)計(jì)與實(shí)現(xiàn) void setup(){ Serial.begin(9600);// 定義馬達(dá)輸出腳位 pinMode(pinLB,OUTPUT);// 腳位 8(PWM)pinMode(pinLF,OUTPUT);// 腳位 9(PWM)pinMode(pinRB,OUTPUT);// 腳位 10(PWM)pinMode(pinRF,OUTPUT);// 腳位 11(PWM) pinMode(inputPin, INPUT);// 定義超音波輸入腳位 pinMode(outputPin, OUTPUT);// 定義超音波輸出腳位 myservo.attach(5);// 定義伺服馬達(dá)輸出第5腳位(PWM)} void advance(int a)// 前進(jìn) { digitalWrite(pinRB,LOW);// 使馬達(dá)(右后)動(dòng)作 digitalWrite(pinRF,HIGH);digitalWrite(pinLB,LOW);// 使馬達(dá)(左后)動(dòng)作 digitalWrite(pinLF,HIGH);delay(a * 100);}(電機(jī)前進(jìn)函數(shù)) void right(int b)//右轉(zhuǎn)(單輪){ digitalWrite(pinRB,LOW);//使馬達(dá)(右后)動(dòng)作右后方的引腳的低電頻 digitalWrite(pinRF,HIGH);右前引腳高電頻 digitalWrite(pinLB,HIGH);digitalWrite(pinLF,HIGH);delay(b * 100);} 首都師范大學(xué)本科畢業(yè)設(shè)計(jì)論文 void left(int c)//左轉(zhuǎn)(單輪){ digitalWrite(pinRB,HIGH);digitalWrite(pinRF,HIGH);digitalWrite(pinLB,LOW);//使馬達(dá)(左后)動(dòng)作 digitalWrite(pinLF,HIGH);delay(c * 100);}(high高頻是向前 low低頻向后)void turnR(int d)//右轉(zhuǎn)(雙輪){ digitalWrite(pinRB,LOW);//使馬達(dá)(右后)動(dòng)作 digitalWrite(pinRF,HIGH);digitalWrite(pinLB,HIGH);digitalWrite(pinLF,LOW);//使馬達(dá)(左前)動(dòng)作 delay(d * 100);} void turnL(int e)//左轉(zhuǎn)(雙輪){ digitalWrite(pinRB,HIGH);digitalWrite(pinRF,LOW);//使馬達(dá)(右前)動(dòng)作 digitalWrite(pinLB,LOW);//使馬達(dá)(左后)動(dòng)作 digitalWrite(pinLF,HIGH);delay(e * 100);} void stopp(int f)//停止 { digitalWrite(pinRB,HIGH);digitalWrite(pinRF,HIGH);digitalWrite(pinLB,HIGH);digitalWrite(pinLF,HIGH); 基于行為設(shè)計(jì)的移動(dòng)機(jī)器人設(shè)計(jì)與實(shí)現(xiàn) delay(f * 100);} void back(int g)//后退 { digitalWrite(pinRB,HIGH);//使馬達(dá)(右后)動(dòng)作 digitalWrite(pinRF,LOW);digitalWrite(pinLB,HIGH);//使馬達(dá)(左后)動(dòng)作 digitalWrite(pinLF,LOW);delay(g * 100);} void detection()//測(cè)量3個(gè)角度(0.90.179){ intdelay_time = 250;// 伺服馬達(dá)轉(zhuǎn)向后的穩(wěn)定時(shí)間 ask_pin_F();// 讀取前方距離 if(Fspeedd< 10)// 假如前方距離小于10公分 { stopp(1);// 清除輸出資料 back(2);// 后退 0.2秒 } if(Fspeedd< 25)// 假如前方距離小于25公分 { stopp(1);// 清除輸出資料 ask_pin_L();// 讀取左方距離 delay(delay_time);// 等待伺服馬達(dá)穩(wěn)定 ask_pin_R();// 讀取右方距離 delay(delay_time);// 等待伺服馬達(dá)穩(wěn)定 首都師范大學(xué)本科畢業(yè)設(shè)計(jì)論文 if(Lspeedd>Rspeedd)//假如左邊距離大于右邊距離 { directionn = Rgo;//向右走 } if(Lspeedd<= Rspeedd)//假如左邊距離小于或等于右邊距離 { directionn = Lgo;//向左走 } if(Lspeedd< 10 &&Rspeedd< 10)//假如左邊距離和右邊距離皆小于10公分 { directionn = Bgo;//向后走 } } else //加如前方不小于(大于)25公分 { directionn = Fgo;//向前走 } } void ask_pin_F()// 量出前方距離 { myservo.write(90);digitalWrite(outputPin, LOW);// 讓超聲波發(fā)射低電壓2μs delayMicroseconds(2);digitalWrite(outputPin, HIGH);// 讓超聲波發(fā)射高電壓10μs,這里至少是10μs delayMicroseconds(10);digitalWrite(outputPin, LOW);// 維持超聲波發(fā)射低電壓 基于行為設(shè)計(jì)的移動(dòng)機(jī)器人設(shè)計(jì)與實(shí)現(xiàn) float Fdistance = pulseIn(inputPin, HIGH);// 讀差相差時(shí)間 Fdistance= Fdistance/5.8/10;// 將時(shí)間轉(zhuǎn)為距離距離(單位:公分)Serial.print(“F distance:”);//輸出距離(單位:公分)Serial.println(Fdistance);//顯示距離 Fspeedd = Fdistance;// 將距離讀入Fspeedd(前速)} void ask_pin_L()// 量出左邊距離 { myservo.write(5);delay(delay_time);digitalWrite(outputPin, LOW);// 讓超聲波發(fā)射低電壓2μs delayMicroseconds(2);digitalWrite(outputPin, HIGH);// 讓超聲波發(fā)射高電壓10μs,這里至少是10μs delayMicroseconds(10);digitalWrite(outputPin, LOW);// 維持超聲波發(fā)射低電壓 float Ldistance = pulseIn(inputPin, HIGH);// 讀差相差時(shí)間 Ldistance= Ldistance/5.8/10;// 將時(shí)間轉(zhuǎn)為距離距離(單位:公分)Serial.print(“L distance:”);//輸出距離(單位:公分)Serial.println(Ldistance);//顯示距離 Lspeedd = Ldistance;// 將距離讀入Lspeedd(左速)} void ask_pin_R()// 量出右邊距離 { myservo.write(177);delay(delay_time);digitalWrite(outputPin, LOW);// 讓超聲波發(fā)射低電壓2μs delayMicroseconds(2);digitalWrite(outputPin, HIGH);// 讓超聲波發(fā)射高電壓10μs,這里至少是10μs delayMicroseconds(10);digitalWrite(outputPin, LOW);// 維持超聲波發(fā)射低電壓 首都師范大學(xué)本科畢業(yè)設(shè)計(jì)論文 float Rdistance = pulseIn(inputPin, HIGH);// 讀差相差時(shí)間 Rdistance= Rdistance/5.8/10;// 將時(shí)間轉(zhuǎn)為距離距離(單位:公分)Serial.print(“R distance:”);//輸出距離(單位:公分)Serial.println(Rdistance);//顯示距離 Rspeedd = Rdistance;// 將距離讀入Rspeedd(右速)} void loop(){ myservo.write(90);//讓伺服馬達(dá)回歸預(yù)備位置準(zhǔn)備下一次的測(cè)量 detection();//測(cè)量角度并且判斷要往哪一方向移動(dòng) if(、n == 2)//假如directionn(方向)= 2(倒車){ back(8);// 倒退(車)turnL(2);//些微向左方移動(dòng)(防止卡在死巷里)Serial.print(“ Reverse ”);//顯示方向(倒退)} if(directionn == 6)//假如directionn(方向)= 6(右轉(zhuǎn)){ back(1);turnR(6);// 右轉(zhuǎn) Serial.print(“ Right ”);//顯示方向(左轉(zhuǎn))} if(directionn == 4)//假如directionn(方向)= 4(左轉(zhuǎn)){ back(1);turnL(6);// 左轉(zhuǎn) Serial.print(“ Left ”);//顯示方向(右轉(zhuǎn))} 基于行為設(shè)計(jì)的移動(dòng)機(jī)器人設(shè)計(jì)與實(shí)現(xiàn) if(directionn == 8)//假如directionn(方向)= 8(前進(jìn)){ advance(1);// 正常前進(jìn) Serial.print(“ Advance ”);//顯示方向(前進(jìn))Serial.print(“ ”);} 首都師范大學(xué)本科畢業(yè)設(shè)計(jì)論文 智能避障小車試驗(yàn)報(bào)告與 總結(jié) 專業(yè)班級(jí):12自動(dòng)化-3 姓 名:李昆倫 學(xué) 號(hào):1216306058 隨著科學(xué)技術(shù)的發(fā)展,機(jī)器人的感覺傳感器種類越來越多,其中視覺傳感器成為自動(dòng)行走和駕駛的重要部件。視覺的典型應(yīng)用領(lǐng)域?yàn)樽灾魇街悄軐?dǎo)航系統(tǒng),對(duì)于視覺的各種技術(shù)而言圖像處理技術(shù)已相當(dāng)發(fā)達(dá),而基于圖像的理解技術(shù)還很落后,機(jī)器視覺需要通過大量的運(yùn)算也只能識(shí)別一些結(jié)構(gòu)化環(huán)境簡(jiǎn)單的目標(biāo)。視覺傳感器的核心器件是攝像管或CCD,目前的CCD已能做到自動(dòng)聚焦。但CCD傳感器的價(jià)格、體積和使用方式上并不占優(yōu)勢(shì),因此在不要求清晰圖像只需要粗略感覺的系統(tǒng)中考慮使用接近覺傳感器是一種實(shí)用有效的方法。 STC12C5A60S2/AD/PWM系列單片機(jī)是宏晶科技生產(chǎn)的單時(shí)鐘/機(jī)器周期(1T)的單片機(jī),是高速/低功耗/超強(qiáng)抗干擾的新一代8051單片機(jī),指令代碼完全兼容傳統(tǒng)8051,但速度快8-12倍。內(nèi)部集成MAX810專用復(fù)位電路,2路PWM,8路速10位A/D轉(zhuǎn)換(250K/S),針對(duì)電機(jī)控制,強(qiáng)干擾場(chǎng)合。我們采用的就是STC12C5A60S2這種單片機(jī)。 避障系統(tǒng)可以采用反射式光電開關(guān)或者超聲波傳感器對(duì)前方的障礙物進(jìn)行檢測(cè),前者結(jié)構(gòu)簡(jiǎn)單,應(yīng)用方便靈活,但不能獲知障礙物與小車間的具體距離;后者結(jié)構(gòu)復(fù)雜,但可以測(cè)得障礙物與小車間的直線距離。本系統(tǒng)采用反射式光電開關(guān)E3F-DS10C4來檢測(cè)障礙物。E3F-DS10C4是漫反射式光電開關(guān),NPN三線輸出方式,三線分別為電源線、輸出線、地線。它的靈敏度也可以調(diào)節(jié),檢測(cè)距離比較遠(yuǎn),可以達(dá)到20cm。 紅外發(fā)射管,發(fā)射50hz調(diào)制的38k信號(hào)。當(dāng)遇到障礙物時(shí),發(fā)生漫反射,紅外接收頭接收到這一信號(hào)時(shí),輸出端輸出50hz的信號(hào)。判斷這一信號(hào),即可判斷,遇到了障礙物。 避障傳感器基本原理,利用物體的反射性質(zhì)。在一定范圍內(nèi),如果沒有障礙物,發(fā)射出去紅外線,因?yàn)閭鞑ゾ嚯x越遠(yuǎn)而逐漸減弱,最后消失,或者反射回來的光很弱時(shí),輸出端呈低電平光電開關(guān)的檢測(cè)不受外界干擾。如果有障礙物,紅外線遇到障礙物,被反射到達(dá)傳感器接收頭,則輸出端呈高電平。傳感器檢測(cè)到這一信號(hào),就可以確認(rèn)正前方有障礙物,并送給單片機(jī),單片機(jī)進(jìn)行一系列的處理分析,協(xié)調(diào)小車兩輪工作。紅外避障基本原理大致就是如此。 利用紅外傳感器進(jìn)行“前進(jìn)-倒退-轉(zhuǎn)向”避障,在車的頭部安裝光電開關(guān)小車采用左右輪分別驅(qū)動(dòng)小車進(jìn)入障礙區(qū)后,在距離障礙物10cm到20cm的地方就可以檢測(cè)到前面有障礙物(改變光電開關(guān)的靈敏度可改變最遠(yuǎn)檢測(cè)距離),然后小車剎車停止,并調(diào)整角度,車頭右偏一個(gè)角度,其方法是小車在前進(jìn)制動(dòng)過程中,先制動(dòng)右輪,這樣左輪轉(zhuǎn)動(dòng)快,使小車右轉(zhuǎn),并制動(dòng)停止,隨后小車加速后退,然后制動(dòng),在制動(dòng)過程中,先制動(dòng)右輪,左邊快而使車頭左偏,小車再前進(jìn),檢測(cè)前方是否有障礙物。如此循環(huán),就可以繞開障礙物。前進(jìn)停止和后退停止之間的距離約為30cm,只要小車前進(jìn)時(shí)剎車行程小于傳感器檢測(cè)到障礙物的最大距離,就可以肯定小車車頭碰不到障礙物。調(diào)整適當(dāng)?shù)膭x車行程和傳感器的靈敏度,便可實(shí)現(xiàn)這個(gè)條件。單片機(jī)電路: 電機(jī)驅(qū)動(dòng)電路: 電源電路: 紅外傳感電路: 之后附上小車實(shí)物照片: 采用二輪驅(qū)動(dòng),后面一個(gè)萬向輪方便轉(zhuǎn)向,減少阻力。電源采用3.7v鋰電池供電。 至于程序輸入,如圖電源指示燈旁邊有個(gè)插口,可以連接數(shù)據(jù)線,安裝的驅(qū)動(dòng)是PL2303Vista_Installer,燒寫軟件我采用的是stc-isp-15xx-v6.67D,至于程序則是在同學(xué)們的幫助下參考網(wǎng)上的改編的。程序有如下: #include“STC12C5A60S2.h” #include void delay(unsigned int n){ unsigned char i, j,k;for(k=0;k<=n;k++){ _nop_();_nop_();i = 20;j = 10;do { while(--j);} while(--i);} } void beep(void){ unsigned char i;for(i=0;i<3;i++){ BUZZ=~BUZZ;delay(10);} BUZZ=1;} void gogogo(void){ IN1=1;IN2=0;IN3=1;IN4=0;} void backbackback(void){ IN1=0;IN2=1;IN3=0;IN4=1;} void stop(void){ IN1=0;IN2=0;IN3=0;IN4=0;} void turnleft(void){ IN1=0;IN2=1;IN3=1;IN4=0;} void turnright(void){ IN1=1;IN2=0;IN3=0;IN4=1;} void main(void){ while(1){ if(bleft==0&&bright==1){ turnright();delay(3);stop();delay(3);} if(bleft==1&&bright==0){ turnleft();delay(3);stop();delay(3);} if(bleft==0&&bright==0){ gogogo();delay(3);stop();delay(3);} if(bleft==1&&bright==1){ turnright();delay(3);stop();delay(3);} } } 在焊接過程中,也出線了很多錯(cuò)誤,再嚴(yán)重的一次是單片機(jī)底座引腳有一個(gè)沒有焊好,然后用萬用表連接了多次才發(fā)現(xiàn),然后用一根小鐵絲從下面穿上去再用錫焊牢固。特別要注意的是色環(huán)電阻的識(shí)別計(jì)算方法,在這就不詳細(xì)介紹了。最難的莫過于程序的調(diào)試和小車的機(jī)械方面布局幾輪驅(qū)動(dòng)一類的問題。總之,通過這次動(dòng)手制作小車,我從中也學(xué)到了很多平時(shí)不知道的東西。以后有機(jī)會(huì),會(huì)繼續(xù)加強(qiáng)這方面的動(dòng)手學(xué)習(xí)能力。 基于曲率速度的局部避障方法(草稿) 作者:Reid Simmons 翻譯:Luo Qijun 本文提出了一種新的室內(nèi)移動(dòng)機(jī)器人的局部避障方法,它將避障問題描述為速度空間的約束優(yōu)化問題。將速度和加速度的物理限制和障礙物分布的環(huán)境約束置于機(jī)器人的線速度和角速度上,機(jī)器人選擇滿足所有約束,并使得目標(biāo)函數(shù)最大化的速度指令,目標(biāo)函數(shù)折中考慮速度、安全性和目標(biāo)方向。這種方法的高效實(shí)時(shí)的應(yīng)用,已經(jīng)經(jīng)過廣泛測(cè)試,表明其在辦公室環(huán)境下可以可靠、平滑而快速的導(dǎo)航。這種避障方法可以作為更復(fù)雜導(dǎo)航行為的基礎(chǔ),從簡(jiǎn)單的漫游到基于地圖的導(dǎo)航都可以使用。 1,引言 局部避障算法針對(duì) 未知的 或 部分已知的環(huán)境。 (1)機(jī)器人應(yīng)該能夠安全的導(dǎo)航,即使面臨感知器的噪聲 和 航跡的錯(cuò)誤 (2)機(jī)器人應(yīng)該在試圖避障的同時(shí)趨向目標(biāo); (3)算法必須高效的運(yùn)算,以至于實(shí)時(shí)運(yùn)行于機(jī)器人主機(jī) 另外,有一些其他算法沒有考慮在內(nèi)的內(nèi)容: (1)機(jī)器人的動(dòng)態(tài)性應(yīng)該納入計(jì)算,使之能夠以高速運(yùn)動(dòng)于擁擠的環(huán)境中(2)算法應(yīng)該明確的盡量最大化機(jī)器人的前進(jìn)進(jìn)程(3)算法應(yīng)該同時(shí)控制機(jī)器人的方向和速度 我們的方法,CVM算法,針對(duì)上述的內(nèi)容。該算法的主要特點(diǎn)是它在機(jī)器人的速度空間操作,而不是Cartesian或者配置空間,它通過最大化目標(biāo)函數(shù)來選擇命令,用于綜合考慮車體安全性、速度和目標(biāo)導(dǎo)向性。這種方法認(rèn)為機(jī)器人能夠控制線速度和角速度,但是不能瞬間轉(zhuǎn)向。也就是說,它只能沿著圓弧走。滿足這種方式的機(jī)器人包括差動(dòng)機(jī)器人,差速驅(qū)動(dòng)機(jī)器人,和多種 非完整車輛。然而 我們的論述忽略了加速度的影響,實(shí)際上,對(duì)于以步行速度運(yùn)行的室內(nèi)機(jī)器人來說,這是一個(gè)好的近似。 曲率速度算法通過在速度空間添加約束,并在此空間中選擇滿足所有約束并且最大化目標(biāo)函數(shù)的點(diǎn)進(jìn)行工作的。約束條件來源于機(jī)器人速度和加速度的物理限制,和表示障礙物分布的傳感器數(shù)據(jù)。后者(對(duì)于每個(gè)可能的曲率),用于表示機(jī)器人在撞上障礙物之前能運(yùn)行多遠(yuǎn)。 為了達(dá)到實(shí)時(shí)性能,到障礙物的曲線距離用一個(gè)分段函數(shù)來近似描述。這種近似將速度空間劃分為多個(gè)離散的區(qū)間,每個(gè)區(qū)間考慮一個(gè)確定的距離。該算法在各個(gè)區(qū)間中找到一個(gè)點(diǎn),使目標(biāo)函數(shù)最大化。這個(gè)全面最大化的點(diǎn)用于操作機(jī)器人。幾個(gè)簡(jiǎn)單的擴(kuò)展使該基本算法對(duì)于傳感器噪聲更具魯棒性,并減小了機(jī)器人陷入困境的可能性。在我們室內(nèi)機(jī)器人上的測(cè)試證明:它能在有人辦公室環(huán)境內(nèi)快速、平滑和安全行駛。相關(guān)工作 一些著名的局部避障通過計(jì)算機(jī)機(jī)器人將要朝向的方向進(jìn)行的,但是沒有將車體的動(dòng)態(tài)特性計(jì)算在內(nèi)。例如:勢(shì)場(chǎng)趨近法使用排斥和吸引特性的向量和來計(jì)算期望的機(jī)器人朝向。速度控制 通過按勢(shì)向量大小比例選擇速度來確定。在該算法基礎(chǔ)上改進(jìn)得到的向量場(chǎng)直方圖方法,通過計(jì)算一個(gè)一維極性直方圖進(jìn)行的,處理該直方圖以檢測(cè)開放區(qū)域以便機(jī)器人行進(jìn)。在方向被選擇后,再根據(jù)到障礙物的距離按比例選擇機(jī)器人速度。雖然該方法可以產(chǎn)生平滑的軌跡并能同時(shí)處理窄、寬的開放處。就像勢(shì)場(chǎng)趨近法,它沒有把下列情況計(jì)算在內(nèi):當(dāng)機(jī)器人轉(zhuǎn)向時(shí)沿著圓弧移動(dòng),而不是沿著直線。在混亂復(fù)雜的環(huán)境中,它忽略了車輛的動(dòng)態(tài)特性,而這時(shí)很關(guān)鍵的。 那些引入車輛動(dòng)態(tài)特性和非完整約束計(jì)算的方法已經(jīng)在線下路徑規(guī)劃中作了研究[],對(duì)于快速的局部避障來說,這些方法通常計(jì)算代價(jià)太高。 然而,最近報(bào)告了一些局部避障方法,通過選擇一些駕駛命令而不是行駛方向來引入車輛的動(dòng)力學(xué)特性。駕駛角度場(chǎng)算法,跟我們的算法類似,使用到障礙物的曲率正切 來約束一個(gè)連續(xù)的空間(在那個(gè)情況下的駕駛角度一維空間)。曲率和連接弧的距離,在駕駛角度范圍內(nèi)用于阻止行駛。該算法計(jì)算幾個(gè)距離閾值的約束,并試圖行駛到最自由的空間。速度控制是一個(gè)在駕駛者模塊和局部避障模塊間的迭代“商議、談判”過程,與此相反,在我們的算法中,速度和轉(zhuǎn)向弧度通過仿真選擇,速度空間的點(diǎn)使得目標(biāo)函數(shù)最大化。針對(duì)室內(nèi)高速導(dǎo)航,有一個(gè)類似的基于速度空間操作的算法,就有人作了更早但是獨(dú)立的研究。該算法針對(duì)受車輛動(dòng)力學(xué)約束的弧線的離散集合,并選擇其中一個(gè)最接近目標(biāo)方向,保證機(jī)器人不會(huì)在幾秒行駛范圍內(nèi)不會(huì)撞上障礙物。初始方法采用兩步趨近法來選擇曲率和速度;后來,他們研究出了一步選擇曲率和速度的算法[6]。針對(duì)室外導(dǎo)航,也有一種類似的的方法[7]。考慮了所有的車體動(dòng)力學(xué),所以路徑不必是一個(gè)圓弧,為每條路徑計(jì)算一個(gè)可行度量,并選擇其中一個(gè)最好的結(jié)果。但是這些方法的問題在于:僅僅通過分析弧線的離散集合,好的路徑可能淹沒在碰撞中,并且不被考慮到。曲率速度法 我們描述局部避障問題為一個(gè)在機(jī)器人的速度空間內(nèi)的約束優(yōu)化問題。機(jī)器人的速度空間就是可控制速度的稽核。對(duì)于差速驅(qū)動(dòng)機(jī)器人來說,就像我們的機(jī)器人,速度空間包括線速度和角速度的正交空間。通過約束優(yōu)化,我們?cè)噲D使機(jī)器人選擇某個(gè)(tv, rv)對(duì),使得目標(biāo)函數(shù)最大化,同時(shí)在允許的速度情況下滿足所有的約束。 用這種公式描述局部避障問題有幾個(gè)優(yōu)點(diǎn):首先,通過在速度空間內(nèi)的計(jì)算,我們能夠同時(shí)控制機(jī)器人的速度和朝向,并得到一個(gè)直接產(chǎn)生命令用于控制機(jī)器人的解決方法。通過將此問題作為一個(gè)約束優(yōu)化問題,我們能夠很簡(jiǎn)單地合并來自于環(huán)境和機(jī)器人動(dòng)力學(xué)的約束條件,并能夠得到使速度和安全折中的描述(公式)(規(guī)則)。 首先,我們假設(shè)機(jī)器人總是沿著圓弧線行駛,該弧線曲率由c = rv/tv得到,正的曲率表示順時(shí)針的移動(dòng)。所以,速度空間中的每個(gè)點(diǎn),對(duì)應(yīng)于笛卡爾空間中的約束曲率的運(yùn)動(dòng)。然而,這實(shí)際上是一種近似,如果考慮加速度的影響因素的話,如果在絕大所屬室內(nèi)移動(dòng)機(jī)器人的相對(duì)較低速度和高加速度的情況下這些影響都被忽略。[6] 機(jī)器人的物理限制包括兩種類型的速度空間約束。一個(gè)是機(jī)器人有最大角速度和線速度:tv<=tv(max), tv>=-tv(max), rv<=rv(max), rv>=-rv(max).在我們的方案中,我們又加入了一個(gè)約束條件:tv〉=0,以此防止機(jī)器人的后退運(yùn)動(dòng)。角加速度和線加速度的限制,ra(max)和ta(max)構(gòu)成了另外一些約束。給定機(jī)器人當(dāng)前速度 rv(cur)和tv(cur),和時(shí)間間隔T(accel)(基于CVM算法周期來選擇),我們?cè)偌尤?個(gè)約束條件,這些條件給出了在下一時(shí)刻可達(dá)的速度: 考慮到安全原因,tv的明顯的其他約束沒有加入。我們?cè)噲D保證tv=0是速度空間中可以達(dá)到的部分。另外一個(gè)重要的約束源是由環(huán)境障礙物構(gòu)成的。我們可以按照如下方式將笛卡兒空間障礙物轉(zhuǎn)換為速度空間的約束:首先,轉(zhuǎn)化障礙物到配置空間,并且對(duì)所有曲率c,計(jì)算機(jī)器人在碰到障礙物obs可能行駛的距離dc(c,obs).然后定義每個(gè)障礙物在速度空間的距離函數(shù): 給定障礙物集合OBS, 累積距離函數(shù)定義為: 最后,由于傳感器探測(cè)距離的限制(為了避免無限值的計(jì)算),我們修剪了函數(shù)D,利用某個(gè)限制距離L(3m, 在我們的實(shí)現(xiàn)中) 通常,計(jì)算障礙距離函數(shù)dc(c,obs)將會(huì)非常復(fù)雜,由于任意形狀的障礙物。為了解決此,我們將障礙物近似為圓形。這是一個(gè)有根據(jù)的接近,在給定傳感器輸入-聲納和激光測(cè)距儀的情況下。由于我們的機(jī)器人也是圓形,笛卡空間到配置空間的轉(zhuǎn)化僅僅通過機(jī)器人的半徑增加障礙物的半徑。現(xiàn)在,計(jì)算dc是直接進(jìn)行的。由于在原始位置的機(jī)器人面向y軸正半軸,給定曲率c在(xj,yj)與障礙物相交,我們可以得到: 給定這些物理的和環(huán)境的速度空間的約束,通過優(yōu)化目標(biāo)函數(shù)來選擇機(jī)器人的命令。從第1節(jié)的要求中,可以清楚的發(fā)現(xiàn)目標(biāo)函數(shù)會(huì)偏好更高的速度,在碰到障礙物前可以行駛更遠(yuǎn)距離的曲率,并且試圖使機(jī)器人面向期望的目標(biāo)方向。我們利用一個(gè)簡(jiǎn)單的線性目標(biāo)函數(shù)來描述這些準(zhǔn)則,其中,每項(xiàng)都要在0和1間進(jìn)行歸一化: 速度項(xiàng)簡(jiǎn)單地表明了對(duì)更快速運(yùn)行的偏好,而其他的則一般。距離項(xiàng)表明沿著給定曲率rv/tv無碰撞運(yùn)行更遠(yuǎn)的距離。朝向項(xiàng)是與目標(biāo)朝向的偏差,它對(duì)期望的目標(biāo)朝向的速度轉(zhuǎn)動(dòng)時(shí)間Tc后將要達(dá)到的朝向之間的區(qū)別作了解釋。 值表示每一項(xiàng)在目標(biāo)函數(shù)中的相關(guān)權(quán)重。利用目標(biāo)函數(shù)機(jī)器人可以展示不同的行為,這依賴于權(quán)重和障礙物分布,從為了避障急轉(zhuǎn)彎的減速到除了為了躲避同一障礙物而進(jìn)行提前轉(zhuǎn)向外的全速行駛。第6節(jié)展示了關(guān)于選擇權(quán)重值對(duì)算法敏感性的試驗(yàn)結(jié)果。 (在機(jī)器人局部坐標(biāo)內(nèi))和機(jī)器人如果以rv 實(shí)時(shí)實(shí)現(xiàn) 在前述章節(jié)中描述的曲率速度法,滿足局部避障的所有準(zhǔn)則,除了他不是計(jì)算高效的外。計(jì)算Dlimit 是很困難的,即使在圓形障礙物的簡(jiǎn)化假設(shè)條件下。另外,給定Dlimit的一個(gè)通用描述,函數(shù)f尋優(yōu)也是耗時(shí)的,即使使用如模擬退伙的近似技術(shù)。在這一節(jié)里,我們描述了實(shí)現(xiàn)細(xì)節(jié)以解決計(jì)算的相關(guān)問題。 利用一個(gè)區(qū)間的有限集合的近似Dlimit可以達(dá)到實(shí)時(shí)性能,這種區(qū)間是等距劃分的。這種曲率區(qū)間集合,通過使用障礙物的切線曲率,將速度空間劃分為常量距離的區(qū)間,進(jìn)而劃分那些重疊區(qū)域,以使 與區(qū)間對(duì)應(yīng)的距離是所有重疊區(qū)域中的最小距離。最小和最大速度、加速度約束加入到這個(gè)空間,并且,對(duì)于每個(gè)曲率區(qū)間,求出在約束上限的最高點(diǎn)(因?yàn)槭鼓繕?biāo)函數(shù)最大化的點(diǎn)必在上限邊界處)。機(jī)器人在所有曲率區(qū)間中選擇使目標(biāo)函數(shù)最大化的命令。 我們通過速度距離函數(shù)dv來計(jì)算Dlimit。需要注意的是 對(duì)于一個(gè)給定的障礙物obs,dc(c, obs)在障礙物曲率切線區(qū)外是無限大的。所以,我們僅僅需要考慮Cmin和Cmax之間的那些曲率: 交點(diǎn)(用于計(jì)算dc)是: 注意:公式6沒有定義 障礙物圓覆蓋的區(qū)域 。因?yàn)椋趯?shí)際中,障礙物和機(jī)器人是不可能占據(jù)同一位置的,這僅僅會(huì)在傳感器噪聲或者確定障礙時(shí)的圓形近似的情況下產(chǎn)生。另外一種方式,我們通過定義半徑robs為 (這里e設(shè)置為1厘米)來處理這樣一個(gè)障礙物。那么我們就可以使用公式6來計(jì)算所有障礙物的最小最大曲率。 給定切線曲率,第一個(gè)近似(接下來將被精確計(jì)算)是將dv置為最大至最小曲率間的常量: 每個(gè)確定的距離將產(chǎn)生一個(gè)障礙物區(qū)間的集合。為了計(jì)算Dlimit的精確確定近似值,我們通過分裂重疊障礙物區(qū)間和用更大的聯(lián)合距離去除重疊片找到了障礙物區(qū)間的最小合并。針對(duì)此的一個(gè)有效算法使用了一種曲率區(qū)間數(shù)據(jù)結(jié)構(gòu)( 最小合并算法從曲率區(qū)間個(gè)新的曲率區(qū)間: 開始,對(duì)于每個(gè)障礙物,用一對(duì)切線曲率與其關(guān)聯(lián)距離算法組成一,根據(jù)該區(qū)間與已存在區(qū)間的關(guān)系,修改該區(qū)間 將切線曲率間的距離函數(shù)近似為常量,不是很合適的,因?yàn)閐v實(shí)際上是完全非線性的。在某些情況下,這種近似太過保守,特別是在兩個(gè)切線曲率的距離值是非常不同的。更重要的是,這種近似常常太過自由主義,實(shí)際最小值可能比每個(gè)切線曲率距離都要小。 為了修正這些問題,我們精煉dv的近似為一個(gè)分段常量。思想為:將區(qū)間 分裂為多個(gè)區(qū)間,對(duì)每個(gè)區(qū)間計(jì)算出一個(gè)常量距離值,然后使用上述描述的最小合并算法來近似全部的Dlimit函數(shù)。我們的方法是要選擇障礙物圓上離原點(diǎn)直線距離最近的一個(gè)點(diǎn),并從該點(diǎn)開始把障礙物劃分為四個(gè)象限。為最小和最大切線曲率的鄰近點(diǎn),定義曲率區(qū)間,每個(gè)區(qū)間的距離值設(shè)為兩個(gè)端點(diǎn)曲率的最小值。 為了使目標(biāo)函數(shù)最大化,我們注意到:每個(gè)曲率區(qū)間提供了速度空間的一對(duì)線性不等式。在上述章節(jié)中描述的速度和加速度約束也是一些線性不等式。因此,我們有了一個(gè)線性不等式稽核和一個(gè)線性目標(biāo)函數(shù)---一種通常容易求解的形式。然而,在我們的問題里,有一個(gè)附加問題的附加結(jié)構(gòu),它會(huì)使的計(jì)算更加簡(jiǎn)化:因?yàn)榍示€對(duì)間的距離值是常量,目標(biāo)函數(shù)對(duì)于tv是單調(diào)遞增的,對(duì)于每個(gè)曲率區(qū)間的函數(shù)優(yōu)化值,存在于約束線的邊界上。這導(dǎo)向了一個(gè)非常高效的算法:對(duì)于每個(gè)曲率區(qū)間,在每個(gè)關(guān)聯(lián)約束的上邊界的頂點(diǎn)計(jì)算目標(biāo)函數(shù),并在所有曲率區(qū)間中選擇全局最優(yōu)值(利用一個(gè)小的擴(kuò)張:我們也需要在朝向誤差dthata是零,時(shí),計(jì)算目標(biāo)函數(shù))擴(kuò)展 在前述兩節(jié)中描述的曲率速度法,有一些實(shí)際問題。首先,由于傳感器噪聲,障礙物可能不是很精確,他們可能在內(nèi)部顯現(xiàn)。因此,我們可能要讓機(jī)器人與障礙物保持接近,并使之減速,如果不能在他們旁邊行駛的話。第二,雖然目標(biāo)函數(shù)通常能夠很好的獲得趨向目標(biāo)方向并且躲避障礙物行為,有兩種情況不能很好的工作:當(dāng)所有的選擇都一樣糟糕時(shí),表示機(jī)器人被掛住,和當(dāng)機(jī)器人離目標(biāo)方向很遠(yuǎn)時(shí)。在這一節(jié)內(nèi)容里,我們描述基本曲率速度算法的簡(jiǎn)單的擴(kuò)充,以解決上述每個(gè)問題。一個(gè)簡(jiǎn)單的擴(kuò)充,幫助補(bǔ)償傳感器噪聲,它使用一個(gè)安全區(qū)來生長(zhǎng)障礙物。我們使用一個(gè)相對(duì)小的安全區(qū)(5cm),因?yàn)榘踩珔^(qū)的大小與機(jī)器人可通過開放區(qū)間寬窄成反比例的。安全區(qū)太大,機(jī)器人通過房間門和在擁擠的走廊里經(jīng)過人群會(huì)有困難。 另外一個(gè)擴(kuò)充,文獻(xiàn)3,6提出,幫助機(jī)器人保持遠(yuǎn)離障礙物(或者,至少,使它更小心,當(dāng)從障礙物邊行駛時(shí)),它添加了一個(gè)最大的可允許的線速度,該速度與到障礙物距離成比例。特別是,對(duì)于每個(gè)曲率區(qū)間,我們約束最大線速度tv<=d/Timp, 以致機(jī)器人能夠行使至少Timp秒,在碰到障礙物前。 對(duì)于一些曲率區(qū)間,距離d 比極點(diǎn) ,中的一個(gè)或兩個(gè)都大,表示機(jī)器人將擦邊障礙物經(jīng)過,如果它沿著此極點(diǎn)曲率行駛的話。(例如,d1, 我們通過首先計(jì)算遠(yuǎn)離障礙物S的曲率,它在距離d正切于曲率c,來確定這個(gè)約束: 然后,我們添加約束,線速度減低到由點(diǎn)()組成的直線下。 這就確保機(jī)器人將不會(huì)全速行駛,除非它保留與障礙物至少距離S經(jīng)過。一個(gè)類似的約束,使用公式9中的r+S,針對(duì)曲率區(qū)間的下界被加入。 有時(shí)候,使目標(biāo)函數(shù)最優(yōu)的值使其機(jī)器人行駛很慢,或者完全不動(dòng)。這常常發(fā)生,例如,當(dāng)機(jī)器人在三面被障礙物包圍而它的目標(biāo)朝向就在正前方,就在障礙物區(qū)域。為了處理這一情況,我們采用了原地轉(zhuǎn)身算法,機(jī)器人原定不動(dòng)并且作旋轉(zhuǎn)直到最好的角速度命令為零。這將允許機(jī)器人終于看到前方開放的區(qū)間并且向前移動(dòng),足夠使其移動(dòng)到距離陷阱外。 最后一個(gè)擴(kuò)充,目標(biāo)函數(shù)權(quán)重參數(shù)的選擇,是必要的。選擇的權(quán)重工作良好,當(dāng)機(jī)器人面向目標(biāo)方向很近時(shí)(在正負(fù)60度以內(nèi)),但是當(dāng)它面向相反方向時(shí)卻效果很差。在這種情況下,我們要強(qiáng)烈鼓勵(lì)機(jī)器人開始轉(zhuǎn)動(dòng),從而面向目標(biāo)方向。我們通過增加朝向項(xiàng)的權(quán)重來實(shí)現(xiàn),該權(quán)重正比于機(jī)器人離目標(biāo)方向的大小。 特別是,我們用 代替目標(biāo)函數(shù)中的。下一節(jié),討論各參數(shù)值對(duì)算法的靈敏性。試驗(yàn)結(jié)果 CVM算法已經(jīng)在在Xavier移動(dòng)機(jī)器人上實(shí)現(xiàn)和測(cè)試。Xavier是一個(gè)四輪同步驅(qū)動(dòng)底盤的機(jī)器人,由RWI制造,可以獨(dú)立控制其線速度和角速度。他使用一圈24個(gè)聲納傳感器(1-2Hz)和一個(gè)30度激光測(cè)距儀(5-10Hz)。聲納和激光數(shù)據(jù)組合起來并采用一個(gè)簡(jiǎn)單的20cm精度histogram grid 文獻(xiàn)[2]。 底盤得到8 Hz的航跡推算信息,cvm算法也以此速度運(yùn)行。但接受到一個(gè)新的數(shù)據(jù)報(bào)時(shí),每一個(gè)被占的格子單元被轉(zhuǎn)化為自身局部坐標(biāo)并處理產(chǎn)生曲率約束。一般有15-30個(gè)障礙物,產(chǎn)后10-15個(gè)不同的曲率區(qū)間(由于曲率區(qū)間重疊,區(qū)間數(shù)小于障礙物數(shù))。相應(yīng)的速度約束被添加進(jìn)去,最優(yōu)的(tv,rv)發(fā)給底盤計(jì)算機(jī)。算法(包括感知數(shù)據(jù)處理)運(yùn)行于在66MHz主頻的486計(jì)算機(jī)上,大概耗時(shí)12毫秒。 CVM依賴一些參數(shù),特別是目標(biāo)函數(shù)中的。為了確定這些參數(shù)對(duì)算法的靈敏度,我們?cè)诜抡姝h(huán)境下做一個(gè)一系列測(cè)試。環(huán)境被設(shè)置為測(cè)試算法的逃離局部最優(yōu)和避障趨向目標(biāo)的能力。每次開始機(jī)器人在一個(gè)點(diǎn)和給定方向,并向前直線運(yùn)行,當(dāng)機(jī)器人越過虛線時(shí)結(jié)束。 改變參數(shù)完成了一些列路徑。基于完成路徑的平均時(shí)間,我們總結(jié)出算法對(duì)于目標(biāo)朝向權(quán)重參數(shù) a3的相對(duì)值比較敏感,而對(duì)a1, a2的相對(duì)值不敏感。如果a3置為0,a3/(a1+a2)的值大于15%的話,算法進(jìn)展緩慢(機(jī)器人常陷入局部陷阱)。在此范圍內(nèi),每個(gè)路徑中的標(biāo)準(zhǔn)差比 其值和最優(yōu)設(shè)置的值的差 一般較大,但是在a1>a2時(shí)平均稍大。 改變a4執(zhí)行類似的路徑,額外的權(quán)值鼓勵(lì)機(jī)器人在遠(yuǎn)離前進(jìn)運(yùn)行。結(jié)果顯示CVM是相對(duì)不敏感的,對(duì)于a4>0但小于3(此時(shí),機(jī)器人又容易陷入局部)。最優(yōu)好的設(shè)置是a1=0.6, a2 = 0.3, a3 =0.1 a4=1.0(平均完成時(shí)間67.5s, 標(biāo)準(zhǔn)10.2s), 該設(shè)置用于圖8的顯示結(jié)果。 圖9為Xavier的不同運(yùn)行軌跡。為更好的強(qiáng)調(diào)差別,圖中,障礙物(2個(gè)盒子,一個(gè)圓的垃圾罐,一個(gè)消防門)用機(jī)器人半徑進(jìn)行了生長(zhǎng),而機(jī)器人為一個(gè)點(diǎn)。在每種情況下,機(jī)器人從圖上方開始,面向底部,且要求其轉(zhuǎn)90度面向左側(cè)。每種情況下,機(jī)器人必須環(huán)繞圍墻并導(dǎo)航繞過三個(gè)離散的障礙物。我們?cè)?0,45,60cm/s的速度行駛對(duì)CVM算法與60cm/s運(yùn)行的勢(shì)場(chǎng)法進(jìn)行了對(duì)比。結(jié)果顯示,CVM較勢(shì)場(chǎng)法產(chǎn)生更為顯著的平滑軌跡。另外,在更高速度下,機(jī)器人保持離障礙物更遠(yuǎn),而且路徑較為平滑。這主要?dú)w結(jié)與 “靠近障礙物”約束在高速情況更加重要,這使機(jī)器人較早對(duì)目標(biāo)做出響應(yīng)。 局部避障算法供幾個(gè)更高級(jí)別的行為使用。“漫游”通過設(shè)置機(jī)器人局部目標(biāo)朝向?yàn)?,這偏向是機(jī)器人持續(xù)沿著當(dāng)前方向行駛。“朝向方向”行為通過設(shè)置為當(dāng)前機(jī)器人朝向和目標(biāo)方向的差值來實(shí)現(xiàn)。最后,為機(jī)器人朝向到局部目標(biāo)點(diǎn)的角“朝向目標(biāo)”行為通過變換全局目標(biāo)位置到機(jī)器人坐標(biāo)框架,并且設(shè)置度 來實(shí)現(xiàn)。對(duì)于最后那個(gè)行為,我們需要一個(gè)附加的擴(kuò)充:如果目標(biāo)點(diǎn)在曲率區(qū)間內(nèi),其相關(guān)距離較到目標(biāo)點(diǎn)的直線距離小,那么目標(biāo)朝向項(xiàng)的權(quán)重被設(shè)置為很高以強(qiáng)烈鼓勵(lì)機(jī)器人瞄向目標(biāo)行駛。 這些行為,逐個(gè)構(gòu)成基于地圖導(dǎo)航規(guī)劃的基礎(chǔ)[文獻(xiàn)10,11]。最后系統(tǒng)展示出在人類辦公室、走廊環(huán)境下的可靠、快速導(dǎo)航。討論 我們描述了針對(duì)局部避障的曲率速度算法,它將此問題視為機(jī)器人速度空間的約束優(yōu)化問題。這種描述的優(yōu)點(diǎn)包括 同時(shí)控制速度和機(jī)器人朝向的能力,合成環(huán)境和機(jī)器人動(dòng)力學(xué)、以及處理速度、安全和目標(biāo)朝向的平衡能力約束的簡(jiǎn)化。 CVM實(shí)現(xiàn)了實(shí)時(shí)性能,通過近似化機(jī)器人在碰到障礙物前能夠行駛多遠(yuǎn)的弧線距離來實(shí)現(xiàn)。近似處理是一個(gè)分段常量函數(shù),由到障礙物切線曲率來定義。附加的速度約束被加入,在機(jī)器人物理限制和保持遠(yuǎn)離障礙物的期望的基礎(chǔ)上,或者至少慢速行駛當(dāng)接近障礙物時(shí)。 該方法已經(jīng)被實(shí)現(xiàn),并且在Xavier上進(jìn)行了測(cè)試,Xavier是一個(gè)差速驅(qū)動(dòng)機(jī)器人(它可以使用差分驅(qū)動(dòng)車,并且是沿圓弧行駛的非完整約束車輛。)實(shí)現(xiàn)是高校的,并能使機(jī)器人在人員辦公室環(huán)境下達(dá)到60CM/s的速度行駛。速度限制的原因,在于聲納傳感器的速率(激光視場(chǎng)范圍限制阻礙它成為障礙物檢測(cè)的主要傳感器)。通過提高傳感器的檢測(cè)周期,我們希望達(dá)到一米每秒(travel)。 基于該算法的下一步工作包括:找到更好的距離函數(shù)的近似方法,嘗試更精煉的目標(biāo)函數(shù)。我們也要致力于擴(kuò)展以曲率為基礎(chǔ)的速度空間算法來進(jìn)行多步導(dǎo)航規(guī)劃問題。 本文展示了通過考慮測(cè)量動(dòng)力學(xué),和使平衡速度、安全和目標(biāo)趨向的目標(biāo)函數(shù)最大化,我們可以創(chuàng)造一種高效的、實(shí)時(shí)的局部避障算法,用于在布滿障礙物的環(huán)境中產(chǎn)生安全、平滑、快速的軌跡。 WiFi小車技術(shù)報(bào)告 學(xué)校:北華航天工業(yè)學(xué)院 隊(duì)伍名稱:DIB團(tuán)隊(duì) 參賽隊(duì)員:周廣成 夏宏偉 吳忠得 任志偉 李磊 尹強(qiáng) 任迎春 張嘉慧 中文摘要 Wifi智能小車由電機(jī)、小車車身、STC12C5A60S2單片機(jī)、驅(qū)動(dòng)板、無線路由器、驅(qū)動(dòng)電機(jī)、電源、攝像頭等主要部件以及燈光、電平轉(zhuǎn)換等輔助模塊構(gòu)成。Wifi智能小車?yán)霉P記本連接無線路由器的終極智能設(shè)備連接到路由器,通過應(yīng)用軟件顯示顯示器上攝像頭上采集到的視頻信號(hào),再通過這些智能的終端設(shè)備發(fā)送控制指令到無線路由器,通過無線路由器將指令傳送給單片機(jī)進(jìn)行處理。然后通過單片機(jī)控制驅(qū)動(dòng)電機(jī)驅(qū)動(dòng)電機(jī)轉(zhuǎn)動(dòng)、舵機(jī)轉(zhuǎn)動(dòng),從而實(shí)現(xiàn)控制小車的運(yùn)動(dòng)及視頻采集。本文詳細(xì)介紹了wifi 智能小車的原理,組件及其功能。該小車以STC12C5A60S2單片機(jī)為控制核心主要利用WiFi實(shí)現(xiàn)對(duì)車模的速度方向以及攝像頭角度的調(diào)整。經(jīng)過大量測(cè)試,實(shí)驗(yàn)結(jié)果表明,該方案運(yùn)行穩(wěn)定。 關(guān)鍵詞:WiFi、路由器、視頻傳輸、STC12C5A60S2單片機(jī)、英文摘要 Wi-fi smart car driven by a motor, car body, STC12C5A60S2 microcontroller, plate, wireless router, drive motor, power supply, cameras, main components and lighting, level conversion and other auxiliary modules.Wi-fi smart car use notebook ultimate intelligent device connected to the wireless router to connect to the router, by applying the software display monitor camera, video signals were collected by these intelligent terminal equipment send control instructions to a wireless router, transmitting instructions over a wireless router to the single chip microcomputer for processing.Then by single chip microcomputer control drive motor drive motor rotate, steering gear, thus controlling the movement of the car and video collection.This paper introduced the principle of wi-fi smart car components and their functions.The car to STC12C5A60S2 microcontroller as the control core is mainly using WiFi speed direction of models and camera Angle adjustment.Through a large number of tests, the experimental results show that the proposed scheme runs stably.Keywords: WiFi, routers, video transmission, STC12C5A60S2 MCU,第一章 論述 現(xiàn)在是一個(gè)智能化的時(shí)代,各種智能化設(shè)備正在逐步替代人為的操作。隨著汽車工業(yè)的迅速發(fā)展,關(guān)于智能汽車的研究也越來越受人關(guān)注。設(shè)計(jì)的智能小車能夠?qū)崿F(xiàn)自動(dòng)尋跡、避障功能、可控制行駛速度、電腦手機(jī)wifi連接控制行駛及其他的控制方式。本系統(tǒng)能實(shí)現(xiàn)對(duì)小車的運(yùn)動(dòng)狀態(tài)進(jìn)行實(shí)時(shí)控制。系統(tǒng)控制靈活、可靠、精度高,可滿足對(duì)系統(tǒng)的各項(xiàng)要求。通過對(duì)本小車的研究,我們可以初步構(gòu)建智能汽車的模型與理論基礎(chǔ)。所謂的wifi智能小車就是可以通過WIFI網(wǎng)絡(luò)控制的視頻傳輸可移動(dòng)甚至可以安裝其他機(jī)械手各類傳感器實(shí)現(xiàn)數(shù)據(jù)互動(dòng)的小車,對(duì)于那些不安全的以及人無法進(jìn)入的場(chǎng)所進(jìn)行無線監(jiān)測(cè),wifi小車監(jiān)控是一個(gè)很好的解決方案,能夠很好的進(jìn)行監(jiān)控控制。現(xiàn)在無線wifi功能的設(shè)備隨處可見,本設(shè)計(jì)利用現(xiàn)有的網(wǎng)絡(luò)資源搭建一臺(tái)wifi視頻監(jiān)控小車,即利用帶有wifi的設(shè)備進(jìn)行控制小車,實(shí)現(xiàn)無線監(jiān)控。 第二章 方案的設(shè)計(jì) 2.1 總體設(shè)計(jì)方案 Wifi智能小車需要由wifi模板、電機(jī)驅(qū)動(dòng)模板、核心控制模板、攝像頭模板等構(gòu)成。組件: 驅(qū)動(dòng)板:所用驅(qū)動(dòng)板型號(hào)為L(zhǎng)293;電機(jī)驅(qū)動(dòng)電壓5-36伏特;邏輯控制電壓3-7伏特;負(fù)載電流:1A;獨(dú)立驅(qū)動(dòng)直流電機(jī):兩只;可驅(qū)動(dòng)步進(jìn)電機(jī)(4線制):1只;電路板尺寸:51.8MM*54.3MM。 2.1.1 整體系統(tǒng) 如圖2-1所示。 圖2-1 系統(tǒng)結(jié)構(gòu)框 項(xiàng)目系統(tǒng)包括路由器、單片機(jī)最小系統(tǒng)、電機(jī)驅(qū)動(dòng)電路、電機(jī)、電平轉(zhuǎn)換電路、電源電路、舵機(jī)、攝像頭等。 路由器用于接受電腦等終端設(shè)備發(fā)送的指令和將攝像頭采集到的視頻信號(hào)傳送到電腦等終端設(shè)備;單片機(jī)最小系統(tǒng)是整個(gè)小車的控制核心,控制著各個(gè)模板統(tǒng)一協(xié)調(diào)工作;電機(jī)驅(qū)動(dòng)電路用于驅(qū)動(dòng)電機(jī)轉(zhuǎn)動(dòng),可以使電機(jī)產(chǎn)生正傳、反轉(zhuǎn),從而使車體產(chǎn)生前進(jìn)、后退、轉(zhuǎn)彎等動(dòng)作;電機(jī)的作用就是使整個(gè)車體轉(zhuǎn)動(dòng);電源電路作用是為整個(gè)小車系統(tǒng)供電;舵機(jī)制作成云臺(tái),然后裝上攝像頭,使攝像頭實(shí)現(xiàn)上下、水平方向180度旋轉(zhuǎn)調(diào)節(jié);攝像頭用于采集視頻信號(hào)。 2.1.2 整機(jī)工作原理 由電腦終端,通過wifi無線網(wǎng)絡(luò)連接到路由器,再通過電腦應(yīng)用軟件,向路由器發(fā)送控制命令及數(shù)據(jù)。路由器接受到數(shù)據(jù)后通過內(nèi)部的串口發(fā)送軟件,將接收到的命令和數(shù)據(jù),通過路由器串口發(fā)送到STC12C5A60S2單片機(jī)的串口端,單片機(jī)接受到的這些命令后執(zhí)行相應(yīng)的指令,如:驅(qū)動(dòng)小車運(yùn)動(dòng)、舵機(jī)運(yùn)動(dòng)開關(guān)等。 視頻信號(hào),通過攝像頭采集之后通過路由器發(fā)送到電腦終端,并在其應(yīng)用軟件顯示攝像頭采集到的視頻信號(hào)。 第三章 硬件電路設(shè)計(jì) 3.1 電路板設(shè)計(jì) 電路板如圖3-1 圖3-1 電路板 電路板介紹 L293電機(jī)驅(qū)動(dòng)板可以驅(qū)動(dòng)兩個(gè)直流電機(jī),本設(shè)計(jì)中,每一路 L29輸出引出了兩個(gè)并聯(lián)的端口,以便控制四輪的小車,左右兩邊的電機(jī)并聯(lián)運(yùn)行的。本驅(qū)動(dòng)板,也可以控制 D42 步進(jìn)電機(jī),四線制的步進(jìn)電機(jī).電路板接線圖如圖3-2所示: 圖3-2 信號(hào)控制引腳 : 看上圖,控制每一路電機(jī),有三個(gè)信號(hào),分別是 ENA,IN1,IN2。為了調(diào)試方便,本電路板直接設(shè)計(jì)了調(diào)試的電平,橫向第一排為 VCC,橫向的第三排為 GND 信號(hào),中間行的信號(hào),所以可以直接采用跳線帽,在板上調(diào)試。控制電機(jī)的運(yùn)行.電機(jī)電壓輸入 :這里接電機(jī)驅(qū)動(dòng)電壓。 5V 電壓輸入 :這里接芯片的工作電壓,也是信號(hào)的參考電壓,6 腳的開關(guān)對(duì)這個(gè)輸入引腳作用。 電壓選擇 :當(dāng)在電機(jī)電壓輸入時(shí),即采用獨(dú)立電源為電機(jī)供電時(shí),這里采用短路帽跳到 7.2V。如果采用電壓與邏輯電壓一致時(shí),可以把.5V電源排針 :本設(shè)計(jì)為了向其它模塊供電,這里設(shè)計(jì)了并列的排針,如果兩5V電壓輸入端輸入5V電源,并把開關(guān)打開,那么這里就可以得到5V的電壓。同時(shí)也可以在這里直接輸入 5V 電壓,那么電路板也會(huì)工作,那么開關(guān)就不起作用了。 L293 的驅(qū)動(dòng)方式比較簡(jiǎn)單,詳細(xì)可見 L293 的說明書,這樣簡(jiǎn)略說明,L293有兩個(gè)電壓輸入,一個(gè)給電機(jī)的電壓,一個(gè)是給芯片工作與控制邏輯的參考電壓。L293 相當(dāng)于有四個(gè)驅(qū)動(dòng)門,每個(gè) IN1,對(duì)應(yīng)該一個(gè) OUT1,當(dāng) IN1 為高電平是,OUT1 輸出高電平,電壓為 VSS,也就是給這個(gè)芯片電機(jī)的供電電壓(注意這里不是邏輯電壓)。見邏輯圖與 L293 的內(nèi)部原理圖。 邏輯圖 L293 內(nèi)部原理圖 本設(shè)計(jì)每個(gè)兩個(gè)驅(qū)動(dòng)門做成一路控制電機(jī)的信號(hào),這樣可以使電機(jī)在四個(gè)象限運(yùn)行,即正轉(zhuǎn),反轉(zhuǎn),停車,自由滑行。ENA 與 ENB 的使能的控制,如果采用PWM對(duì)電機(jī)進(jìn)行調(diào)速,可以在ENA與ENB中分別接入PWM信號(hào),IN1與IN2,和 IN3 與 IN4,分別可以控制電機(jī)的正反轉(zhuǎn)與不轉(zhuǎn) 如果利用本電路板去控制步進(jìn)電機(jī),就把步進(jìn)的線接到 OUT1,OUT2,OUT3,OUT4。信號(hào)引腳看下圖。 3.2電源 電源采用電壓為3.7V容量為4800mAh/節(jié) 鋰離子電池(兩節(jié))。如圖所示: 3.3單片機(jī)芯片 單片機(jī)芯片采用STC12C5A60S2 晶振頻率為22.1184M,同樣晶振情況下,速度是普通8051單片機(jī)的8-12倍,有8路10位AD多了兩個(gè)定時(shí)器(共有四個(gè)),帶PWM功能有SPI接口。 3.4液晶顯示屏 液晶顯示屏選用1602液晶顯示屏。能夠同時(shí)顯示16*02即32個(gè)字符。是專門用來顯示字母、數(shù)字、符號(hào)等的點(diǎn)陣型液晶模塊。通電正常后1602液晶顯示屏?xí)c(diǎn)亮并顯示字符,同時(shí)蜂鳴器會(huì)發(fā)出滴滴聲,表示初始化成功。注意,程序中定義了1602液晶模塊初始化程序,必須連接1602液晶才能初始化成功! 3.5 TP-LINK WR703N無線路由器 路由器如圖3-1: 圖3-1 TP-LINK WR703N無線路由器 無線WIFI路由器采用TP 703迷你型路由器,可通過USB連接(接線定義:紅-VCC 黑-GND 綠-RXD 白-TXD)RXD 與 TXD 連接至單片機(jī)的10.11腳.在路由器軟件中可通過設(shè)置路由地址控制,刷好的路由器中可以更改IP地址.3.6 攝像頭 本小車攝像頭從網(wǎng)上購買的高清天敏攝像頭 第四章 設(shè)計(jì)功能的優(yōu)點(diǎn)與缺點(diǎn) 4.1合理性 能夠在地面桌面等條件下前進(jìn)后退轉(zhuǎn)彎以及速度的調(diào)節(jié)。通過視頻傳輸影響可以做到人工避障。 能夠利用路由器進(jìn)行WiFi連接。能夠?qū)崿F(xiàn)電腦操控。不僅包括智能車的運(yùn)動(dòng)控制,還包括對(duì)攝像頭的拍攝角度的調(diào)整。 能夠進(jìn)行影像傳輸。攝像頭拍攝實(shí)時(shí)影像,通過WiFi傳輸,電腦端手機(jī)端均可接收。 4.2創(chuàng)新點(diǎn) 目前國內(nèi)wifi技術(shù)只是運(yùn)用在手機(jī)、電腦等設(shè)備,而本設(shè)計(jì)將wifi無線通信技術(shù)運(yùn)用在對(duì)機(jī)械的控制方面,將傳統(tǒng)的有線控制轉(zhuǎn)變?yōu)闊o線控制,避免了繁瑣的布線及后期的維修等,從而更好地服務(wù)了社會(huì)。另外,就目前來說,基于紅外信號(hào)的一些控制裝置比比皆是,但是紅外信號(hào)的弱點(diǎn)就是傳輸范圍小,當(dāng)有障礙物是其范圍更小,而wifi信號(hào)的傳輸范圍遠(yuǎn)遠(yuǎn)大于紅外信號(hào),所以基于wifi信號(hào)控制的電子產(chǎn)品具有很好的發(fā)展前景。相比于藍(lán)牙技術(shù)控制裝置,wifi技術(shù)控制裝置有著更好的靈活性,能夠?qū)崿F(xiàn)多點(diǎn)通信。此外,它還具有更好的穿透性以及抗干擾性。 4.3缺點(diǎn) 盡管我們作了很大的努力,但是由于時(shí)間緊迫以及缺乏經(jīng)驗(yàn)等原因本系統(tǒng) 仍然存在著一些問題。主要有以下缺點(diǎn);①由于只有一個(gè)攝像頭只能看到前方。想要看到后方視野需要轉(zhuǎn)彎。同時(shí)也存在視角太小可能導(dǎo)致車身碰撞障礙物。②因本W(wǎng)iFi小車采用4WD底盤驅(qū)動(dòng),在操作左旋右旋或左右轉(zhuǎn)向的時(shí)候,有阻滯現(xiàn)象,特建議在光滑的地面或桌面運(yùn)行,可提高驅(qū)動(dòng)電機(jī)電壓至九伏特左右測(cè)試。 第五章 設(shè)計(jì)總結(jié) 現(xiàn)在越來越多的家用電器及電子產(chǎn)品開始支持wifi功能。wifi的普及以及相關(guān)軟件的發(fā)展將會(huì)使家用電器完成功能上的飛躍。通過網(wǎng)絡(luò)將各種家電連接,可實(shí)現(xiàn)功能上的重構(gòu)和資源的再配置。隨著網(wǎng)絡(luò)的普及和推廣,將家庭中的各種帶有網(wǎng)絡(luò)功能的家用電器通過無線技術(shù)連接成局域網(wǎng)絡(luò),并與外部Internet相連,構(gòu)成智能化、多功能的現(xiàn)代家居智能系統(tǒng)將會(huì)成為新的流行趨勢(shì)。 第六章 附錄 6.1 Wifi小車操作步驟: 1:首先給小車上電,通電正常后1602液晶顯示屏?xí)c(diǎn)亮并顯示字符,同時(shí)蜂鳴器會(huì)發(fā)出滴滴聲,表示初始化成功。(1602液晶模塊是必須加上并正常工作的沒有它整板是不能正常初始化的!)2:PC端軟件運(yùn)行需要安裝.NETFRAMEWORK插件方可正常運(yùn)行軟件。 3: 小車的通信是建立在WIFI路由基礎(chǔ)之上,所以需要您的電腦具備無線網(wǎng)絡(luò),如是臺(tái)式機(jī)需要另購無線網(wǎng)卡 4: 打開網(wǎng)絡(luò)連接 找到無線網(wǎng)絡(luò) IP設(shè)置為自動(dòng)獲取,并同時(shí)把本地連接停用!5:路由器上面貼有IP地址 一般為'192.168.1.20' 6: 在電腦中運(yùn)行命令 ping 192.168.1.20-t 如顯示 time out 表示未連通路由 不可訪問 如顯示 time =9MS(參考參數(shù))表示電腦與路由已接通,可正常訪問 7:打開小車軟件中的‘WifRobot.exe ’即可啟動(dòng)控制軟件,“設(shè)置”選項(xiàng)參數(shù)一般不用調(diào)整,除了IP地址改動(dòng)之外,根椐買家的路由決定!8:?jiǎn)?dòng)正常后點(diǎn)擊 ‘F1’或鍵盤相應(yīng)按鍵,會(huì)聽到‘滴滴’聲,到時(shí)表示小車已成功連接至WIFI路由器。 9:小車有速度選擇,默認(rèn)為‘0’所以每次啟動(dòng)需要點(diǎn)擊一下相應(yīng)的速度,小車方可運(yùn)行,目前的小車可支持的功能有“速度控制,蜂鳴器,攝像頭監(jiān)控,截圖” 其它功能可以在基礎(chǔ)之上添加。 10:如小車運(yùn)行速度慢 可給驅(qū)動(dòng)板單獨(dú)加電,如運(yùn)行后視頻卡住,可給路由器單獨(dú)供電 6.2 本小組制作的wifi小車實(shí)物 .6.3 程序代碼第二篇:基于Arduino單片機(jī)避障小車機(jī)器人畢業(yè)論文
第三篇:智能避障小車試驗(yàn)報(bào)告與總結(jié)
第四篇:CVM避障算法 翻譯
第五篇:WiFi小車技術(shù)報(bào)告