Python深度學習及智能車競賽實踐 課件匯總 第0-5章 緒論、Python基本語法元素和數據類-組合數據類型_第1頁
Python深度學習及智能車競賽實踐 課件匯總 第0-5章 緒論、Python基本語法元素和數據類-組合數據類型_第2頁
Python深度學習及智能車競賽實踐 課件匯總 第0-5章 緒論、Python基本語法元素和數據類-組合數據類型_第3頁
Python深度學習及智能車競賽實踐 課件匯總 第0-5章 緒論、Python基本語法元素和數據類-組合數據類型_第4頁
Python深度學習及智能車競賽實踐 課件匯總 第0-5章 緒論、Python基本語法元素和數據類-組合數據類型_第5頁
已閱讀5頁,還剩404頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Python深度學習及智能車競賽實踐課程內容及學習要求簡介課程教學目標第2頁基于Python養(yǎng)成計算思維,學會Python編程求解問題;能用Python做數據分析,完成深度學習數據預處理;掌握深度學習基礎理論及實踐方法,能設計深度學習模型解決工程問題;能創(chuàng)新性完成智能車競賽中圖像處理和深度學習相關任務(拓展內容)。課程教材推薦第一單元第二單元第三單元第四單元1~5章Python基礎知識體系:Python基本語法與數據類型、程序結構、函數和類、Python組合數據類型基于Python養(yǎng)成計算思維能用Python做數據分析6~7章Python文件處理及數據分析,OS庫、ZipFile庫、json庫、PIL庫和OpenCV庫,Python計算生態(tài)與機器學習庫10~11章智能汽車競賽圖像處理和深度學習相關任務:智能車自動巡航任務、智能車目標檢測CNN模型設計與及部署等8~9章深度學習基礎及實踐:神經網絡基本概念、單層感知器、全連接神經網絡和卷積神經網絡理論及實踐學懂AI:掌握深度學習理論及實踐方法創(chuàng)新性解決智能車競賽中圖像處理和深度學習相關任務課程教學內容Python基本語法及數據類型程序控制結構函數和類組合數據類型ReLU激活函數智能車差速轉向智能車電池電壓檢測智能車自動循跡類創(chuàng)建單層感知器模型設計用類創(chuàng)建智能車自動循跡字典IIIIVVIVIIIIIPython機器學習庫線性回歸方法

智能車行駛路徑擬合

loss和acc曲線繪制深度學習方法DNN和CNN實踐

基于DNN的車輛識別基于CNN的斑馬線檢測知識點逐步深入

課程知識點案例和作業(yè)難度逐步提高

智能車競賽凝練教學案例V文件及數據格式化

賽車道自動繪制、車輛圖片數據集處理、車輛圖片json文件處理VIII數據采集、處理CNN模型基于競賽場景的智能車自動巡航、目標檢測任務完成課程與競賽融合第6頁循序漸進,先打好基礎,再逐步提高;理論與實踐緊密結合,不能只聽視頻講解,一定要自己動手編寫、調試程序,到課程后期能自己搭建深度學習模型;建議學有余力同學報名參加全國大學生智能汽車競賽百度智慧交通創(chuàng)意賽和完全模型組競賽,用所學知識解決實際問題。課程學習方法教育部倡導的大學生A類科技競賽;中國高等教育學會將其列為含金量最高的大學生競賽之一;已成功舉辦十八屆,比賽每年吸引了包括清華、上交、復旦、北航等500多所高校參加。全國大學生智能汽車競賽百度智慧交通創(chuàng)意組百度完全模型競速組第一章緒論Python深度學習及智能車競賽實踐010203人工智能的發(fā)展及基本概念智能汽車及全國大學生智能汽車競賽程序設計語言及Python語言簡介目錄第10頁010203人工智能的發(fā)展及基本概念智能汽車及全國大學生智能汽車競賽程序設計語言及Python語言簡介目錄第11頁第12頁人工智能概念首次于1956年夏由麥肯錫(MCKINSEY)、明斯基(MINSKY)、羅切斯特(ROCHESTER)和香農(SHANNON)等科學家在美國達特茅斯學院(DartmouthCollege)首次提出,開會研討“如何用機器模擬人的智能”,這標志著人工智能學科的誕生。01—人工智能的發(fā)展及基本概念01—人工智能的發(fā)展及基本概念人工智能的曲折發(fā)展歷程圖靈測試195019601970198019902000201020202030達特茅斯會議感知機SOM自組織映射網絡Hopfield映射網絡BP神經網絡IBM深藍戰(zhàn)勝國際象棋冠軍深度學習多層表征學習Google大腦AlphaGo擊敗李世石、柯潔AI助力疫情防控、碳中和邏輯推理專家系統(tǒng)機器學習深度學習大數據受限于計算機算力專家系統(tǒng)應用領域狹窄等問題計算驅動知識驅動數據驅動ChatGPT文心一言知識圖譜01—人工智能的發(fā)展及基本概念中國人工智能研究的發(fā)展歷程曲折認識艱難起步、迎來曙光快速發(fā)展國家戰(zhàn)略1980年代初期國家形式動蕩、偽科學觀念盛行1978年全國科學大會召開,1981年中國人工智能學會成立,人工智能項目開始納入國家科技計劃1986年智能計算系統(tǒng)、智能機器人和智能信息處理等重大項目列入“國家863計劃”1993年智能控制和智能自動化等項目開始陸續(xù)列入國家科技攀登計劃2009年中國人工智能學會向國家學位委員會和國家教育部提出設立“智能科學與技術”一級學科2016年國務院發(fā)布《中國制造2025》;國家發(fā)改委和科技部等4部門聯(lián)合發(fā)布《“互聯(lián)網”+人工智能”三年行動實施方案》2017年2017年國務院印發(fā)《新一代人工智能發(fā)展規(guī)劃的通知》;

