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

下載本文檔

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

文檔簡介

作業(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語言的相關知識,讓我們的實訓周內(nèi)容更加的充實。過此次的設計制作,使我們更加認識到了動手能力和理論知識的重要性,而理論與實踐的結(jié)合更是重中之重。當然,我們也深刻地認識到我們的不足,由于自身理論知識的欠缺和動手能力的不佳在工作中頻頻受阻,走了好多彎路,雖然在制作過程中不可避免地遇到很多問題,但是最后還是在老師以及同學的幫助下圓滿解決了這些問題,實現(xiàn)了整個系統(tǒng)設計與最后調(diào)試,相關指標達到預期的要求很好地完成了本次設計任務。

摘要 5Abstract: 6第1章任務及需求分析 71.1設計任務及目標 71.1.1.緒論 7第2章整體設計 102.1Linux 102.1.1了解Linux操作系統(tǒng) 102.1.2網(wǎng)絡編程常用函數(shù) 102.2服務器構架 112.2.1V4L2架構 112.2.2CS架構之客戶端編程步驟 112.2.3初始化CS架構之服務器編程步驟車 122.3職責分配 132.4小車功能描述 13總結(jié) 15參考文獻 16附錄 17摘要智能小車是一種能通過無線控制運動并可以搭載各種功能配件的機械,它具有制作成本低廉,電路結(jié)構簡單,程序調(diào)試方便等的優(yōu)點。由于智能小車具有較強的趣味性,智能小車深受機械愛好者以及高校學生們的喜愛。隨著科技的發(fā)展智能小車也被廣泛應用于各種玩具和其他產(chǎn)品的設計中,為中國玩具市場技術含量的缺乏進行一定彌補,實現(xiàn)經(jīng)濟收益,形成商業(yè)價值并豐富了人們的生活。本次試驗采用wifi模塊實現(xiàn)視頻圖像傳輸,使用QT客戶端和攝像頭的配合進行監(jiān)控控制,并采用STM32微處理器為核心芯片實現(xiàn)控制小車的前進、后退、停止、及左轉(zhuǎn)、右轉(zhuǎn)的功能。本次試驗主要體現(xiàn)出了多功能小車的智能模式,此智能系統(tǒng)的組成主要包括STM32控制器、電機驅(qū)動電路、無線路由器、攝像頭。小車前進過程中前端的攝像頭對周圍的環(huán)境進行監(jiān)測,同時把視頻信號傳回給QT客戶端。通過QT客戶端可以隨時控制小車行進方向,而且可以操作攝像頭隨意上下、左右轉(zhuǎn)動,擴大小車拍攝視野。經(jīng)實驗驗收測試,該智能小車系統(tǒng)反應快速,靈活,各項指標穩(wěn)定。關鍵詞:遠程圖像傳輸;客戶端開發(fā);網(wǎng)絡編程;STM32;無線控制Abstract:Theintelligentcarisakindofmachinethatcancontrolthemotionwirelesslyandcancarryvariousfunctionalparts.Ithastheadvantagesoflowproductioncost,simplecircuitstructureandconvenientprogramdebugging.Becauseofitsstronginterestingness,intelligentcarisdeeplylovedbymechanicalloversandcollegestudents.Withthedevelopmentofscienceandtechnology,smartcarhasbeenwidelyusedinthedesignofvarioustoysandotherproductstomakeupforthelackoftechnicalcontentinChina'stoymarket,realizeeconomicbenefits,formcommercialvalueandenrichpeople'slife.Inthisexperiment,wifimodulewasusedtorealizevideoandimagetransmission,QTclientandcamerawereusedformonitoringandcontrol,andSTM32microprocessorwasusedasthecorechiptorealizethefunctionofcontrollingtheforward,backward,stop,leftandrightturnofthecar.Thistestmainlyreflectstheintelligentmodeofthemulti-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.緒論所謂智能小車,主要指在普通汽車的基礎上增加了先進的傳感器(雷達、攝像)、控制器、執(zhí)行器等裝置,通過車載傳感系統(tǒng)和信息終端實現(xiàn)與人、車、路之間的智能信息交換。它集中地運用了計算機、傳感、信息、通信、導航、人工智能及自動控制等技術,是典型的高新技術綜合體。智實現(xiàn)在復雜環(huán)境背景下的控制運動,從而完成具有特定功能的機器人系統(tǒng)。而隨著智能化電器時代的到來,它們在為人們提供的舒適的生活環(huán)境的同時,也提高了制造智能化電器對于人才要求的門檻。智能小車是集成了多種高新技術,它不僅融合了電子、傳感器、計算機硬件、軟件等許多學科的知識,而且還涉及到當今許多前沿領域的技術,它是一個國家高科技技術水平的重要體現(xiàn)。通過建立起簡易智能小車的設計,引導人從理論走向?qū)嵺`,培養(yǎng)我們的動手能力,使我們在了解智能化電器的工作原理的基礎上,獲得完成整體項目的能力,并掌握了Stm32開發(fā)板的編程原理,為同學們進入ARM領域提供了基礎。另外,本次課程設計,使同學們了解自己的不足之處,從而使同學們有目標的提升自己的能力。1.1.2研究背景目前歐美等國對于智能汽車的定義主要為先進輔助駕駛系統(tǒng)(ADAS)、車載移動應用和無人駕駛技術,并在更大程度上與城市智能交通管所謂智能汽車,主要指在普通汽車的基礎上增加了先進的傳感器(雷達、攝像)、控制器、執(zhí)行器等裝置,通過車載傳感系統(tǒng)和信息終端實現(xiàn)與人、車、路之間的智能信息交換。目前歐美等國對于智能汽車的定義主要為先進輔助駕駛系統(tǒng)(ADAS)、車載移動應用和無人駕駛技術,并在理結(jié)合起所謂智能汽車,主要指在普通汽車的基礎上增加了先進的傳感器(雷達、攝像)、控制器來。基于安卓手機wifi技術的遙控小車有著廣大的潛在用戶,2014年11月數(shù)據(jù),Android占據(jù)中國智能手機操作系統(tǒng)市場81.5%。Android的系統(tǒng)內(nèi)核是基于網(wǎng)絡性性能超強的Linux,因此其網(wǎng)絡性能較其他系統(tǒng)有很大優(yōu)勢。能超強的Linux,因此其網(wǎng)絡性能較其他系統(tǒng)有很大優(yōu)勢。1.1.3智能小車設計構想智能車輛是集環(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é)構如圖1.1所示圖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服務器構架2.2.1V4L2架構1.攝像頭初始化Camera_init2.開始采集圖片Camera_start3.while(1){出隊一張圖片發(fā)送(長度)(內(nèi)容)入隊一張圖片}4.停止采集Camera_stop5.結(jié)束攝像頭Camera_exit2.2.2CS架構之客戶端編程步驟1.創(chuàng)建套接字、地址結(jié)構及其長度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é)構地址結(jié)構的長度2.2.3初始化CS架構之服務器編程步驟車1.創(chuàng)建套接字和地址結(jié)構及其長度,同客戶端2.綁定本機地址和端口(一般服務器使用)int

bind(int

sockfd,

(struct

sockaddr

*)&my_addr,

int

addrlen);參數(shù)intsockfdconststructsockaddr*addrsocklen_taddrlen意義流式套接字地址結(jié)構指針地址結(jié)構長度返回值: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é)構,一般設置NULL客戶端地址結(jié)構的長度,一般設置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這個客戶端,讓它顯示視頻。功能二:QT界面control_client的作用是控制小車移動,在這個客戶端點擊按鈕,信號就會通過網(wǎng)絡發(fā)送給control_server這個服務器。這時小車還不能動,還要通過串口通信serial把這個命令發(fā)送給STM32這個板,就可以產(chǎn)生直流電源控制小車四個輪子運動。

總結(jié)本設計主要解決了以WiFi路由版模塊為中樞,搭載攝像頭和小車的控制服務器,通過電腦QT客戶端,實現(xiàn)了小車的遠程WIFI控制以及遠程的WiFi圖像傳輸。技術指標達到設計要求的有:小車的前進,后退,左轉(zhuǎn),右轉(zhuǎn),停止的控制,攝像頭圖像傳輸。沒達到要求的有:小車的控制依然有些許遲鈍以及不靈活,攝像頭傳輸圖像模糊。主要完成工作:(1)系統(tǒng)功能設計包括小車行動的控制,攝像頭圖像的傳輸。(2)系統(tǒng)軟件設計由QT客戶端和服務器組成。本次設計通過網(wǎng)絡架構程序,并利用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]于連國,李偉,王妍瑋.基于單片機的智能小車設計[J]林業(yè)機械與木工設備.2011.vol.20,NO.4:39-41[5]周學毛.新編C語言程序設計教程.西安電子科技大學出版社.2004.11

附錄附錄1、系統(tǒng)框圖或大的流程圖附錄2、系統(tǒng)截圖或照片附錄3、主要源代碼攝像頭服務器#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<string.h>#include<errno.h>#include<fcntl.h>#include<sys/mman.h>#include<sys/ioctl.h>#include<linux/videodev2.h>#define REQBUFS_COUNT 4structcam_buf{ void*start; size_tlength;};structv4l2_requestbuffersreqbufs;structcam_bufbufs[REQBUFS_COUNT];intcamera_init(char*devpath,unsignedintwidth,unsignedintheight){ inti; intfd; intret; structv4l2_buffervbuf; structv4l2_formatformat; structv4l2_capabilitycapability; fd=open(devpath,O_RDWR); if(fd==-1){ perror("camera->init"); return-1; } ret=ioctl(fd,VIDIOC_QUERYCAP,&capability); if(ret==-1){ perror("camera->init"); return-1; } if(!(capability.capabilities&V4L2_CAP_VIDEO_CAPTURE)){ fprintf(stderr,"camera->init:devicecannotsupportV4L2_CAP_VIDEO_CAPTURE\n"); close(fd); return-1; } if(!(capability.capabilities&V4L2_CAP_STREAMING)){ fprintf(stderr,"camera->init:devicecannotsupportV4L2_CAP_STREAMING\n"); close(fd); return-1; } memset(&format,0,sizeof(format)); format.type=V4L2_BUF_TYPE_VIDEO_CAPTURE; format.fmt.pix.pixelformat=V4L2_PIX_FMT_MJPEG; format.fmt.pix.width=width; format.fmt.pix.height=height; format.fmt.pix.field=V4L2_FIELD_INTERLACED; ret=ioctl(fd,VIDIOC_S_FMT,&format); if(ret==-1){ perror("camerainit"); return-1; } memset(&reqbufs,0,sizeof(structv4l2_requestbuffers)); reqbufs.count =REQBUFS_COUNT; reqbufs.type =V4L2_BUF_TYPE_VIDEO_CAPTURE; reqbufs.memory =V4L2_MEMORY_MMAP; ret=ioctl(fd,VIDIOC_REQBUFS,&reqbufs); if(ret==-1){ perror("camerainit"); close(fd); return-1; } for(i=0;i<reqbufs.count;i++) { memset(&vbuf,0,sizeof(structv4l2_buffer)); vbuf.type=V4L2_BUF_TYPE_VIDEO_CAPTURE; vbuf.memory=V4L2_MEMORY_MMAP; vbuf.index=i; ret=ioctl(fd,VIDIOC_QUERYBUF,&vbuf); if(ret==-1){ perror("camerainit"); close(fd); return-1; } bufs[i].length=vbuf.length; bufs[i].start=mmap(NULL,vbuf.length,PROT_READ|PROT_WRITE,MAP_SHARED,fd,vbuf.m.offset); if(bufs[i].start==MAP_FAILED) { perror("camerainit"); close(fd); return-1; } vbuf.type=V4L2_BUF_TYPE_VIDEO_CAPTURE; vbuf.memory=V4L2_MEMORY_MMAP; ret=ioctl(fd,VIDIOC_QBUF,&vbuf); if(ret==-1){ perror("camerainit"); close(fd); return-1; } } returnfd;}intcamera_start(intfd){ intret; enumv4l2_buf_typetype=V4L2_BUF_TYPE_VIDEO_CAPTURE; ret=ioctl(fd,VIDIOC_STREAMON,&type); if(ret==-1){ perror("camera->start"); return-1; } fprintf(stdout,"camera->start:startcapture\n"); return0;}intcamera_dqbuf(intfd,void*buf,unsignedint*size,unsignedint*index){ intret; fd_setfds; structtimevaltimeout; structv4l2_buffervbuf; while(1){ FD_ZERO(&fds); FD_SET(fd,&fds); timeout.tv_sec=2; timeout.tv_usec=0; ret=select(fd+1,&fds,NULL,NULL,&timeout); if(ret==-1){ perror("camera->dqbuf"); if(errno==EINTR) continue; else return-1; }elseif(ret==0){ fprintf(stderr,"camera->dqbuf:dequeuebuffertimeout\n"); continue; }else{ vbuf.ty

溫馨提示

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

最新文檔

評論

0/150

提交評論