《機器人創(chuàng)新設計》智能小車課程設計_第1頁
《機器人創(chuàng)新設計》智能小車課程設計_第2頁
《機器人創(chuàng)新設計》智能小車課程設計_第3頁
《機器人創(chuàng)新設計》智能小車課程設計_第4頁
《機器人創(chuàng)新設計》智能小車課程設計_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

《機器人創(chuàng)新設計》考查報告作業(yè)題目:智能小車

《機器人創(chuàng)新設計考查》任務書專業(yè)班級機械電子工程學生姓名學號設計題目智能小車設計任務書設計要求:1.實現(xiàn)網(wǎng)絡數(shù)據(jù)傳輸2.實現(xiàn)視頻監(jiān)控3.實現(xiàn)可視化客戶端編寫4.實現(xiàn)串口通信,控制小車移動實現(xiàn)服務器編寫交稿形式:手寫稿;R打印稿;軟件;圖紙;其他指導教師簽名:2020年12月16日學生簽名:2020年12月16日

學生日志與師生見面情況序號完成工作進展情況或交流情況師生見面時間地點1C語言基礎補習12月7日,躬行樓4042C語言基礎補習12月8日,躬行樓4043C語言基礎補習12月9日,躬行樓4044IO編程指導12月10日,躬行樓4045進線程基礎12月11日,躬行樓4046網(wǎng)絡編程基礎12月14日,躬行樓4047Qt界面設計12月15日,躬行樓4048項目講解12月16日,躬行樓404學生簡要總結(jié)與簽名:通過兩個周的的學習,我們終于完成了智能小車這個項目,并從中收獲了很多知識與動手能力的技巧。首先,老師花了一周的時間給我們講解了C語言的一些知識,讓我們對編程有了一個全新的認識。其次,第二個周就開始帶領我們學習了控制智能小車的代碼和編程,讓我們對嵌入式系統(tǒng)有了更深入的了解。雖然學習的過程很艱辛,但是我們也始終堅持不放棄,我們小組研究了支配智能小車所需的客戶端和服務端的聯(lián)系,并進行了程序的編制。編制完成后我們對系統(tǒng)進行了多次測試,最終做出了整個小車的控制系統(tǒng),讓小車能夠平穩(wěn)的運動和全方位拍攝。雖然項目已經(jīng)初步完成,但由于經(jīng)驗能力有限,該系統(tǒng)還存在著許多不盡人意的地方,有待于進一步的完善和改進。這次實訓經(jīng)歷不僅是對我們這兩個周所學知識的考查,更是對我們知識能力以及動手能力的考驗。使我們對一個項目的整體構(gòu)造以及工作原理有了初步認識,極大的鍛煉了我們的思考和分析問題的能力??傊?在課程設計的過程中,無論是對于學習方法還是理論知識,我們都有了新的認識,受益匪淺,這將激勵我們在今后再接再厲,不斷完善自己的理論知識,實踐運作能力。2020年12月16日智能小車設計 6第1章任務及需求分析 81.1設計任務及目標 81.1.1.緒論 8第2章整體設計 102.1Linux 102.1.1了解Linux操作系統(tǒng) 102.1.2網(wǎng)絡編程常用函數(shù) 102.2服務器構(gòu)架 112.2.1V4L2架構(gòu) 112.2.2CS架構(gòu)之客戶端編程步驟 112.2.3初始化CS架構(gòu)之服務器編程步驟車 122.3職責分配 132.4小車功能描述 13總結(jié) 17參考文獻 19附錄 19智能小車設計摘要:智能小車是一種能夠通過編程手段完成特定任務的小型機器人,它具有制作成本低,電路結(jié)構(gòu)簡單,程序試調(diào)方便等優(yōu)點。由于具有很強的趣味性,智能小車深受機械人愛好者以及高校學生的喜愛。隨著科技的發(fā)展智能小車也被廣泛應用于各種玩具和其他產(chǎn)品的設計中,為中國玩具市場技術含量的缺乏進行一定彌補,實現(xiàn)經(jīng)濟收益,形成商業(yè)價值以及地豐富了人們的生活。本次試驗采用STM32微處理器為核心芯片實現(xiàn)控制小車的前進、后退、停止、及左轉(zhuǎn)、右轉(zhuǎn)的功能,以及wifi視頻監(jiān)控利用QT客戶端和攝像頭的配合就可以進行監(jiān)控控制。主要體現(xiàn)多功能小車的智能模式,此智能系統(tǒng)的組成主要包括STM32控制器、電機驅(qū)動電路、無線路由器、攝像頭。小車前進過程中前端的攝像頭對周圍的環(huán)境進行監(jiān)測,同時把視頻信號傳回給QT客戶端。通過QT客戶端可以隨時控制小車行進方向,而且可以操作攝像頭隨意上下、左右轉(zhuǎn)動,擴大小車拍攝視野。經(jīng)實驗驗收測試,該智能小車系統(tǒng)反應快速,靈活,各項指標穩(wěn)定。關鍵詞:視頻監(jiān)控;智能小車;網(wǎng)絡編程;STM32;電機控制;無線Abstract:Intelligentcarisakindofsmallrobotthatcanaccomplishspecifictasksbymeansofprogramming.Ithastheadvantagesoflowproductioncost,simplecircuitstructureandconvenientprogramtestandadjustment.Becauseofitsstronginterest,intelligentcarispopularamongrobotloversandcollegestudents.Withtheintelligentcarisalsowidelyusedinthedesignofvarioustoysandotherproducts,tomakeupforthelackoftechnicalcontentinChina'stoymarket,toachieveeconomicbenefits,formcommercialvalueandenrichpeople'slife.Inthisexperiment,theSTM32microprocessorwasusedasthecorechiptorealizethefunctionsofcontrollingthecar'sforward,backward,stop,leftandrightturn,andwifivideomonitoringcouldbemonitoredandcontrolledwiththecooperationofQTclientandcamera.Itmainlyreflectstheintelligentmodeofthemulti-functioncar.TheintelligentsystemconsistsofSTM32controller,motordrivecircuit,wirelessrouterandcamera.ThecameraatthefrontofthecarmonitorsthesurroundingenvironmentandsendsvideosignalsbacktotheQTclient.QTclientcancontrolthetravelingdirectionofthecaratanytime,andcanoperatethecameratorotateupanddown,leftandrightatwill,toexpandtheshootinghorizonofthecar.Throughtheexperimentandacceptancetest,theintelligentcarsystemhasfastresponse,flexible,andstableindexes.Keywords:videomonitoring;Smartcar;Networkprogramming;STM32;Motorcontrol;wireless