2018年教育部印發(fā)《高等學校人工智能創(chuàng)新行動計劃》國家十三五規(guī)劃:面向2030年,確定了15個重大項目的立項建議,醞釀“人工智能2.0”推動中國高新技術發(fā)展及產業(yè)化水平1950年代初期二十大報告:構建新一代信息技術、人工智能等新增長引擎符號主義學派,人工智能早期學派,又稱為邏輯主義、心理學派或計算機學派,其原理主要為物理符號系統(tǒng)假設和有限合理性原理,代表性成果有專家系統(tǒng)和推理機。連接主義學派,又稱仿生學派或生理學派,基于神經網絡和網絡間的連接機制與學習算法的智能模擬方法。強調智能活動是由大量簡單單元通過復雜連接后并行運行的結果。代表性成果有感知器、反向傳播網絡、卷積神經網絡等。行為主義學派,又稱進化主義或控制論學派,是一種基于“感知—行動”的行為智能模擬方法。行為主義認為智能取決于感知和行為,取決于對外界復雜環(huán)境的適應,而不是表示和推理。代表性成果有六足行走機器人等。抽象思維形象思維感知思維求同存異、相互融合01—人工智能的發(fā)展及基本概念人工智能是一種廣泛的概念,指的是使計算機系統(tǒng)具備模擬人類智能的能力,以便解決復雜問題或執(zhí)行各種任務。深度學習人工智能機器學習深度學習是通過構建和訓練多層神經網絡來實現(xiàn)對數據的學習和理解,深度學習沒有超出機器學習的范疇。機器學習是通過讓計算機從歷史經驗中學習以改善系統(tǒng)自身性能的方式來達成這個目標,一般來說就是基于數據的訓練。01—人工智能的發(fā)展及基本概念010203人工智能的發(fā)展及基本概念智能汽車及全國大學生智能汽車競賽程序設計語言及Python語言簡介目錄第17頁02—智能汽車及全國大學生智能汽車競賽汽車智能駕駛系統(tǒng)目標物體識別攝像頭激光雷達超聲波雷達毫米波雷達V2X4G/5G車聯(lián)網信息GPS/北斗INS車姿信息高精度定位、地圖多源傳感器數據融合路徑規(guī)劃行為決策運動規(guī)劃車輛狀態(tài)動力學模型閉環(huán)控制車輛穩(wěn)定性冗余控制橫向和縱向控制器轉向制動加速減速其他環(huán)境感知決策規(guī)劃控制執(zhí)行全國大學生智能汽車競賽是教育部倡導的大學生科技A類競賽中國高等教育學會將其列為含金量最高的大學生競賽之一比賽每年吸引了包括清華、上交、復旦、北航等500多所高校參加02—智能汽車及全國大學生智能汽車競賽全國大學生智能汽車競賽至今已成功舉辦十八屆,參賽學生總規(guī)模超過35萬人次,學生收獲和競賽聲譽保持高位。賽段時間進程線上資格賽1~2月線上資格賽報名3月線上賽評測入口開放6月初線上賽評測入口關閉,線上賽結束6月上旬線上賽成績公布車模制作3-6月核心硬件發(fā)放制作車模,備戰(zhàn)線下賽線下分區(qū)賽6月上旬線下賽啟動報名6月底線下賽參賽隊伍確定7月線下分區(qū)賽8月初線下分區(qū)賽成績公布全國總決賽8月底全國總決賽02—智能汽車及全國大學生智能汽車競賽賽事時間大致安排全國大學生智能汽車競賽創(chuàng)意組中的一個組別;比賽全程使用百度飛槳深度學習框架;含線上賽和線下賽;在無人的環(huán)境下,實現(xiàn)數據采集、數據模型構建、自主識別賽道、無人駕駛驗證等多種技術融合的場景。02—智能汽車及全國大學生智能汽車競賽百度智慧交通組介紹02—智能汽車及全國大學生智能汽車競賽賽事規(guī)則要點利用指定的數據集,在統(tǒng)一的計算資源下,創(chuàng)建能夠識別交通標志狀態(tài)及其具體位置和類別的深度學習模型;不限制深度學習任務,推薦使用PaddleDetection開發(fā)套件;提供基線教程baseline,輕松上手:https:///aistudio/projectdetail/3507517?contributionType=1&shared=1;根據精度(F1-Score)和FPS進行線上打榜排名,占總成績10%百度智慧交通組線上賽小車從起點出發(fā),利用前置攝像頭獲得圖像,沿著車道線巡航一周,要求不出界,不超時(5min)即完成巡航任務;設計AI模型識別沿途地面圖標對應的任務,調用側面攝像頭識別任務類型,通過電機和舵機動作完成擊打、舉旗、交換貨物等多個任務。02—智能汽車及全國大學生智能汽車競賽百度智慧交通組線下賽賽事鼓勵DIY,盡情發(fā)揮你的創(chuàng)意02—智能汽車及全國大學生智能汽車競賽百度智慧交通組線下賽車模全國大學生智能汽車競賽競速組中的一個組別;賽事設計更符合真實自動駕駛場景,具有更加復雜的機器視覺處理和模型車運動控制任務;含線上賽和線下賽,要求使用統(tǒng)一指定的競賽車模套件、微控制器平臺,自主構思車模控制方案進行系統(tǒng)設計,同時,將AI視覺模型引入傳統(tǒng)控制算法中,在賽道上完成相應的任務。02—智能汽車及全國大學生智能汽車競賽百度完全模型組組介紹賽事規(guī)則要點基于給定數據集,在統(tǒng)一的計算資源下,設計識別道路車道線的深度學習模型;數據集:16000張可直接用于訓練的車載影像,圖像標注為四類:背景、虛/實車道線、斑馬線;該深度學習任務屬于語義分割,使用PaddleSeg開發(fā)套件,提供基線教程baseline,輕松上手;根據精度(mIoU)和FPS進行線上打榜排名,占總成績10%。語義分割結果示例:02—智能汽車及全國大學生智能汽車競賽百度完全模型組線上賽小車從起點出發(fā),利用前置攝像頭獲得信息,控制車輛沿車道線巡航兩周;在巡航過程中的相應點位,使用目標檢測模型識別地面圖標,明確該點位需要完成的任務,控制車輛完成正確出入加油站、躲避障礙物、繞過施工區(qū)等任務,完成相應任務獲得獎勵時間。02—智能汽車及全國大學生智能汽車競賽百度完全模型組線上賽賽事鼓勵DIY車殼,最帥車殼等你創(chuàng)作I車模實拍I車模機械結構爆炸圖02—智能汽車及全國大學生智能汽車競賽百度完全模型組線下賽車模010203人工智能的發(fā)展及基本概念智能汽車及全國大學生智能汽車競賽程序設計語言及Python語言簡介目錄第29頁程序設計語言是用于書寫計算機程序的語言按照特定規(guī)則組織計算機指令,使計算機能夠自動進行各種運算處理;按照程序設計語言規(guī)則組織起來的一組計算機指令稱為計算機程序。03—程序設計語言及Python語言簡介程序設計語言的定義機器語言匯編語言高級語言03—程序設計語言及Python語言簡介程序設計語言類型機器語言機器語言是一種二進制語言,它直接使用二進制代碼表達指令,是計算機硬件可以直接識別和執(zhí)行的程序設計語言;例如:執(zhí)行數字2和3的加法,16位計算機上的機器指令為:1101001000111011,不同計算機結構的機器指令會有所不同;可讀性差,可移植性差,編程難度大。03—程序設計語言及Python語言簡介程序設計語言類型匯編語言使用助記符與機器語言中的指令進行一一對應,在計算機發(fā)展早期幫助程序員提高編程效率;例如:執(zhí)行數字2和3的加法,匯編語言代碼為:add2,3,result,運算結果寫入result。機器語言和匯編語言直接操作計算機硬件,稱為低級語言。03—程序設計語言及Python語言簡介程序設計語言類型高級語言是接近自然語言的一種計算機程序設計語言,結合了數學表達式和英語符號)更容易地描述計算問題并利用計算機解決計算問題;

