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

正文內(nèi)容

基于arm技術(shù)的遠(yuǎn)程機(jī)器人控制通信系統(tǒng)設(shè)計(jì)畢業(yè)論文(文件)

2025-07-10 12:57 上一頁面

下一頁面
 

【正文】 Packet = size。為了解決這個(gè)問題,本設(shè)計(jì)提出了將消息包序列化后再發(fā)送的解決辦法。 登陸和退出機(jī)制本設(shè)計(jì)的機(jī)器人和手持控制終端之間的通信是基于登陸和退出機(jī)制的。手持控制終端會(huì)根據(jù)這一指令,注銷機(jī)器人的唯一ID識(shí)別號(hào),清除機(jī)器人的所有信息。采用這一應(yīng)答機(jī)制,是為了確保服務(wù)器和客戶端之間的通信是有效的。動(dòng)態(tài)密鑰的產(chǎn)生是取當(dāng)前發(fā)送消息時(shí)的系統(tǒng)時(shí)間作為隨機(jī)數(shù)因子,產(chǎn)生一個(gè)隨機(jī)數(shù),并將生成的隨機(jī)數(shù)模除256生成一個(gè)1字節(jié)的動(dòng)態(tài)密鑰randomkey。表 63 需加密明文數(shù)據(jù)格式頭部數(shù)據(jù)8字節(jié)中部數(shù)據(jù)8*N字節(jié)尾部數(shù)據(jù) T8字節(jié)123456789ab......stuvwxyzz(1)加密時(shí),首先對(duì)頭部數(shù)據(jù)進(jìn)行加密:for( i = 0。 j N。 i++)p[N * 8 + i] = p[N * 8 + i] ^ p[(N 1) * 8 + i] ^ enTailSeed[i] ^ randomkey。其次對(duì)中部數(shù)據(jù)進(jìn)行解密:for( j = 1。 i 8。心跳檢測(cè)機(jī)制原理是每隔一個(gè)時(shí)間間隔,往服務(wù)器發(fā)送一個(gè)數(shù)據(jù)包,匯報(bào)自身的狀態(tài)。消息注冊(cè)函數(shù)使用了C++的STL的關(guān)聯(lián)容器Map。static std::mapstd::string, clientMsgFuncPtr msgFuncMap。 消息接收機(jī)制本設(shè)計(jì)使用了C++的queue容器類建立了一個(gè)消息隊(duì)列對(duì)象,用于接收客戶端對(duì)服務(wù)器信息請(qǐng)求的處理。 //插入網(wǎng)絡(luò)連接消息 pthread_cond_broadcast( amp。若消息隊(duì)列的中有消息需要處理,則轉(zhuǎn)去處理,直到?jīng)]有消息需要處理為止。 //在消息隊(duì)列中彈出一個(gè)消息SevPacketHandle( pSockInfo )。只需通過消息函數(shù)指針pMsgFunc來實(shí)現(xiàn)執(zhí)行對(duì)應(yīng)消息函數(shù)的功能。機(jī)器人終端主線程設(shè)置為每5毫秒進(jìn)行一次攝像頭、GPS和電子羅盤數(shù)據(jù)采集,封裝后的一次發(fā)送數(shù)據(jù)大小達(dá)到80036字節(jié)數(shù)據(jù),數(shù)據(jù)在采集完畢后立即發(fā)送給手持控制終端處理。 斷網(wǎng)測(cè)試對(duì)于機(jī)器人而言,在無線網(wǎng)絡(luò)中通信,難免會(huì)遇到斷網(wǎng)或者網(wǎng)絡(luò)通信不暢通的情況。隨著雙方的距離越來越遠(yuǎn),機(jī)器人開始出現(xiàn)心跳連接不上的現(xiàn)象。由于有守護(hù)進(jìn)程的工作,5秒后,機(jī)器人重新啟動(dòng)中控系統(tǒng),再次嘗試去連接手持控制終端。 測(cè)試結(jié)論通過上述測(cè)試,驗(yàn)證了本設(shè)計(jì)的控制通信系統(tǒng)是有效的、安全的和可靠的,而且能在不同的環(huán)境中正常工作,使得機(jī)器人具備了基本的自救功能,具有一定的實(shí)用價(jià)值,達(dá)到了預(yù)期的設(shè)計(jì)目的。整個(gè)設(shè)計(jì)的結(jié)論如下:(1) 在硬件上采用了基于低成本、低能耗、高性能的ARM微處理器的嵌入式硬件系統(tǒng),有效地提高了機(jī)器人的性能,降低了機(jī)器人的成本。(3) Qt本身就是一個(gè)開源的常用的嵌入式開發(fā)工具,而本設(shè)計(jì)采用了Qt for android開發(fā)工具設(shè)計(jì)了一個(gè)手持終端控制軟件,結(jié)合自行設(shè)計(jì)的基于Linux的底層控制通信協(xié)議庫,可以廣泛地運(yùn)行在Android手機(jī)、平板電腦上,當(dāng)編譯成PC版本時(shí),使得PC也可以控制機(jī)器人。當(dāng)然,本設(shè)計(jì)同樣也存在一些不足之處有待改進(jìn),如:(1) 機(jī)器人的運(yùn)動(dòng)功能和傳感器支持不足,對(duì)于一些如自動(dòng)避障功能,攝像頭的調(diào)焦等有利于機(jī)器或者控制人員的功能尚未實(shí)現(xiàn)。附圖1 本設(shè)計(jì)實(shí)物圖 致 謝本論文是在我敬愛的指導(dǎo)老師*老師的親切關(guān)懷和悉心指導(dǎo)下完成的。同時(shí)他還在我思想、生活和工作方面給予了我無微不至的關(guān)懷,在此謹(jǐn)向我的師傅*老師致以誠摯的謝意和崇高的敬意。在我一次次失意的時(shí)候,在我一次次遇到挫折的時(shí)候,是他們幫住我克服難關(guān),勇敢地走下去。論文即將結(jié)束之際,感謝我的隊(duì)友蘇文川同學(xué),是他的配合和幫助,才使得我的論文順利完成。在這個(gè)溫馨的家里,我們一起奮斗,一起學(xué)習(xí),一起生活,一起工作,使我時(shí)刻感受到家的溫暖,使我充滿信心去追求我的學(xué)業(yè)。從論文和畢業(yè)設(shè)計(jì)的選題,到論文和畢業(yè)設(shè)計(jì)的完成,*老師始終給予我細(xì)心的指導(dǎo)和不懈的支持。(3) 在控制通信系統(tǒng)方面,自救能力顯得較為薄弱,不支持路徑記錄,在網(wǎng)絡(luò)丟失的時(shí)候,如果能實(shí)現(xiàn)原路返航的話,整個(gè)機(jī)器人的價(jià)值會(huì)更大。(4) 利用底層的Linux網(wǎng)絡(luò)接口和TCP傳輸協(xié)議,設(shè)計(jì)了一個(gè)具備信息加密、心跳檢測(cè)機(jī)制、斷線重連和自救的控制通信系統(tǒng),為機(jī)器人采集、傳輸和控制信息提供了強(qiáng)大的支撐。(2) 在系統(tǒng)軟件平臺(tái)上使用了開源、免費(fèi)的Linux操作系統(tǒng),Linux內(nèi)核自帶了大量的硬件驅(qū)動(dòng),而且也有大量的開源軟件提供支持。對(duì)機(jī)器人的硬件設(shè)計(jì)、系統(tǒng)平臺(tái)構(gòu)建和軟件設(shè)計(jì)以及手持控制終端軟件進(jìn)行了設(shè)計(jì)和分析,同時(shí)通過設(shè)計(jì)了一個(gè)基于TCP傳輸協(xié)議的控制通信系統(tǒng),有效地提高了遠(yuǎn)程機(jī)器人進(jìn)行遠(yuǎn)程操作時(shí)的控制和信息的安全性。在測(cè)試的過程中,機(jī)器人也出現(xiàn)上述設(shè)定的情況。由于在本測(cè)試中,設(shè)置了機(jī)器人如果在連續(xù)5次心跳連接不上的情況下會(huì)自動(dòng)停止所有的工作,若在此后的5秒內(nèi)能連接上網(wǎng)絡(luò),則重新從手持控制終端同步各個(gè)設(shè)備的控制狀態(tài),重新進(jìn)行工作。機(jī)器人首先往手持控制終端相反的方向移動(dòng),開啟所有的數(shù)據(jù)傳輸功能。由于在控制系統(tǒng)中設(shè)置了存儲(chǔ)網(wǎng)絡(luò)消息的消息隊(duì)列,機(jī)器人均能正常接收并處理控制命令數(shù)據(jù)。 壓力通信測(cè)試對(duì)于機(jī)器人而言,其既需要進(jìn)行信息采集和傳輸,又要進(jìn)行接收控制端的命令。首先讀取消息包的發(fā)送方和動(dòng)作信息,并根據(jù)得到的信息在消息注冊(cè)函數(shù)的哈希表中檢索,如果查到了有相應(yīng)的動(dòng)作注冊(cè),則派發(fā)消息至對(duì)應(yīng)的消息函數(shù)中執(zhí)行,否則舍棄該數(shù)據(jù)包,如圖 63所示。pSockInfo = ()。 //喚醒網(wǎng)絡(luò)消息處理線程網(wǎng)絡(luò)消息處理線程在沒有連接消息需要處理的時(shí)候,會(huì)自動(dòng)將自己置于休眠狀態(tài)。static std::queueSOCKINFO * SockMesQueue。當(dāng)需要注冊(cè)客戶端消息函數(shù)時(shí),可以通過insert動(dòng)作插入消息函數(shù),如注冊(cè)手持終端控制機(jī)器人的消息函數(shù):(std::pairstd::string,clientMsgFuncPtr(string(server_CtrlClient), (clientMsgFuncPtr)CtrlClient))。由于這個(gè)特性,當(dāng)需要進(jìn)行一對(duì)一數(shù)據(jù)處理的時(shí)候,該特性可以提供一個(gè)快速的處理通道。圖 62 心跳檢測(cè)流程圖 機(jī)器人控制通信系統(tǒng)控制機(jī)制 消息注冊(cè)機(jī)制機(jī)器人控制端和手持控制終端之間的操作,需要先注冊(cè)其動(dòng)作,即注冊(cè)消息函數(shù)。 心跳檢測(cè)機(jī)制機(jī)器人與手持控制終端是通過無線網(wǎng)絡(luò)進(jìn)行通信的,在通信過程中難免會(huì)遇到網(wǎng)絡(luò)斷線等問題。 j++)p[j * 8 + i] = p[j * 8 + i] ^ p[(j 1) * 8 + i] ^ randomkey。 i T。 最后對(duì)尾部數(shù)據(jù)進(jìn)行加密:for ( i = 0。 i++)p[i] = p[i] ^ enHeadSeed[i] ^ randomkey。static char enTailSeed[8] = { 0x31, 0x1e, 0xb7, 0x48, 0x3e, 0x18, 0xc4, 0x29 }。 數(shù)據(jù)加密機(jī)制在無線網(wǎng)絡(luò)上進(jìn)行數(shù)據(jù)通信,數(shù)據(jù)始終暴露在空氣中,很容易受到其他人或者設(shè)備的監(jiān)控,這就需要對(duì)通信數(shù)據(jù)進(jìn)行加密,將明文轉(zhuǎn)換為密文傳輸。 通信應(yīng)答機(jī)制本設(shè)計(jì)的所有消息通信都采用了應(yīng)答機(jī)制。手持控制終端會(huì)根據(jù)機(jī)器人的登陸信息,分配一個(gè)唯一的ID識(shí)別號(hào)給機(jī)器人,機(jī)器人和手持控制終端通過這一個(gè)ID號(hào)來確認(rèn)通信的雙方。表 62 序列化的消息包格式序列化消息包大小發(fā)送包結(jié)構(gòu)體實(shí)際數(shù)據(jù)序列化消息包大小動(dòng)態(tài)密鑰校驗(yàn)碼消息包結(jié)構(gòu)體消息包中指向?qū)嶋H數(shù)據(jù)的指針?biāo)赶虻臄?shù)據(jù)序列化的消息包是一個(gè)類型為char的字符數(shù)組,接收方將根據(jù)序列化消息包大小來確定整個(gè)序列化消息包的大小,并接收相應(yīng)大小的數(shù)據(jù)。對(duì)于解包,服務(wù)器那邊只需要根據(jù)封包的反過程提取對(duì)應(yīng)大小的實(shí)際數(shù)據(jù)以及客戶端的發(fā)送方和動(dòng)作信息出來即可。pPacket = (DATAPACKET *)malloc( size )。 數(shù)據(jù)封包和解包機(jī)制客戶端給服務(wù)器發(fā)送數(shù)據(jù)時(shí),先要經(jīng)過數(shù)據(jù)封包處理。 消息包定義機(jī)器人控制通信系統(tǒng)使用了消息機(jī)制,手持控制終端和機(jī)器人之間進(jìn)行通信,需要發(fā)送消息包。該系統(tǒng)共分為兩部分:通信系統(tǒng)和控制系統(tǒng)。機(jī)器人控制通信系統(tǒng)主要是基于Linux API實(shí)現(xiàn)的,手持控制終端和機(jī)器人中控系統(tǒng)軟件均使用其作為自身的網(wǎng)絡(luò)和控制的實(shí)現(xiàn)模塊。(3) 可以顯示各類控制連接信息的UI通知消息模塊。圖 54 機(jī)器人手持終端軟件的三個(gè)線程 基于QT for Android的UI模塊設(shè)計(jì)QT for Android是羅馬尼亞的一名開發(fā)者開發(fā)的一款基于QT開發(fā)工具、用于編寫運(yùn)行在Android操作系統(tǒng)上的軟件的開發(fā)工具。 機(jī)器人手持控制終端軟件設(shè)計(jì) 機(jī)器人手持控制終端軟件設(shè)計(jì)總述機(jī)器人手持控制終端軟件是運(yùn)行在Android操作系統(tǒng)上的用來控制機(jī)器人的手持端軟件。tmp_inset, NULL, NULL, amp。若超時(shí),則可以根據(jù)具體的情況來進(jìn)行網(wǎng)絡(luò)異常處理。Select可以設(shè)置超時(shí)連接等待的時(shí)間。對(duì)套接字sock設(shè)置為O_NONBLOCK后,通過函數(shù)ftl(sock, F_SETFL, O_NONBLOCK)設(shè)置便可實(shí)現(xiàn)非阻塞通信。通信完成通過close()關(guān)閉套接字。服務(wù)器端要先調(diào)用socket()函數(shù)創(chuàng)建一個(gè)TCP套接字,函數(shù)bind()將本地IP地址綁定在一起,并可指定服務(wù)器的端口號(hào)和接受的客戶端的IP地址范圍。對(duì)機(jī)器人中控系統(tǒng)而言,這五個(gè)功能就相當(dāng)于五個(gè)狀態(tài),而要控制機(jī)器人只需調(diào)用libDriver_robot功能函數(shù),傳入相應(yīng)的狀態(tài)就可驅(qū)動(dòng)機(jī)器人運(yùn)動(dòng)。/*讀電子羅盤數(shù)據(jù)*/int libCom_ReadDegree() 機(jī)器人運(yùn)動(dòng)控制模塊設(shè)計(jì)機(jī)器人需要實(shí)現(xiàn)運(yùn)動(dòng),必須要提供前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)和停止功能。GPS上電后會(huì)自動(dòng)傳輸當(dāng)前經(jīng)緯度等數(shù)據(jù)到串口上,只需要往串口讀取數(shù)據(jù)就可以了。對(duì)于機(jī)器人中控系統(tǒng)而言,進(jìn)行圖像采集,只需調(diào)用底層實(shí)現(xiàn)的功能函數(shù)即可。多線程程序采用多任務(wù)、并發(fā)的工作方式,可以提高應(yīng)用程序響應(yīng)時(shí)間并且改善程序結(jié)構(gòu)。5 機(jī)器人嵌入式中控系統(tǒng)軟件和手持控制終端軟件設(shè)計(jì) 機(jī)器人中控系統(tǒng)軟件設(shè)計(jì) 機(jī)器人中控系統(tǒng)軟件設(shè)計(jì)總述機(jī)器人中控系統(tǒng)軟件是機(jī)器人控制的核心軟件,負(fù)責(zé)對(duì)整個(gè)機(jī)器人的運(yùn)動(dòng)控制、信息采集和遠(yuǎn)程控制處理工作。YAFFS提供了寫均衡,垃圾收集等底層操作。 Linux Kernel移植 獲取內(nèi)核源碼: wget 配置內(nèi)核Linux kernel ,在配置內(nèi)核的過程主要包括以下幾個(gè)部分:(A)修改arch/arm/machs3c2440/:static struct mtd_partition mini2440_default_nand_part[] = { [0] = { .name = Uboot, .size = 0x00060000, .offset = 0, }, [1] = { .name = Param, .offset = 0x00060000, .size = 0x00020000, }, [2] = { .name = Kernel, .offset = 0x00080000, .size = 0x00500000, }, [3] = { .name = Root, .offset = 0x00580000, .size
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1