freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

小型移動(dòng)機(jī)器人遠(yuǎn)程控制系統(tǒng)設(shè)計(jì)畢業(yè)設(shè)計(jì)-資料下載頁

2024-08-05 13:52本頁面
  

【正文】 與硬件交互的軟件模塊,其主要功能有:主機(jī)控制器硬件初始化;為USBD層提供相應(yīng)的接口函數(shù);提供根HUB(ROOT HUB)設(shè)備配置、控制功能;完成4種類型的數(shù)據(jù)傳輸?shù)取#?) USB驅(qū)動(dòng)(USBD):是整個(gè)USB主機(jī)驅(qū)動(dòng)的核心,其主要實(shí)現(xiàn)的功能有:USB總線管理、USB總線設(shè)備、USB總線帶寬管理、USB的4種類型數(shù)據(jù)傳輸、USB HUB驅(qū)動(dòng)、為USB設(shè)備類驅(qū)動(dòng)提供相關(guān)接口、提供應(yīng)用程序訪問的USB系統(tǒng)的文件接口等。(3) USB設(shè)備類驅(qū)動(dòng):是最終與應(yīng)用程序交互的軟件模塊,其主要實(shí)現(xiàn)的功能有:訪問特定的USB設(shè)備、為應(yīng)用程序提供訪問接口等。應(yīng)用程序首先通過文件系統(tǒng)(POSIX)接口來訪問相應(yīng)的USB設(shè)備類驅(qū)動(dòng)程序和USBD;USB設(shè)備類驅(qū)動(dòng)程序則通過USBD提供的相關(guān)接口將數(shù)據(jù)請求包傳遞給USBD;USBD通過HCD提供的接口,進(jìn)一步將數(shù)據(jù)包傳遞給HCD;HCD最終將數(shù)據(jù)發(fā)送到USB總線上。Linux定義了通用的數(shù)據(jù)結(jié)構(gòu)URB用來在USB設(shè)備類驅(qū)動(dòng)和USBD,USBD和HCD間進(jìn)行數(shù)據(jù)傳輸。統(tǒng)一的URB(Universal Request Block)結(jié)構(gòu)為usb主機(jī)驅(qū)動(dòng)程序的開發(fā)帶來了很大方便。本系統(tǒng)使用了兩個(gè)USB設(shè)備,即USB無線網(wǎng)卡和USB攝像頭。在實(shí)現(xiàn)其驅(qū)動(dòng)的過程中,筆者充分利用了開源社區(qū)的資源,體現(xiàn)開源Linux的優(yōu)勢。 USB無線網(wǎng)卡驅(qū)動(dòng)程序移植在Linux下驅(qū)動(dòng)USB無線網(wǎng)卡,除了按常規(guī)的做法進(jìn)行代碼開發(fā)外(工作量非常大),還可以使用以下兩種途徑:1. ndiswrapper[44]ndiswrapper通過在Linux平臺上虛擬windows的api,然后用windows下的驅(qū)動(dòng)程序來驅(qū)動(dòng)網(wǎng)卡。 2. linuxwlanng[45]linuxwlanng是專門為解決嵌入式Linux系統(tǒng)下無線網(wǎng)卡驅(qū)動(dòng)的問題而成立的一個(gè)開源項(xiàng)目。目前,該項(xiàng)目對基于Intersil Prism Prism3 芯片的PCMCIA、PCI和 USB無線網(wǎng)卡的支持比較好。本系統(tǒng)采用的是第二種方法,選用的USB無線網(wǎng)卡是NETGEAR公司提供的基于Prism3芯片的MA111。具體的步驟如下:(1) 執(zhí)行make config,選擇for usb,指定Linux的源代碼所在路徑(在編譯過程中會(huì)用到內(nèi)核的一些文件),指定交叉編譯器路徑; (2) 執(zhí)行make進(jìn)行編譯。在編譯的過程中,會(huì)有錯(cuò)誤出現(xiàn),部分錯(cuò)誤和使用的編譯器有關(guān),也有些錯(cuò)誤是代碼編寫者的筆誤造成,根據(jù)編譯器的提示,進(jìn)行簡單的修改可以將錯(cuò)誤消除;(3) 編譯通過后還需將驅(qū)動(dòng)加載到內(nèi)核中,并進(jìn)行一些簡單的配置,才能讓無線網(wǎng)卡真正在Linux系統(tǒng)下運(yùn)行起來。1) 。2) 在主控制板的控制臺中執(zhí)行“insmod /application/”和“insmod /application/”來動(dòng)態(tài)加載驅(qū)動(dòng)程序模塊。3) 執(zhí)行“wlanctlng wlan0 lnxreq_ifstate ifstate=enable”。4)執(zhí)行“wlanctlng wlan0 lnxreq_autojoin ssid=sensorrobot authtype=opensystem” 。其中“ssid=sensorrobot”是無線路由器的ID,“authtype=opensystem”表示沒有安全密碼設(shè)置。5) 執(zhí)行“ifconfig wlan0 ”。設(shè)置無線網(wǎng)卡的IP地址。至此,無線網(wǎng)卡就可以工作了。本系統(tǒng)將無線網(wǎng)卡的這些配置操作添加到/usr/etc/(Linux系統(tǒng)的啟動(dòng)腳本)中,這樣就可以實(shí)現(xiàn)開機(jī)自動(dòng)加載驅(qū)動(dòng)。圖35是系統(tǒng)啟動(dòng)后,無線網(wǎng)卡開始工作的畫面。圖35 無線網(wǎng)卡啟動(dòng)信息 USB攝像頭驅(qū)動(dòng)程序移植USB攝像頭以其良好的性能和低廉的價(jià)格得到廣泛應(yīng)用。同時(shí)因其靈活、方便的特性,易于被集成到嵌入式系統(tǒng)中。攝像頭屬于視頻類設(shè)備。在目前的Linux核心中,視頻部分的標(biāo)準(zhǔn)是Video for Linux(簡稱V4L)。這個(gè)標(biāo)準(zhǔn)定義了一套接口,內(nèi)核、驅(qū)動(dòng)、應(yīng)用程序以這個(gè)接口為標(biāo)準(zhǔn)進(jìn)行交流。目前的V4L涵蓋了視、音頻流捕捉及處理等內(nèi)容,USB攝像頭也屬于它支持的范疇。Linux本身集成了基于ov511芯片的攝像頭驅(qū)動(dòng)。在開源社區(qū)中,有一個(gè)專門針對在Linux系統(tǒng)下USB攝像頭驅(qū)動(dòng)的項(xiàng)目 spca5xx USB Camera[46],該項(xiàng)目目前已經(jīng)支持很多芯片,包括在市場上應(yīng)用最廣泛的采用中星微公司生產(chǎn)的zc301芯片的攝像頭。這些驅(qū)動(dòng)有專門針對嵌入式系統(tǒng)進(jìn)行優(yōu)化的版本,另外,還提供了與驅(qū)動(dòng)程序相配合的視頻流服務(wù)/播放器。本系統(tǒng)使用的即是基于中星微Zc301P芯片的普通USB攝像頭。具體的移植過程如下:1) 打補(bǔ)丁。,執(zhí)行“patch p1 ”。此時(shí)會(huì)有錯(cuò)誤出現(xiàn)。這些被拒絕的修改會(huì)自動(dòng)記載到相應(yīng)的“.rej”文件中。,進(jìn)行相應(yīng)的修改即可。2) 重新配置和編譯內(nèi)核。進(jìn)入內(nèi)核源代碼樹的根目錄,執(zhí)行“make menuconfig”,首先*選擇Multimedia device下的Video for linux,然后在usb support目錄下*選擇support for usb,M選擇SPCA5XX這一項(xiàng),保存退出;再執(zhí)行“make dep;make zImage;make modules” ,就會(huì)在/driver/usb/,。3) ,。此時(shí),在主控制板的USB HOST2口插入攝像頭,在主控制板的控制臺執(zhí)行“insmod /application/”,即可以看到攝像頭被成功驅(qū)動(dòng)的信息,如圖36所示。圖36 攝像頭驅(qū)動(dòng)加載信息 本章小結(jié)本章著重介紹了在構(gòu)建機(jī)器人控制系統(tǒng)系統(tǒng)平臺的過程中,在軟件方面的幾點(diǎn)工作,包括引導(dǎo)裝載程序uboot的移植、Linux內(nèi)核的移植、USB無線網(wǎng)卡驅(qū)動(dòng)的移植和USB攝像頭驅(qū)動(dòng)的移植。文中詳細(xì)說明了在移植過程中筆者遇到的問題及相應(yīng)的解決方法。70第4章 機(jī)器人運(yùn)動(dòng)控制和傳感信息采集機(jī)器人運(yùn)動(dòng)控制與傳感信息采集主要完成對移動(dòng)機(jī)器人各個(gè)電機(jī)的控制及配備的各式傳感器信息的獲取,如攝像頭、超聲波傳感器、電子羅盤和光敏傳感器等。目前,大多數(shù)機(jī)器人的這兩個(gè)部分是作為兩個(gè)獨(dú)立單元來實(shí)現(xiàn)的,即一塊運(yùn)動(dòng)驅(qū)動(dòng)板控制電機(jī),一塊傳感器采集板完成信號的采集。為適應(yīng)小型移動(dòng)機(jī)器人的特殊要求,本系統(tǒng)在實(shí)現(xiàn)過程中,將一部分傳感器信息的采集和機(jī)器人運(yùn)動(dòng)控制合成在一塊控制板上,這樣不但可以滿足一般的運(yùn)動(dòng)控制和傳感信息采集,還可以將一些簡單的行為控制(如轉(zhuǎn)向、尋光等)放到該塊控制板上完成,提高了機(jī)器人控制的靈活性,減少了對上層控制器資源的占用。另外,本系統(tǒng)還通過一個(gè)支持Zigbee協(xié)議[47]的無線通訊模塊接入到布置在環(huán)境中的無線傳感網(wǎng)絡(luò)中,極大拓展了機(jī)器人對環(huán)境的感知能力,并為無線傳感器網(wǎng)絡(luò)與移動(dòng)機(jī)器人的協(xié)作性研究提供了可能。 機(jī)器人運(yùn)動(dòng)控制與內(nèi)部傳感器信息采集 與上位機(jī)命令接口的定義與實(shí)現(xiàn)機(jī)器人運(yùn)動(dòng)控制與內(nèi)部傳感器信息采集單元與上位機(jī)(主控制板)間,采用串口進(jìn)行通訊。為實(shí)現(xiàn)這些底層操作對上層的封裝,系統(tǒng)為其定義了一套命令接口。考慮到PIC18F8520串口可以單字節(jié)收發(fā)的特性,為減少不必要的數(shù)據(jù)傳輸,命令采用兩級的方式定義,第一級命令只有一個(gè)字節(jié),如表41所示:表41 一級命令說明cmd高級控制0x61繼續(xù)運(yùn)行0x62暫停運(yùn)行0x63狀態(tài)信息查詢0x64 目前,只有高級控制這個(gè)一級命令擁有二級的命令,二級命令有3個(gè)字節(jié),如表42所示:表42 二級命令說明cmd_ucmd_hcmd_l啟動(dòng)電機(jī)0x01通道號速度值前行0x03速度值持續(xù)時(shí)間(為0則一直前行)左轉(zhuǎn)指定角度0x04無轉(zhuǎn)動(dòng)角度值右轉(zhuǎn)指定角度0x05無轉(zhuǎn)動(dòng)角度值后退0x06速度值持續(xù)時(shí)間(為0則一直后退)轉(zhuǎn)動(dòng)到指定方位0x08角度值(高位)角度值(低位)尋光0x0a無無……………………PIC18F8520上的串口采用中斷方式接收數(shù)據(jù),接口命令的解析主要在串口中斷中進(jìn)行。當(dāng)上位機(jī)有數(shù)據(jù)到達(dá)時(shí),首先判斷其是高級控制命令,還是狀態(tài)信息查詢、停止運(yùn)行或繼續(xù)運(yùn)行,若是狀態(tài)信息查詢,則直接將保存在緩沖區(qū)中機(jī)器人狀態(tài)信息發(fā)送回上位機(jī);若是停止運(yùn)行命令,則需要停止定時(shí)器3的運(yùn)行,并將其中斷關(guān)掉,這樣電機(jī)的控制信號就能停止輸出,從而使電機(jī)停止轉(zhuǎn)動(dòng);若是繼續(xù)運(yùn)行命令,則只需重新啟動(dòng)定時(shí)器3,并將其中斷使能;若是高級控制命令,則需將接收模式標(biāo)志置1,準(zhǔn)備接收二級命令,當(dāng)三個(gè)字節(jié)接收完畢后,要將接收模式標(biāo)志置0,然后根據(jù)二級命令的數(shù)值調(diào)用相應(yīng)的處理函數(shù),當(dāng)處理函數(shù)執(zhí)行完畢時(shí),需向上位機(jī)返回一個(gè)命令執(zhí)行完畢標(biāo)志。 機(jī)器人運(yùn)動(dòng)控制的實(shí)現(xiàn)本系統(tǒng)選用的調(diào)速電機(jī)采用以20ms為周期的方波來驅(qū)動(dòng)。轉(zhuǎn)速的大小則由每個(gè)周期中高電平持續(xù)時(shí)間的長短決定:當(dāng)高電平持續(xù)時(shí)間為1ms時(shí),電機(jī)順時(shí)針轉(zhuǎn)動(dòng)最快;當(dāng)高電平持續(xù)時(shí)間為2ms時(shí),電機(jī)逆時(shí)針轉(zhuǎn)動(dòng)最快;,電機(jī)停止轉(zhuǎn)動(dòng)。該功能的實(shí)現(xiàn)使用了一個(gè)定時(shí)器和8個(gè)普通I/O口,通過在一個(gè)周期內(nèi)分段輸出8個(gè)電機(jī)的控制信號來完成對各個(gè)電機(jī)的同步控制。這一部分主要由電機(jī)控制函數(shù)motor(channel ,speed)和定時(shí)器3的中斷處理函數(shù)來完成。當(dāng)上位機(jī)發(fā)出啟動(dòng)電機(jī)、前進(jìn)或轉(zhuǎn)向等命令時(shí),就會(huì)調(diào)用電機(jī)控制函數(shù)。在該函數(shù)中,要根據(jù)傳入的參數(shù)來修改速度緩存區(qū)中對應(yīng)通道的速度值,若是第一次調(diào)用該函數(shù),還需初始化定時(shí)器3,如設(shè)置定時(shí)器工作模式,中斷使能等。在定時(shí)器3的中斷處理例程中,首先要清除定時(shí)器3的中斷標(biāo)志位,再判斷通道計(jì)數(shù)器speedbufpoint的值,若其小于8,則代表目前要進(jìn)行的是本周期內(nèi)某個(gè)通道波形的輸出;若其等于8,則代表輸出的是第8通道的波形,此時(shí)則需要定本周期剩余的時(shí)間值,輸出本周期的結(jié)束標(biāo)志;若其大于8,則表示本周期的所有波形已經(jīng)輸出完畢,需要開始進(jìn)行下一周期的波形輸出。圖41是該部分控制的程序流程圖。speedbufpoint++結(jié) 束初 始 化設(shè)置通道和轉(zhuǎn)速度motorflag= =1?否是定時(shí)器參數(shù)設(shè)置結(jié) 束中斷標(biāo)志位清零speedbufpoint9=1?定時(shí)器中斷處理程序輸出第1段波形否準(zhǔn)備下一周期輸出第1段波形是speedbufpoint= =8=1?是否定本周期剩余時(shí)間輸出對應(yīng)段的波形圖41 電機(jī)控制流程圖 內(nèi)部傳感器信息采集這里所講的內(nèi)部傳感器是相對攝像頭和無線傳感網(wǎng)絡(luò)而言,專指前文所述的與機(jī)器人運(yùn)動(dòng)控制部分集成在一起的那些傳感器的信息采集,如電子羅盤、光敏傳感器、超聲波傳感器、碰撞開關(guān)等,共有13個(gè)傳感器接口。電子羅盤能提供機(jī)器人的方位信息,其輸出的數(shù)據(jù)格式為一組連續(xù)的方波信號,因此采用捕獲方式來采集該數(shù)據(jù);超聲波傳感器可以用來檢測機(jī)器人周圍是否有障礙物及障礙物的距離,其輸出的數(shù)據(jù)格式也是一組連續(xù)的方波信號,因此也采用捕獲方式來采集該數(shù)據(jù);光敏傳感器能測量環(huán)境中光的強(qiáng)度,其輸出是模擬信號,因此采用A/D轉(zhuǎn)換來采集該傳感器的信息;碰撞開關(guān)能檢測機(jī)器人是否碰到了物體,其輸出格式為二進(jìn)制值,即在39。039。和39。139。中變化,因此采用數(shù)字接口來檢測該傳感器的值。在具體實(shí)現(xiàn)過程中,采用了一個(gè)void sensor (unsigned char mand_h , unsigned char mand_l) 函數(shù)來進(jìn)行調(diào)度。其中mand_h代表傳感器的類型;mand_l代表該傳感器所在的傳感器通道號。該函數(shù)根據(jù)傳感器的類型來調(diào)用不同的傳感信息采集函數(shù),并將采集的數(shù)據(jù)保存到機(jī)器人的狀態(tài)信息緩沖區(qū)的相應(yīng)位置。 行為控制行為控制以機(jī)器人的運(yùn)動(dòng)控制和傳感器信息采集為基礎(chǔ),能完成某個(gè)具體的動(dòng)作。在本系統(tǒng)中,將一部分的傳感器信息檢測與機(jī)器人運(yùn)動(dòng)控制集成在了一塊控制板上,使得該控制板可以不依賴于其它部件,來獨(dú)立完成一些簡單的行為,如右轉(zhuǎn)指定角度、避障和尋光等。以下是右轉(zhuǎn)指定角度的代碼片斷:void mand_right(unsigned int turnangle){ int destangle,currentangle。if(turnangle0) { sensor(6,13)。 // 13通道接的是電子羅盤currentangle=sensor_buf[13]。 destangle=currentangle+turnangle。 while(1) { sensor(6,13)。 currentangle =sensor_buf[13]。 if((destangle359)amp。amp。(currentangle=(destangle360))) currentangle =currentangle +360。 if(currentangle (destangle2)) { if(currentangle (destangle20)) //高速右轉(zhuǎn) { motor(2,170)。 motor(4,170)。 } else
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1