例如:執(zhí)行數字2和3加法的高級語言代碼為:result=2+3。03—程序設計語言及Python語言簡介程序設計語言類型計算機執(zhí)行源程序的兩種方式:編譯和解釋

-源代碼:采用某種編程語言編寫的計算機程序,人類可讀

例如:result=2+3

-目標代碼:計算機可直接執(zhí)行,人類不可讀(專家除外)

例如:110100100011101103—程序設計語言及Python語言簡介高級編程語言的執(zhí)行方式執(zhí)行編譯過程的程序叫作編譯器源代碼目標代碼編譯器程序輸入結果輸出程序執(zhí)行03—程序設計語言及Python語言簡介編譯:將源代碼一次性轉換成目標代碼的過程高級編程語言的執(zhí)行方式解釋:將源代碼逐條轉換成目標代碼同時逐條運行的過程。執(zhí)行解釋過程的程序叫作解釋器源代碼解釋器程序輸入結果輸出03—程序設計語言及Python語言簡介高級編程語言的執(zhí)行方式根據執(zhí)行方式不同,編程語言分為兩類

-靜態(tài)語言:使用編譯執(zhí)行的編程語言 C/C++語言、Java語言

-

腳本語言:使用解釋執(zhí)行的編程語言 Python語言、JavaScript語言、PHP語言03—程序設計語言及Python語言簡介高級編程語言的執(zhí)行方式執(zhí)行方式不同,優(yōu)勢各有不同

-靜態(tài)語言:編譯器一次性生成目標代碼,優(yōu)化更充分

程序運行速度更快

-

腳本語言:執(zhí)行程序時需要源代碼,維護更靈活

源代碼方便維護、適用于跨多個操作系統(tǒng)平臺03—程序設計語言及Python語言簡介高級編程語言的執(zhí)行方式GuidovanRossumPython語言創(chuàng)立者,1989為了打發(fā)圣誕節(jié)時間而設想開發(fā)的,誕生于1990年,正式的發(fā)布在1991年。2002年,Python2.x2008年,Python3.x03—程序設計語言及Python語言簡介Python語言的誕生Python的設計混合了傳統(tǒng)語言的軟件工程的特點和腳本語言的易用性:開源、易于維護可移植易于使用、簡單優(yōu)雅廣泛的標準庫、功能強大可擴展、可嵌入…工欲善其事、必先利其器03—程序設計語言及Python語言簡介Python語言的優(yōu)勢運行速度慢Python是解釋型語言,運行時翻譯為機器碼比較耗時,而C語言是運行前直接編譯成CPU能執(zhí)行的機器碼。代碼不能加密解釋型語言發(fā)布程序就是發(fā)布源代碼,而C語言是把編譯后的機器碼發(fā)布出去,從機器碼反推出C代碼是不可能的。03—程序設計語言及Python語言簡介Python語言的缺點常規(guī)軟件開發(fā)支持函數式編程和OOP面向對象編程,適用于常規(guī)的軟件開發(fā)、腳本編寫、網絡編程科學計算隨著NumPy,SciPy,Matplotlib等眾多庫的開發(fā),Python非常適合于做科學計算、繪制高質量的2D和3D圖像WEB開發(fā)基于Python的Web開發(fā)框架很多,如Django,F(xiàn)lask網絡爬蟲大數據行業(yè)獲取數據的核心工具。Python是編寫網絡爬蟲的主流編程語言,Scrapy爬蟲框架應用非常廣泛數據分析對數據進行清洗、去重、規(guī)格化和針對性的分析是大數據行業(yè)的基石。Python是數據分析的主流語言之一人工智能Python在人工智能大范疇領域內的機器學習、神經網絡、深度學習等方面都是主流的編程語言,得到廣泛的支持和應用03—程序設計語言及Python語言簡介Python典型應用更高級別的3.0系列不兼容早期2.0系列2008年至今,版本更迭帶來大量庫函數的升級替換,Python語言的版本更迭痛苦且漫長Python3.x系列已經成為主流03—程序設計語言及Python語言簡介Python語言的版本更迭只有一行代碼

第一行的“>>>”是Python語言運行環(huán)境的提示符第二行是Python語句的執(zhí)行結果>>>print("HelloWorld")HelloWorld03—程序設計語言及Python語言簡介Python語言的的Hello程序一般來說,同樣功能的程序,Python語言實現(xiàn)的代碼行數僅相當于C語言的1/5至1/10;簡潔程度取決于程序的復雜度和規(guī)模。#include<stdio.h>intmain(void){printf("HelloWorld\n");