第1章任務及需求分析1.1設計任務及目標1.1.1.緒論智能小車是一個集環(huán)境感知、規(guī)劃決策,自動行駛等功能于一體的綜合系統(tǒng)。它集中地運用了計算機、傳感、信息、通信、導航、人工智能及自動控制等技術,是典型的高新技術綜合體。智實現(xiàn)在復雜環(huán)境背景下的控制運動,從而完成具有特定功能的機器人系統(tǒng)。而隨著智能化電器時代的到來,它們在為人們提供的舒適的生活環(huán)境的同時,也提高了制造智能化電器對于人才要求的門檻。智能小車是集成了多種高新技術,它不僅融合了電子、傳感器、計算機硬件、軟件等許多學科的知識,而且還涉及到當今許多前沿領域的技術,它是一個國家高科技技術水平的重要體現(xiàn)。通過建立起簡易智能小車的設計,引導人從理論走向?qū)嵺`,培養(yǎng)我們的動手能力,使我們在了解智能化電器的工作原理的基礎上,獲得完成整體項目的能力,并掌握了Stm32開發(fā)板的編程原理,為同學們進入ARM領域提供了基礎。另外,本次課程設計,使同學們了解自己的不足之處,從而使同學們有目標的提升自己的能力。1.1.2研究背景隨著生活智能化的不斷發(fā)展,智能家居將是未來發(fā)展的必然趨勢。對于無人值守的地方、隱蔽場以及黑暗處的監(jiān)測也成為必須解決的問題。而現(xiàn)在嵌入wifi功能的設備隨處可見,所以利用現(xiàn)有的網(wǎng)絡資源搭建一臺wif視頻監(jiān)控小車的想法就誕生了,即利用帶有wifi的設備進行控制小車,實現(xiàn)無線監(jiān)控。對于那些不安全的以及人無法進入的場所進行無線監(jiān)測,通過wifi小車是一個很好的解決方案,利用QT客戶端和攝像頭的配合就可以進行監(jiān)控控制。1.1.3智能小車設計構(gòu)想智能車輛是集環(huán)境感知、規(guī)劃決策、多等級輔助功能于一體的綜合系統(tǒng)。是機械人智能系統(tǒng)的一個重要組成部分。本次設計對智能小車的控制系統(tǒng)進行了研究,設計實現(xiàn)一個基于視頻監(jiān)控和控制行跡處理的智能小車控制系統(tǒng)。實現(xiàn)智能小車最基本的兩個功能監(jiān)控、控制。通過電腦上在QT客戶端control_client界面編寫程序控制小車車輪轉(zhuǎn)動的方向,我們還插入圖片美化了方向控制的端面,讓小車成功完成方向控制這一模塊。通過攝像頭的安裝和調(diào)試,在小車的終端上運行camera_server運行這個服務器,與QT客戶端進行通信,將攝像頭采集到的圖片發(fā)送給camera_client這個客戶端,它就可以顯示出視頻,就完成了視頻拍攝的模塊部分。這就是整個小車兩個模塊的設計過程。1.1.4智能小車實現(xiàn)功能1.可實現(xiàn)小車的前進、后退、左轉(zhuǎn)、右轉(zhuǎn)、加速、減速、停止;2.可通過wifi遙控操作,控制小車運行狀態(tài);3.可通過視頻監(jiān)控,控制小車運行狀態(tài);4.顯示相關運行狀態(tài)參數(shù)與工作方式1.1.5研究思路主要應用基于嵌入式linux系統(tǒng),利用STM32作為CPU(微控制器)控制小車最終的行動軌跡。智能小車項目包含方向控制模塊,攝像頭拍攝模塊兩大功能控制系統(tǒng)。智能小車系統(tǒng)有兩個QT客戶端(攝像頭客戶端、串口控制客戶端)將采集數(shù)據(jù)通過wifi傳遞服務器路由板,再由路由板串口傳遞命令給STM32控制小車行動。STM32微控制器根據(jù)采集的信號做出不同的判斷,從而控制電機運動方向和運動速度。將攝像頭采集到的圖片發(fā)送給camera_client這個客戶端,它就可以顯示出視頻。系統(tǒng)以STM32微控制器為核心,通過服務器采集不同的信號做出判斷,繼而改變電機的運動方向和運動速度。小車的終端上運行camera_server運行這個服務器,與QT客戶端進行通信,攝像頭通過pic傳輸數(shù)據(jù)至ubuntu服務器,服務器通過網(wǎng)絡編程經(jīng)pic傳送數(shù)據(jù)至Qt客戶端,客戶端再經(jīng)過傳送數(shù)據(jù)至ubuntu服務器,ubuntu服務器經(jīng)過傳輸數(shù)據(jù)至小車,使智能小車實現(xiàn)智能改變運動軌跡與攝像監(jiān)控。實驗系統(tǒng)結(jié)構(gòu)如圖1.1所示第2章整體設計2.1Linux2.1.1了解Linux操作系統(tǒng)Linux操作系統(tǒng)整體分為三層,如圖2.11.用戶進程:表示計算機中運行的所有程序,它們運行于用戶空間,由內(nèi)核統(tǒng)一管理;2.內(nèi)核:這是操作系統(tǒng)的核心,負責管理硬件系統(tǒng),同時為上層的應用程序提供操作接口;3.硬件系統(tǒng):包括CPU、內(nèi)存、硬盤、網(wǎng)卡等;圖2.12.1.2網(wǎng)絡編程常用函數(shù)socket()創(chuàng)建套接字connect()建立連接bind()綁定本機地址和端口listen()設置監(jiān)聽套接字accept()接受TCP連接close()關閉套接字2.2服務器構(gòu)架2.2.1V4L2架構(gòu)1.攝像頭初始化Camera_init2.開始采集圖片Camera_start3.while(1){出隊一張圖片發(fā)送(長度)(內(nèi)容)入隊一張圖片}4.停止采集Camera_stop5.結(jié)束攝像頭Camera_exit2.2.2CS架構(gòu)之客戶端編程步驟1.創(chuàng)建套接字、地址結(jié)構(gòu)及其長度intsocket(intdomain,inttype,intprotocol);參數(shù)domaintypeprotocol意義地址族AF_INET套接字類型參數(shù)通常置為0 SOCK_STREAM//流式套接字 套接字類型SOCK_DGRAM//數(shù)據(jù)報套接字 SOCK_RAW//原始套接字2.連接服務器intconnect(intsockfd,(structsockaddr*)&addr,socklen_taddrlen);參數(shù)intsockfd(structsockaddr*)addrsocklen_taddrlen意義流式套接字服務器的地址結(jié)構(gòu)地址結(jié)構(gòu)的長度2.2.3初始化CS架構(gòu)之服務器編程步驟車1.創(chuàng)建套接字和地址結(jié)構(gòu)及其長度,同客戶端2.綁定本機地址和端口(一般服務器使用)int

bind(int

sockfd,

(struct

sockaddr

*)&my_addr,

int

addrlen);參數(shù)intsockfdconststructsockaddr*addrsocklen_taddrlen意義流式套接字地址結(jié)構(gòu)指針地址結(jié)構(gòu)長度返回值:0或-13.設置監(jiān)聽套接字intlisten(intsockfd,intbacklog);參數(shù)intsockfdintbacklog意義流式套接字最大等待隊列長度成功返回0,失敗返回-1,完成listen()調(diào)用后,流式套接字變成了監(jiān)聽套接字4.等待連接,創(chuàng)建讀寫套接字(只能用于收發(fā)數(shù)據(jù))intaccept(intsockfd,(structsockaddr*)addr,socklen_t*addrlen);參數(shù)intsockfd(structsockaddr*)addrsocklen_t*addrlen意義監(jiān)聽套接字客戶端的地址結(jié)構(gòu),一般設置NULL客戶端地址結(jié)構(gòu)的長度,一般設置NULL接受控制客戶端發(fā)送的控制小車移動命令把命令通過串口通信,發(fā)給STM32,讓小車動起來2.3職責分配1.camer_client攝像頭客戶端負責人的主要職責是:創(chuàng)建服務器套接字及地址端口,并與攝像機服務器端口連接。通過端口連接攝像頭服務器,接收服務器數(shù)據(jù),通過轉(zhuǎn)到槽命令將攝像頭采集到的圖片顯示到QT界面的“PushButton”窗口上,并對QT界面進行背景優(yōu)化及控制按鈕美化。2.camer_server攝像頭服務器負責人的主要職責是:實現(xiàn)控制攝像頭的數(shù)據(jù)采集并創(chuàng)建服務器套接字及地址端口,把攝像頭采集的數(shù)據(jù)準確的傳輸?shù)娇蛻舳硕丝凇?.control_client串口控制客戶端負責人的主要職責是:使用QT軟件在設計界面創(chuàng)建按鈕(PushButtons)通過轉(zhuǎn)到槽指令在QT界面設計控制指令,并對控制指令按鈕進行美化。在屬性命令欄里找到styleSheet點擊彈出編輯樣式表,添加資源圖片或其他,對按鍵進行美化。創(chuàng)建服務器套接字及地址端口,并與串口服務器連接。通過端口向服務器發(fā)送控制指令控制汽車運行。4.control_server串口控制服務器負責人的主要職責是:通過代碼的編寫對電機進行控制,并通過指令控制讓汽車實現(xiàn)前后左右的行駛。創(chuàng)建服務器套接字及地址端口,通過服務器端口接收串口控制客戶端端口發(fā)送的指令對汽車進行控制。2.4小車功能描述路由板打開,小車上面藍色的燈光變亮,證明WiFi已經(jīng)打開,將電腦連上這個WiFi。功能一:將攝像頭接到小車上面,開始運行camera_server,在小車的終端上運行這個服務器,那么這個服務器就會與QT客戶端進行通信,將攝像頭采集到的圖片不停的發(fā)送給camera_client這個客戶端,讓它顯示視頻。如圖2.2圖2.2功能二:QT界面control_client的作用是控制小車移動,在這個客戶端點擊按鈕,信號就會通過網(wǎng)絡發(fā)送給control_server這個服務器。這時小車還不能動,還要通過串口通信serial把這個命令發(fā)送給STM32這個板,就可以產(chǎn)生直流電源控制小車四個輪子運動。如圖2.32.4圖2.3圖2.4小車的設計安裝后的形狀如圖2.5圖2.5系統(tǒng)完善后,打開小車,通過WiFi向小車傳送數(shù)據(jù),便可通過QT客戶端對小車進行控制和監(jiān)控。運行圖如2.6圖2.6

總結(jié)本設計主要解決了以WiFi路由版模塊為中樞,搭載攝像頭和小車的控制服務器,通過電腦QT客戶端,實現(xiàn)了小車的遠程WiFi控制以及遠程的WiFi圖像傳輸。技術指標達到設計要求的有:小車的前進,后退,左轉(zhuǎn),右轉(zhuǎn),停止的控制,攝像頭圖像傳輸。沒達到要求的有:小車的控制依然有些許遲鈍以及不靈活,攝像頭傳輸圖像模糊。雖然項目已經(jīng)初步完成,但由于經(jīng)驗能力有限,該系統(tǒng)還存在著許多不盡人意的地方,有待于進一步的完善和改進。這次實訓經(jīng)歷不僅是對我們這兩個周所學知識的考查,更是對我們知識能力以及動手能力的考驗。使我們對一個項目的整體構(gòu)造以及工作原理有了初步認識,極大的鍛煉了我們的思考和分析問題的能力。總之,在課程設計的過程中,無論是對于學習方法還是理論知識,我們都有了新的認識,受益匪淺,這將激勵我們在今后再接再厲,不斷完善自己的理論知識,實踐運作能力。主要完成工作:(1)系統(tǒng)功能設計包括小車行動的控制,攝像頭圖像的傳輸。(2)系統(tǒng)軟件設計由QT客戶端和服務器組成。本次設計通過網(wǎng)絡架構(gòu)程序,并利用WIFI模塊建立電腦和小車之間的通信,再通過相應的程序控制指令,以達到遠程控制小車的目的。(3)完成系統(tǒng)調(diào)試,先連接小車的WiFi,再通過ubuntu32系統(tǒng)登入小車終端,將服務器程序?qū)懭胄≤嚱K端,在電腦上打開QT客戶端,連接上服務器,實現(xiàn)小車的控制。本次設計尚有幾處地方需要完善:(1)QT客戶端控制小車行動不方便,可以讓鍵盤控制代替鼠標控制。(2)小車可以加裝雷達,遇到障礙物可以自動避開。(3)c語言基礎較為薄弱,需要加強c語言知識與運用能力(4)本次實訓時間較短,缺乏操作鍛煉。

參考文獻[1]張毅剛,彭喜元,彭宇。單片機原理及應用.高等教育出版社.2015.5[2]沈紅.衛(wèi)基于單片機的智能系統(tǒng)設計與實現(xiàn).電子工業(yè)出版社.2005[3]王晶.智能小車運動控制技術研究.武漢.武漢理工大學.2009年[4]童詩白,華成英主編.模擬電子技術基礎(第4版)高等教育出版社[5]萬永倫,丁杰雄.一種機器人尋線控制系統(tǒng).電子科技大學學報,2003附錄附錄1、系統(tǒng)框圖或大的流程圖附錄2、系統(tǒng)截圖或照片附錄3、主要源代碼1.攝像服務代碼#include<stdio.h>#include<sys/types.h>/*SeeNOTES*/#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>#include<string.h>#include<sys/stat.h>#include<fcntl.h>#include"camera.h"#include<stdlib.h>intserver_init(){intsock=socket(AF_INET,SOCK_STREAM,0);if(-1==sock){perror("socket");return-1;} intopt=1;setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt)); structsockaddr_ins_addr;memset(&s_addr,0,sizeof(s_addr));s_addr.sin_family=AF_INET;s_addr.sin_port=htons(8888);s_addr.sin_addr.s_addr=htonl(INADDR_ANY); intret=bind(sock,(structsockaddr*)&s_addr,sizeof(s_addr));if(ret==-1){perror("bind");gotoSTEMP;} ret=listen(sock,5);if(-1==ret){perror("listen");gotoSTEMP;} returnsock;STEMP:close(sock);return-1;}intmain(){unsignedintwidth;unsignedheight;unsignedintsize;unsignedintismjpeg;unsignedintindex;char*picbuf=malloc(1024*1024);charpiclen_buf[20];intfdTest;intret,count;width=320;height=240;intfd=camera_init("/dev/video0",width,height);if(-1==fd){perror("camera_init");return-1;}//ret=camera_start(fd);if(ret!=0){perror("camera_start");close(fd);return-1;}intsock=server_init();//服務器初始化流程if(-1==sock){perror("server_init");return-1;}printf("listen\n");structsockaddr_inc_addr;memset(&c_addr,0,sizeof(c_addr));socklen_tclen=sizeof(c_addr);intrws=accept(sock,(structsockaddr*)&c_addr,&clen);if(-1==rws){perror("accept");close(sock);return-1;}charpic[20]={0};charpic_len[20]={0};while(1){ret=camera_dqbuf(fd,(void*)picbuf,&size,&index);if(ret<0){continue;}ret=read(rws,pic,sizeof(pic));if(ret<0){perror("readpic");return-1;}if(!strncmp(pic,"pic",3));{sprintf(pic_len,"%d",size);ret=write(rws,pic_len,sizeof(pic_len));printf("%s\n",pic_len);if(ret<0) { perror("writepic_len"); return-1; } ret=write(rws,picbuf,size); if(ret<0) { perror("writepic"); return-1; }}ret=camera_eqbuf(fd,index);if(ret<0){return-1;}}ret=camera_stop(fd);if(ret<0){perror("camera_stop");close(fd);return-1;}ret=camera_exit(fd);if(ret<0){perror("camera_exit");//close(fd);return-1;}close(sock);close(fd);return0;}2.串口服務代碼#include<stdio.h>#include<sys/types.h>/*SeeNOTES*/#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>#include<stdlib.h>#include<unistd.h>#include<sys/stat.h>#include<fcntl.h>#include<termios.h>#include<string.h>#include<errno.h>#include<poll.h>#include<sys/ioctl.h>#include"serial.h"intmain(){intfd=serial_init("/dev/ttyATH0",115200);//初始化小車if(fd<0){perror("init_serial");return-1;} intsfd=socket(AF_INET,SOCK_STREAM,0);//socketif(sfd<0){perror("socket");return-1;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論