return0;}03—程序設計語言及Python語言簡介C語言的Hello程序Python支持中文等非西文字符的直接使用:>>>print(“全國大學生智能汽車競賽?!?全國大學生智能汽車競賽。>>>print(“百度智慧交通創(chuàng)意賽!”)百度智慧交通創(chuàng)意賽!03—程序設計語言及Python語言簡介Python處理中文靈活下載并安裝IDLE,網址:

/downloads/

根據操作系統(tǒng)不同選擇不同版本下載相應的Python3.0系列版本程序03—程序設計語言及Python語言簡介Python集成開發(fā)環(huán)境IDLEIDLE中集成有:?編輯器:編輯和修改程序?解釋器:執(zhí)行程序?程序調試:查找程序03—程序設計語言及Python語言簡介Python集成開發(fā)環(huán)境IDLEIDLE中有兩種程序設計運行方式:

交互式和文件式03—程序設計語言及Python語言簡介啟動IDLE交互式指Python解釋器即時響應用戶輸入的每條代碼,給出輸出結果;對每個輸入語句即時運行結果,適合語法練習。03—程序設計語言及Python語言簡介IDLE交互式也稱為批量式,打開IDLE,按鍵Ctrl+N打開一個新窗口,輸入語句并保存,使用快捷鍵F5即可運行該程序,或者在IDLE菜單欄中選擇相應的命令;批量執(zhí)行一組語句并運行結果,編程的主要方式。03—程序設計語言及Python語言簡介IDLE文件式交互式:>>>velocity=80>>>time=2>>>mileage=velocity*time>>>print(mileage)16003—程序設計語言及Python語言簡介實例:汽車行駛里程的計算文件式(打開IDLE,新建文件):運行結果:160velocity=80time=2mileage=velocity*timeprint(mileage)03—程序設計語言及Python語言簡介實例:汽車行駛里程的計算PyCharm:官方下載地址/pycharm/download/PyCharm是一種PythonIDE,帶有一整套可以幫助用戶在使用Python語言開發(fā)時提高效率的工具,比如調試、語法高亮、Project管理、代碼跳轉、智能提示、自動完成、單元測試、版本控制。此外,該IDE提供了一些高級功能,以用于支持Django框架下的專業(yè)Web開發(fā)。03—程序設計語言及Python語言簡介其他的PYTHON開發(fā)環(huán)境Anaconda:官方下載地址/download/Anaconda的下載文件比較大,集成了200+的科學包,進行Python的高級使用(爬蟲,大數據分析,AI...)時可以直接使用。anaconda是在conda的基礎上發(fā)展的,conda(包管理器)可以很好的安裝和管理這些包,包括安裝、卸載和更新包。03—程序設計語言及Python語言簡介其他的PYTHON開發(fā)環(huán)境實例1.1正方形面積的計算實例1.2人名對話實例1.3求數的平方實例1.4同心圓的繪制03—程序設計語言及Python語言簡介PYTHON小程序示例交互式:>>>length=10

#正方形邊長>>>

area=length*length

#求正方形面積>>>

print(area)

#輸出正方形面積值10003—程序設計語言及Python語言簡介實例1.1正方形面積的計算文件式(打開IDLE,新建文件):運行結果:100#實例1.1正方形面積計算,文件模式代碼length=10

#正方形邊長area=length*length

#求正方形面積print(area)

#輸出正方形面積值03—程序設計語言及Python語言簡介實例1.1正方形面積的計算交互式:>>>name=input("請輸入姓名:")請輸入姓名:孔明

>>>print("{}同學,選修該課程,學會Python編程".format(name))

孔明同學,選修該課程,學會Python編程>>>print("{}同學,選修該課程,能用Python做數據分析".format(name))孔明同學,選修該課程,能用Python做數據分析>>>print("{}同學,選修該課程,學懂AI".format(name))孔明同學,選修該課程,學懂AI03—程序設計語言及Python語言簡介實例1.2人名對話numbers=[1,2,3,4,5]

#列表數據squared_numbers=[num**2fornuminnumbers]

#遍歷列表中每個元素求平方print(squared_numbers)

#輸出求平方后的列表03—程序設計語言及Python語言簡介文件式:實例1.3求數的平方importturtle#引用turtle庫turtle.circle(50)

#繪制半徑為50像素的圓turtle.penup()

#抬起畫筆,移動不劃線turtle.goto(0,-50)

#畫筆移到(0,-50)像素turtle.pendown()

#放下畫筆turtle.circle(100)

#繪制半徑為100像素的圓turtle.penup()

#抬起畫筆,移動不劃線turtle.goto(0,-100)#畫筆移到(0,-100)像素turtle.pendown()

#放下畫筆turtle.circle(150)

#繪制半徑為150像素的圓03—程序設計語言及Python語言簡介實例1.4同心圓的繪制本章總結了解人工智能基本概念及發(fā)展;了解智能汽車及全國大學生智能汽車競賽;高級程序設計語言的編譯和解釋執(zhí)行方式;了解PYTHON的IDLE集成開發(fā)環(huán)境應用;體會python編寫簡單小程序。第二章Python基本語法元素和數據類型Python深度學習及智能車競賽實踐010203程序基本設計方法python基本語法結構python基本數據類型目錄第65頁010203程序基本設計方法python基本語法結構python基本數據類型目錄第66頁第67頁計算機編程求解問題的過程分析問題,抽象內容之間的交互關系;設計利用計算機求解問題的確定性方法(IPO);編寫、調試、測試程序;

這是從抽象問題到解決問題的完整過程。01—程序基本設計方法第68頁程序的基本設計方法I:Input輸入數據,程序的輸入P:Process處理數據,程序的主要邏輯O:Output輸出數據,程序的輸出

—IPO程序設計方法01—程序基本設計方法第69頁理解IPOI-程序的輸入——文件輸入、網絡輸入、控制臺輸入、交互界面輸入、內部參數輸入;

輸入是一個程序的開始

O-程序的輸出

——控制臺輸出、圖形輸出、文件輸出、網絡輸出、操作系統(tǒng)內部變量輸出等;

輸出是程序展示運算結果的方式

P-處理方法

——

處理是程序對輸入數據進行計算產生輸出結果的過程,處理方法統(tǒng)稱為算法,它是程序最重要的部分;算法是一個程序的靈魂01—程序基本設計方法第70頁激活函數(ActivationFunction)是一種用于人工神經網絡中的函數,旨在實現(xiàn)神經網絡模型的非線性輸出。

實例2.1:RELU激活函數IPO程序設計方法01—程序基本設計方法第71頁問題分析:劃分邊界

輸入:數值x;

處理:算法

f(x);

輸出:x或0

實例2.1:RELU激活函數設計程序IPO程序設計方法01—程序基本設計方法第72頁IPO程序設計方法在全國大學生智能汽車競賽智慧交通創(chuàng)意賽中,可以通過深度學習模型得到智能車轉角預測值,這個值的大小是在[-1,1]之間,大于0表示右轉彎,小于0表示左轉彎。智能車轉向是可以通過左右輪差速實現(xiàn)轉向如需要右轉彎,右輪減速,左輪速度不變;如需要左轉彎,左輪減速,右輪速度不變。實例2.2:智能車差速轉向01—程序基本設計方法第73頁問題分析:劃分邊界

輸入:車輪直行速度speed,深度學習模型得到的歸一化轉向角度angle,調節(jié)系數

kx;

處理:算法f(x);

輸出:左、右輪速度。IPO程序設計方法實例2.2:智能車差速轉向01—程序基本設計方法第74頁問題分析:劃分邊界

輸入:speed、angle、kx;

處理:算法f(x);

輸出:左、右輪速度。問題:如何利用Python程序實現(xiàn)智能車差速轉向控制?IPO程序設計方法實例2.2:智能車差速轉向01—程序基本設計方法第75頁#實例2.2Steer.py智能車差速轉向speed=20#設定車輪直線行駛速度kx=0.85

#調節(jié)參數left_wheel=speedright_wheel=speedangle=eval(input("請輸入歸一化后的角度:"))if0<angle<=1:#右轉向right_wheel=(1-angle*kx)*speed

print("right_speed:",right_wheel,"left_speed:",left_wheel)elif

-1<=angle<=0:#左轉向left_wheel=(1-abs(angle*kx))*speed

print("right_speed:",right_wheel,"left_speed:",left_wheel)else:

print("輸入轉角信息不是歸一化數據")IPO程序設計方法01—程序基本設計方法第76頁程序運行和測試使用IDLE打開文件,按F5運行(推薦)輸入數值,觀察輸出或者:在系統(tǒng)命令行運行如下命令(需要進入程序所在目錄):D:\pycodes\2\python2.2steer.py請輸入歸一化后的角度:01—程序基本設計方法010203程序基本設計方法python基本語法結構python基本數據類型目錄第77頁?注釋:comment?縮進:indent?標識符:identifier?常量:constant?變量:variable?表達式:expression?輸入:input?輸出:output?分支:Selection02—Python基本語法元素注釋:用于提高代碼可讀性的輔助性文字,不被執(zhí)行#實例2.2Steer.py智能車差速轉向speed=20#設定車輪直線行駛速度kx=0.85

#調節(jié)參數left_wheel=speedright_wheel=speedangle=eval(input("請輸入歸一化后的角度:"))if0<angle<=1:#右轉向right_wheel=(1-angle*kx)*speedprint("right_speed:",right_wheel,"left_speed:",left_wheel)elif-1<=angle<=0:#左轉向left_wheel=(1-abs(angle*kx))*speedprint("right_speed:",right_wheel,"left_speed:",left_wheel)else:print("輸入轉角信息不是歸一化數據")-單行注釋:以#開頭,其后內容為注釋02—Python基本語法元素注釋:用于提高代碼可讀性的輔助性文字,不被執(zhí)行'''實例2.2Steer.py智能車差速轉向本實例用于全國大學生智能汽車競賽'''left_wheel=speedright_wheel=speedangle=eval(input("請輸入歸一化后的角度:"))if0<angle<=1:

passelif-1<=angle<=0:passelse:

pass-

多行注釋:以'''開頭和結尾

02—Python基本語法元素#實例2.2Steer.py智能車差速轉向speed=20#設定車輪直線行駛速度kx=0.85#調節(jié)參數left_wheel=speedright_wheel=speedangle=eval(input("請輸入歸一化后的角度:"))if0<angle<=1:

right_wheel=(1-angle*kx)*speedprint("right_speed:",right_wheel,"left_speed:",left_wheel)elif-1<=angle<=0:

left_wheel=(1-abs(angle*kx))*speedprint("right_speed:",right_wheel,"left_speed:",left_wheel)else:

print("輸入轉角信息不是歸一化數據")縮進:一行代碼開始前的空白區(qū)域,表達程序的格式框架02—Python基本語法元素#實例2.2Steer.py智能車差速轉向speed=20#設定車輪直線行駛速度kx=0.85#調節(jié)參數left_wheel=speedright_wheel=speedangle=eval(input("請輸入歸一化后的角度:"))if-1<=angle<=1:if0<angle<=1:

right_wheel=(1-angle*kx)*speedprint("right_speed:",right_wheel,"left_speed:",left_wheel)else:

left_wheel=(1-abs(angle*kx))*speedprint("right_speed:",right_wheel,"left_speed:",left_wheel)else:

print("輸入轉角信息不是歸一化數據")多層縮進:表示程序語句多層從屬關系02—Python基本語法元素縮進表達程序的格式框架-嚴格明確:縮進是語法的一部分,縮進不正確程序運行錯誤-

所屬關系:表達代碼間包含和層次關系的唯一手段-

長度一致:程序內一致即可,一般用4個空格或1個TAB縮進:02—Python基本語法元素變量是保存和表示數據值的一種語法元素,在程序中十分常見。變量的值是可以改變的,能夠通過賦值(使用“=”

表達)方式被修改,例如:speed=20kx=0.85left_wheel=speedright_wheel=speed變量:02—Python基本語法元素用來保存和表示數據的占位符號-變量采用標識符(名字)來表示,關聯(lián)標識符的過程叫命名

“speed“是變量名字-

可以使用等號(=)給變量賦值或修改值,=被稱為賦值符號

angle

=0.5#給變量angle賦值0.5變量:02—Python基本語法元素關聯(lián)標識符的過程-命名規(guī)則:大小寫字母、數字、下劃線和中文等字符及組合

如:right_wheel,Python_Great,這是門Python好課-

注意事項:大小寫敏感、首字符不能是數字、不與保留字相同

Right_wheel和right_wheel是不同變量,123Python是不合法的命名:02—Python基本語法元素#實例2.2Steer.py智能車差速轉向speed=20#設定車輪直線行駛速度kx=0.85

#調節(jié)參數left_wheel=speedright_wheel=speedangle=eval(input("請輸入歸一化后的角度:"))if0<angle<=1:#右轉向

right_wheel=(1-angle*kx)*speedprint("right_speed:",right_wheel,"left_speed:",left_wheel)elif-1<=angle<=0:#左轉向

left_wheel=(1-abs(angle*kx))*speedprint("right_speed:",right_wheel,"left_speed:",left_wheel)else:print("輸入轉角信息不是歸一化數據")命名:程序中用于保存和表示數據的占位符號02—Python基本語法元素保留字:被編程語言內部定義并保留使用的標識符-Python語言有35個保留字(也叫關鍵字)

if,elif,else,in……-

保留字是編程語言的基本單詞,大小寫敏感

if

是保留字,If

是變量02—Python基本語法元素andelifimportraiseglobalaselseinreturnnonlocalassertexceptistryTruebreakfinallylambdawhileFalseclassfornotwithNonecontinuefromoryieldasyncdefifpassdelawait(27/35)保留字:被編程語言內部定義并保留使用的標識符02—Python基本語法元素

Python語言中,=表示“賦值”,即將等號右側的值計算后將結果值賦給左側變量,包含“=”

的語句稱為“賦值語句”;同步賦值語句:同時給多個變量賦值

<變量1>,…,<變量N>=<表達式1>,…,<表達式N>

如:a,b=3,5賦值語句語句元素:02—Python基本語法元素例:將變量x和y交換采用單個賦值,需要3行語句:即通過一個臨時變量t緩存x的原始值,然后將y值賦給x,再將x的原始值通過t賦值給y。采用同步賦值語句,僅需要一行代碼:賦值語句語句元素:02—Python基本語法元素分支語句是控制程序運行的一類重要語句,它的作用是根據判斷條件選擇程序執(zhí)行路徑;分支語句包括:單分支、二分支和多分支;

單分支語句是最簡單的分支語句,使用方式如下:if<條件>:<語句塊>>>>

x=18>>>ifx>0:

output=x分支語句語句元素:02—Python基本語法元素二分支語句:分支語句語句元素:02—Python基本語法元素多分支語句#實例2.2Steer.py智能車差速轉向speed=20#設定車輪直線行駛速度kx=0.85

#調節(jié)參數left_wheel=speedright_wheel=speedangle=eval(input("請輸入歸一化后的角度:"))if0<angle<=1:#右轉向right_wheel=(1-angle*kx)*speedprint("right_speed:",right_wheel,"left_speed:",left_wheel)elif-1<=angle<=0:#左轉向left_wheel=(1-abs(angle*kx))*speedprint("right_speed:",right_wheel,"left_speed:",left_wheel)else:print("輸入轉角信息不是歸一化數據")02—Python基本語法元素作用:獲得用戶輸入input()函數可以包含一些提示性文字

<變量>=input(<提示性文字>)input()函數>>>ang=input("請輸入歸一化后的角度:")請輸入歸一化后的角度:0.1>>>

ang‘0.1’>>>float(

ang)0.1#如果沒有輸入任何信息,直接按回車鍵,則把空字符串賦給ang基本輸入輸出函數:02—Python基本語法元素input()函數#實例2.2Steer.py智能車差速轉向speed=20#設定車輪直線行駛速度kx=0.85

#調節(jié)參數left_wheel=speedright_wheel=speedangle=eval(input("請輸入歸一化后的角度:"))if0<angle<=1:#右轉向right_wheel=(1-angle*kx)*speedprint("right_speed:",right_wheel,"left_speed:",left_wheel)elif-1<=angle<=0:#左轉向left_wheel=(1-abs(angle*kx))*speedprint("right_speed:",right_wheel,"left_speed:",left_wheel)else:print("輸入轉角信息不是歸一化數據")02—Python基本語法元素-eval()函數的基本使用格式:

eval(<字符串或字符串變量>)

去掉參數最外側引號>>>

eval('"1+2"')"1+2">>>

eval('print("Hello")')Hello>>>

eval("1")1>>>

eval("1+2")3eval()評估函數02—Python基本語法元素eval()函數經常和input()函數一起使用,用來獲取用戶輸入的數字,使用方式如下:<變量>=eval(input(<提示性文字>))a=eval(input("請輸出考試分數:"))ifa>=60:

print("及格")else:

print("不及格")input()函數也可以和int()、float()函數結合使用eval()評估函數02—Python基本語法元素print()函數用于輸出運算結果print()函數print(*objects,sep='',end='\n',file=sys.stdout,flush=False)objects:可選參數,表示要輸出的對象,可以是各種數據類型的變量、常量;sep:可選參數,表示分隔符,默認為

‘’(空格);end:可選參數,表示輸出結束后要添加的字符,默認為

‘\n’(換行符);file:可選參數,表示要寫入的文件對象,默認為sys.stdout(標準輸出);flush:可選參數,表示是否強制刷新輸出,默認為False。*objects前面的*表示可以有可變數量對象個數基本輸入輸出函數:02—Python基本語法元素>>>

print("強國有我")強國有我>>>

value

=

123.456>>>print(value,value,value)123.456

123.456

123.456print()函數基本輸入輸出函數:02—Python基本語法元素end參數print(<待輸出內容>,end="<增加的輸出結尾>")>>>a=54

>>>print(a,

end=".")54.>>>print(a,

end="%")54%print()函數基本輸入輸出函數:02—Python基本語法元素#實例2.2Steer.py智能車差速轉向speed=20#設定車輪直線行駛速度kx=0.85

#調節(jié)參數left_wheel=speedright_wheel=speedangle=eval(input("請輸入歸一化后的角度:"))if0<angle<=1:#右轉向right_wheel=(1-angle*kx)*speed

print("right_speed:",right_wheel,"left_speed:",left_wheel)elif-1<=angle<=0:#左轉向left_wheel=(1-abs(angle*kx))*speed

print("right_speed:",right_wheel,"left_speed:",left_wheel)else:

print("輸入轉角信息不是歸一化數據")02—Python基本語法元素Python程序會經常使用當前程序之外已有的功能代碼,這個過程叫“引用”。Python語言使用import保留字引用當前程序以外的功能庫,使用方式如下:

import<功能庫名稱>功能庫引用:02—Python基本語法元素第一種:import<庫名>使用庫中函數格式:<庫名>.<函數名>(<函數參數>)第二種:from<庫名>import<函數名,函數名,…>from<庫名>import*#*是通配符,表示所有函數。使用庫中函數格式:<函數名>(<函數參數>)02—Python基本語法元素功能庫引用:010203程序基本設計方法python基本語法結構python基本數據類型目錄第105頁3.1數字類型3.2math庫3.5time庫3.3字符串類型03python基本數據類型目錄第106頁3.4字符串類型格式化控制3.1數字類型3.2math庫3.5time庫3.3字符串類型03python基本數據類型目錄第107頁3.4字符串類型格式化控制Python語言支持多種數據類型最簡單的包括數字類型、字符串類型;復雜的包括元組類型、集合類型、列表類型、字典類型等(第5章內容)。03—Python基本數據類型Python語言包括三種數字類型整數類型浮點數類型復數類型1010是一個整數類型,10.10是一個浮點數類型,10+10j是一個復數類型。3.1數字類型整數類型與數學中整數的概念一致-可正可負,沒有取值范圍限制-

pow(x,y)函數:計算xy,想算多大算多大>>>

pow(2,100)1267650600228229401496703205376>>>

pow(2,pow(2,15))1415461031044954789001553……3.1數字類型整數類型有4種進制表示:十進制、二進制、八進制和十六進制。默認情況,整數采用十進制,其他進制需要增加引導符號。不同進制的整數之間可以直接運算3.1數字類型整數類型浮點數兩種表示方法:小數點一般形式;科學計數法表示。例如:浮點數123.456,兩種表示方式如下:一般形式:123.456科學計數法:1.23456e23.1數字類型浮點數類型與數學中實數的概念一致帶有小數點及小數的數字Python語言中的浮點數類型必須帶有小數部分,小數部分可以是0。例如:1010是整數,1010.0是浮點數。3.1數字類型浮點數類型-

浮點數取值范圍和小數精度都存在限制,

取值范圍數量級約-10307至10308,精度數量級10-16,滿足大部分常規(guī)計算要求。浮點數間運算存在不確定尾數,不是bug>>>0.1+0.30.4>>>0.1+0.20.30000000000000004不確定尾數3.1數字類型浮點數類型浮點數間運算存在不確定尾數,不是bug0.1用二進制表示是一個無限的小數,計算機只能截取其中的53位,無限接近0.1,但并不真正等于0.10.00011001100110011001100110011001100110011001100110011010(二進制表示)Python用53位二進制表示小數部分0.1000000000000000055511151231257827021181583404541015625(十進制表示)0.1+0.2二進制表示小數,可以無限接近,但不完全相同結果無限接近0.3,但可能存在尾數3.1數字類型浮點數類型-round(x,d):對x四舍五入,d是小數截取位數-浮點數間運算與比較用round()函數輔助-

不確定尾數一般發(fā)生在10-16左右,round()十分有效>>>

round(0.1+0.2,1)==0.3True3.1數字類型浮點數類型浮點數間運算存在不確定尾數>>>0.1+0.2==0.3False科學計數法使用字母e或者E作為冪的符號,以10為基數,含義如下:

<a>e<b>=a*10b

1.02e3值為1020.0;1.02E-3值為0.00102。Python浮點數類型的數值范圍和小數精度受不同計算機系統(tǒng)的限制。除高精度科學計算外的絕大部分運算來說,浮點數類型的數值范圍和小數精度是滿足要求的。3.1數字類型浮點數類型與數學中的復數概念一致,z=a+bj,

a是實數部分,b是虛數部分,a和b都是浮點類型,虛數部分用j或者J標識。

示例:12.3+4j,-5.6+7j,2.0+1j

當b為1時,1不能省略,即1j表示復數,而j則表示Python程序中的一個變量。3.1數字類型復數類型z=1.14e-4+3.6e+76j(實部和虛部?)對于復數z,可以用z.real獲得實數部分,z.imag獲得虛數部分。>>>z=1.14e-4+3.6e+76j>>>z.real0.000114>>>

z.imag3.6e+763.1數字類型復數類型操作符描述x+yx與y之和x-yx與y之差x*yx與y之積x/yx與y之商,(10/3=3.3333333333333335)x//yx與y之整數商,即:不大于x與y之商的最大整數10//3=3x%yx與y之商的余數,也稱為模運算10%3=1-xx的負值,即:x*(-1)+xx本身x**yx的y次冪,即:xy9個基本的數值運算操作符3.1數字類型操作符描述x+=yx=x+yx-=yx與y之差,x=x-yx*=yx與y之積,x=x*yx/=yx與y之商,x=x/yx//=yx與y之整數商,x=x//yx%=yx與y之商的余數,也稱為模運算,x=x%yx**=yx的y次冪,即:xy增強賦值操作符簡化了代碼。3.1數字類型二元增強運算操作符三種類型存在一種逐漸“擴展”的關系:

整數->浮點數->復數(整數是浮點數特例,浮點數是復數特例)不同數字類型之間可以進行混合運算,運算后生成結果為最寬類型。

123+4.0=127.0(整數+浮點數=浮點數)3.1數字類型三種類型的混合運算數字類型之間相互運算所生成的結果是“更寬”的類型,基本規(guī)則是:整數之間運算,如果數學意義上的結果是小數,結果是浮點數;整數之間運算,如果數學意義上的結果是整數,結果是整數;整數和浮點數混合運算,輸出結果是浮點數;整數或浮點數與復數運算,輸出結果是復數。3.1數字類型三種類型的混合運算函數描述abs(x)x的絕對值

abs(-8.01)=8.01divmod(x,y)(x//y,x%y),輸出為二元組形式(也稱為元組類型),divmod(10,3)=3,1pow(x,y[,z])冪余:(x**y)%z,[..]表示該參數可以省略,即:pow(x,y),它與x**y相同,pow(2,9,10)=2round(x[,ndigits])對x四舍五入,保留ndigits位小數。round(x)返回四舍五入的整數值round(-9.4531)=-9,round(-9.4531,2)=-9.45max(x1,x2,…,xn)x1,x2,…,xn的最大值,n沒有限定min(x1,x2,…,xn)x1,x2,…,xn的最小值,n沒有限定3.1數字類型Python內置數值運算函數函數描述int(x)將x轉換為整數,舍棄小數部分,x可以是浮點數或字符串,int(100.65)=100,int("100")=100float(x)將x轉換為浮點數,x可以是整數或字符串,float(10)=10.0,float("10")=10.0,float("10.01")=10.01complex(re[,im])生成一個復數,實部為re,虛部為im,re可以是整數、浮點數,im可以是整數或浮點數但不能為字符串,complex(4)=4+0J數值運算操作符可以隱式地轉換輸出結果的數字類型;例如,兩個整數采用運算符“/”的除法將可能輸出浮點數結果。通過內置的數字類型轉換函數可以顯式地在數字類型之間進行轉換。

3.1數字類型數字類型的轉換函數type(x):

返回x的類型,適用于所有類型的判斷。>>>

type(100)<class'int'>>>>

type(50.0)<class'float'>>>>

type(80+0j)<class'complex'>>>>

z=20-1j>>>

type(z)<class'complex'>3.1數字類型數字類型的判斷3.1數字類型3.2math庫3.5time庫3.3字符串類型03python基本數據類型目錄第127頁3.4字符串類型格式化控制math庫是Python提供的內置數學類函數庫;math庫不支持復數類型;math庫一共提供了4個數學常數和44個函數;44個函數共分為4類,包括:16個數值表示函數、8個冪對數函數、16個三角對數函數和4個高等特殊函數。3.2math庫第一種方法:

importmath

對math庫中函數采用math.<b>()形式使用第二種方法:frommathimport<函數名>對math庫中函數可以直接采用<函數名>()形式使用>>>importmath>>>math.ceil(10.2)11>>>frommathimportceil>>>ceil(10.2)11>>>frommathimport*>>>ceil(10.2)113.2math庫math庫引用常數數學表示描述math.pi

π圓周率,值為3.141592653589793math.ee自然對數,值為2.718281828459045math.inf?正無窮大,負無窮大為-math.infmath.nan

非浮點數標記,NaN(NotaNumber)3.2math庫math庫包含4個常用常數math庫包括16個數值表示函數函數數學表示描述math.fabs(x)返回x的絕對值math.fmod(x,y)x%y返回x與y的模math.fsum([x,y,…])x+y+…浮點數精確求和math.ceil(x)向上取整,返回不小于x的最小整數math.floor(x)向下取證,返回不大于x的最大整數math.factorial(x)x!返回x的階乘,如果x是小數或負數,返回ValueErrormath.gcd(a,b)

返回a與b的最大公約數math.frexp(x)x=m*2e返回(m,e),當x=0,返回(0.0,0)math.ldexp(x,i)x*2i返回x*2i運算值,math.frepx(x)函數的反運算math.modf(x)

返回x的小數和整數部分math.trunc(x)

返回x的整數部分math.copysign(x,y)用數值y的正負號替換數值x的正負號math.isclose(a,b)

比較a和b的相似性,返回True或Falsemath.isfinite(x)

當x為無窮大,返回True;否則,返回Falsemath.isinf(x)

當x為正數或負數無窮大,返回True;否則,返回Falsemath.isnan(x)

當x是NaN,返回True;否則,返回False3.2math庫函數數學表示描述math.pow(x,y)xy返回x的y次冪math.exp(x)ex返回e的x次冪,e是自然對數

math.expm1(x)ex-1返回e的x次冪減1math.sqrt(x)返回x的平方根math.log(x[,base])logbasex返回x的對數值,只輸入x時,返回自然對數,即lnxmath.log1p(x)ln(1+x)返回1+x的自然對數值math.log2(x)logx返回x的2對數math.log10(x)log10x返回x的10對數值3.2math庫math庫包括8個冪對數函數函數數學表示描述math.degrees(x)

角度x的弧度值轉角度值math.radians(x)

角度x的角度值轉弧度值math.hypot(x,y)返回(x,y)坐標到原點(0,0)的距離math.sin(x)sinx返回x的正弦函數值,x是弧度值math.cos(x)cosx返回x的余弦函數值,x是弧度值math.tan(x)tanx返回x的正切函數值,x是弧度值math.asin(x)arcsinx返回x的反正弦函數值,x是弧度值math.acos(x)arccosx返回x的反余弦函數值,x是弧度值

math.atan(x)arctanx返回x的反正切函數值,x是弧度值math.atan2(y,x)arctany/x返回y/x的反正切函數值,x是弧度值math.sinh(x)sinhx返回x的雙曲正弦函數值math.cosh(x)coshx返回x的雙曲余弦函數值math.tanh(x)tanhx返回x的雙曲正切函數值math.asinh(x)arcsinhx返回x的反雙曲正弦函數值math.acosh(x)arccoshx返回x的反雙曲余弦函數值math.atanh(x)arctanhx返回x的反雙曲正切函數值3.2math庫math庫包括16個三角運算函數函數數學表示描述math.erf(x)高斯誤差函數,應用于概率論、統(tǒng)計學等領域math.erfc(x)余補高斯誤差函數,math.erfc(x)=1-math.erf(x)math.gamma(x)伽瑪(Gamma)函數,也叫歐拉第二積分函數math.lgamma(x)ln(gamma(x))伽瑪函數的自然對數3.2math庫math庫包括4個高等特殊

溫馨提示

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

最新文檔

評論

0/150

提交評論