智能機器人導(dǎo)論 課件第2章 智能機器人基礎(chǔ)_第1頁
智能機器人導(dǎo)論 課件第2章 智能機器人基礎(chǔ)_第2頁
智能機器人導(dǎo)論 課件第2章 智能機器人基礎(chǔ)_第3頁
智能機器人導(dǎo)論 課件第2章 智能機器人基礎(chǔ)_第4頁
智能機器人導(dǎo)論 課件第2章 智能機器人基礎(chǔ)_第5頁
已閱讀5頁,還剩83頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2.1智能機器人數(shù)學(xué)基礎(chǔ)

2.2智能機器人運動學(xué)基礎(chǔ)

2.3智能機器人控制學(xué)基礎(chǔ)

2.4智能機器人軟件基礎(chǔ)

2.5智能機器人常用硬件機器人學(xué)是數(shù)學(xué)、運動學(xué)、控制學(xué)、計算機、機械電子等學(xué)科技術(shù)的交叉研究領(lǐng)域。學(xué)習(xí)智能機器人的基礎(chǔ)知識,不但可以讓讀者深入了解智能機器人的邏輯和結(jié)構(gòu),還可為讀者的實踐提供理論指導(dǎo)。如圖2.1所示,本章介紹智能機器人設(shè)計與實現(xiàn)的過程中所涉及的數(shù)學(xué)、運動學(xué)和控制學(xué)基礎(chǔ)理論,并且通過兩個計算機視覺的深度學(xué)習(xí)任務(wù)介紹智能機器人的軟件基礎(chǔ)知識,最后對智能機器人的常用硬件進行深入淺出的說明。通過本章的學(xué)習(xí),讀者能夠為理解和研究后續(xù)部分章節(jié)打下良好的基礎(chǔ)。2.1智能機器人數(shù)學(xué)基礎(chǔ)2.1.1矩陣?yán)碚摼仃囀窃S多研究領(lǐng)域的數(shù)學(xué)基礎(chǔ),在數(shù)學(xué)和其他科學(xué)技術(shù)領(lǐng)域有著廣泛的應(yīng)用。經(jīng)濟學(xué)可以利用矩陣的線性規(guī)劃理論尋找企業(yè)獲得最多利潤的最優(yōu)解,密碼學(xué)可以利用可逆矩陣的特性設(shè)計安全性高、保密性強的密碼,計算機學(xué)則常利用矩陣的稀疏性來減少內(nèi)容存儲量。受篇幅所限,本節(jié)簡單介紹典型矩陣、矩陣分解、矩陣函數(shù)和矩陣導(dǎo)數(shù)等基礎(chǔ)內(nèi)容。1.正交(酉)矩陣2.正規(guī)矩陣定義2.1.2設(shè)A為復(fù)矩陣,若AHA=AAH,則稱A為正規(guī)矩陣。上面介紹的正交矩陣和酉矩陣均為正規(guī)矩陣,除此之外,常見的正規(guī)矩陣包括對稱矩陣、反對稱矩陣、厄米矩陣、反厄米矩陣等。正規(guī)矩陣具有一些特殊的性質(zhì),通過這些性質(zhì)能夠建立正規(guī)矩陣和一般矩陣之間的橋梁。(1)正規(guī)上三角矩陣必為對角矩陣。(2)若A為正規(guī)矩陣,則矩陣A可以酉對角化。反之,若A可以酉對角化,則A為正規(guī)矩陣。設(shè)A,B是復(fù)方陣,若存在酉(正交)矩陣U,使得UHAU=U-1AU=B,則稱矩陣A酉(正交)相似于B.3.正交三角分解定義2.1.3若非奇異矩陣A可以表示為正交矩陣Q和上三角矩陣R的積,即A=QR,則稱此為A的QR分解。類似地,還有矩陣的RQ分解、QL分解和LQ分解,其中L表示下三角矩陣。矩陣的RQ、QL、LQ和QR分解統(tǒng)稱為正交三角分解。下面以QR分解為例介紹矩陣的正交三角分解,其他三種分解可以類似獲得。定理2.1.1對于任意非奇異矩陣A總存在QR分解,當(dāng)要求R的對角元素均為正數(shù)時,該分解具有唯一性。定理2.1.2若A為任意列滿秩矩陣,則A可以分解為列正交矩陣Q和上三角矩陣R的積。當(dāng)要求R的對角元素均為正數(shù)時,該分解具有唯一性。在實際應(yīng)用中,QR分解具有三種常用運算方法,分別是Gram-Schmidt正交方法、Givens矩陣方法和Householder矩陣方法。4.三角分解定義2.1.4若非奇異矩陣A可以表示為下三角矩陣L和上三角矩陣U的乘積,即A=LU,則稱此為A的三角分解(LU分解)。5.奇異值分解矩陣的奇異值分解在最優(yōu)化問題、特征值問題、線性最小二乘問題和廣義逆問題中具有廣泛的應(yīng)用。在智能機器人的計算機視覺設(shè)計中,矩陣的奇異值分解常被用于求解線性最優(yōu)化問題。因此,矩陣的奇異值分解知識是智能機器人的重要數(shù)學(xué)基礎(chǔ)內(nèi)容。6.矩陣導(dǎo)數(shù)定義2.1.7若矩陣A的所有元素aij均為實變量t的函數(shù),即則稱矩陣A為函數(shù)矩陣。定義2.1.8若矩陣A為如定義2.1.7所述的函數(shù)矩陣,則對于任意i,j,若aij(t)在t0

處連續(xù),定義矩陣A的導(dǎo)數(shù)為2.1.2幾何學(xué)我們知道,在人腦中有無數(shù)條視覺神經(jīng)處理著我們眼球所看到的景象,那么,當(dāng)智能機器人在行動時,是如何“看到”周圍空間的呢?實際上,智能機器人利用攝像機、紅外成像儀等設(shè)備組成自己的“眼睛”,記錄其所看見的空間和空間中的對象,并在其信息處理區(qū)域利用幾何學(xué)原理重構(gòu)三維景象。智能機器人涉及的幾何學(xué)數(shù)學(xué)基礎(chǔ)主要包括平面映射幾何、空間映射幾何以及非歐幾何,此處主要介紹平面映射幾何及其在智能機器人中的基礎(chǔ)應(yīng)用。我們知道,機器人通過計算機視覺模擬人類的視覺感知,而平面映射幾何在計算機視覺中有著豐富的應(yīng)用,如由二維圖像場景復(fù)原三維幾何結(jié)構(gòu)等。定義2.1.9(射影平面)設(shè)歐氏坐標(biāo)系中齊次坐標(biāo)為x∞=(x,y,0)T

的點為無窮遠點,歐氏平面上所有由無窮遠點構(gòu)成的集合稱為無窮遠直線。由歐氏平面和無窮遠直線的并集形成的擴展平面稱為射影平面。定義2.1.10(射影變換)設(shè)矩陣H=(hij)3×3

為射影變換矩陣,且H為可逆矩陣,則射影平面上的可逆齊次線性變換可由H來描述:定義2.1.11(變換群)平面上所有的射影變換構(gòu)成一個變換群,稱為射影變換群。設(shè)

以U作為影射變換矩陣的變換稱為等距變換群,其數(shù)學(xué)表達如下:特別地,當(dāng)U是一個旋轉(zhuǎn)矩陣時,該等距變換稱為歐氏變換。在平面射影變換中,需要探討變換群中的不變量,這為應(yīng)用平面映射幾何奠定了理論基礎(chǔ)。變換群的不變量是指在變換作用下不發(fā)生變化的量和不變的性質(zhì),等距變換群中的不變量主要是兩點之間的距離、兩線之間的夾角和圖形面積等。通過不變量,我們可以探討計算機視覺應(yīng)用的一個基本問題:如何從平面場景的中心投影圖像恢復(fù)場景結(jié)構(gòu)。下面介紹中心投影的概念和三種基本類型的場景結(jié)構(gòu)。定義2.1.12(中心投影)如圖2.2所示,中心投影通過投影中心將場景平面上的點投影到像平面上的點。顯然,中心投影是射影變換,可用三階可逆矩陣H來表達2.1.3概率學(xué)當(dāng)天氣預(yù)報顯示今日降水概率時,大部分人會在“帶雨傘”和“不帶雨傘”之間抉擇,并根據(jù)自己的經(jīng)驗和降水概率的大小作出決定。對于智能機器人來說,所需要選擇的場景就更多了,因此,對于概率學(xué)理論進行一定的了解和學(xué)習(xí),是設(shè)計智能機器人必不可少的環(huán)節(jié)。概率學(xué)歷史悠久,為當(dāng)代數(shù)學(xué)奠定了許多經(jīng)典概率模型的基礎(chǔ)。當(dāng)計算機出現(xiàn)之后,由于計算能力大大上升,計算量大、精度高、泛化性能好的概率模型也如雨后春筍一般層出不窮,這也讓智能機器人實時判斷和選擇成為現(xiàn)實。本節(jié)內(nèi)容主要介紹貝葉斯方法和馬爾可夫鏈模型。1.貝葉斯方法定義2.1.13(貝葉斯公式)設(shè)總體X的概率函數(shù)為f(x|θ),獲得樣本X=x后,參數(shù)θ的后驗分布π(θ|x)定義為在X=x下θ的條件分布。以上四個公式統(tǒng)稱為貝葉斯公式。可以看出,一切統(tǒng)計和決策的貝葉斯方法都必須從后驗分布出發(fā),不過,在利用后驗分布的同時,貝葉斯方法還使用先驗信息,以提高統(tǒng)計決策的效果。貝葉斯統(tǒng)計與決策涉及以下問題:(1)估計問題。如后驗中位數(shù)估計、后驗眾數(shù)估計和后驗均值估計。(2)預(yù)測推斷。根據(jù)歷史樣本數(shù)據(jù),基于后驗預(yù)測分布對隨機變量X的未來觀測值做出推斷。(3)假設(shè)檢驗。根據(jù)參數(shù)θ的后驗分布,決定是否接受所給假設(shè)。(4)模型選擇。根據(jù)備選模型的后驗概率,貝葉斯方法選擇具有最大后驗概率的模型。2.馬爾可夫鏈模型在智能機器人的模式識別、機器學(xué)習(xí)領(lǐng)域中,馬爾可夫鏈模型占有重要的地位,是智能機器人完成決策和推斷必不可少的手段。定義2.1.14設(shè)T是給定參數(shù)集,X(t)為隨機變量,n為任意正整數(shù),若隨機過程X={X(t),t∈T}滿足下述條件,則稱它具有馬爾可夫性質(zhì),具有馬爾可夫性質(zhì)的隨機過程稱為馬爾可夫過程:式(2.5)意味著,已知系統(tǒng)當(dāng)前的狀態(tài),就可以完全確定系統(tǒng)未來所處狀態(tài)的概率,這一概率與系統(tǒng)過去時刻的狀態(tài)無關(guān)。當(dāng)馬爾可夫過程中的T和X的均值函數(shù)E均能夠與自然數(shù)集合建立起一一對應(yīng)的映射(均為可列)時,該馬爾可夫過程稱為馬爾可夫鏈。2.1.4數(shù)值分析想象一個登山愛好者正站在一座山峰的峰頂,此時,他需要找到一條下山的路,讓他能夠盡可能快速且不迂回地回到山底。對于計算機來說,這是一個非線性優(yōu)化的數(shù)學(xué)問題,要想找到這條路,就需要使用數(shù)值分析的工具。本節(jié)主要介紹智能機器人在數(shù)值分析中所使用的非線性優(yōu)化方法,包括一維搜索、無約束優(yōu)化(最速下降法)和約束優(yōu)化等,其中主要介紹梯度下降法,對其余方法僅作簡單介紹。1.一維搜索智能機器人使用搜索算法能夠得到實際問題的最優(yōu)解,如尋找到達目的地的最短路徑、自動避障或自動進行垃圾分類等。為了充分利用實際場景的信息,提高搜索效率,通常使用迭代的非線性優(yōu)化方法。若在迭代優(yōu)化過程中,假定已知第k步迭代點xk和第k+1步搜索方向pk,則只需確定第k+1步搜索步長tk,就可以完成本步迭代。像這樣求解一維搜索步長tk的優(yōu)化問題稱為一維搜索。在一維搜索的過程中,迭代的目的是尋找使目標(biāo)函數(shù)的函數(shù)值下降的步長,根據(jù)該步長是否能夠使目標(biāo)函數(shù)值下降最多,可以分為精確一維搜索與非精確一維搜索。2.最速下降法最速下降法是最古老的無約束非線性優(yōu)化方法之一,目前在深度學(xué)習(xí)和模式識別等領(lǐng)域仍有著廣泛的應(yīng)用。最速下降法的基本思想是,假定函數(shù)f(x)連續(xù)可微,當(dāng)前迭代點為xk,則第k+1步搜索方向pk選取使f(x)在xk處下降最快的方向。設(shè)f(x)的導(dǎo)數(shù)為?f(x),則pk=-?f(xk)。確定搜索方向后,可以使用精確一維搜索來確定搜索步長,也可以根據(jù)實際情況,使用非精確一維搜索。對于連續(xù)可微的目標(biāo)函數(shù)f(x),最速下降法能夠確保其收斂性,但其收斂速度緩慢,計算效率較低。在實際應(yīng)用中,還有牛頓法、擬牛頓法和共軛方向法等。3.約束優(yōu)化設(shè)x1,x2,…,xk是優(yōu)化迭代過程中的k個迭代點,若對于任意迭代點xi,需滿足xi位于可行域D中,則此類優(yōu)化問題稱為約束優(yōu)化。約束優(yōu)化的一般方法為懲罰法,包括內(nèi)點懲罰法和外點懲罰法。內(nèi)點懲罰法的基本思想是,在可行域D的邊界設(shè)置一道“障礙”函數(shù),構(gòu)造增廣目標(biāo)函數(shù)將約束優(yōu)化轉(zhuǎn)為無約束優(yōu)化問題。邊界“障礙”使得可行域D內(nèi)的迭代點在靠近邊界時,增廣目標(biāo)函數(shù)值會趨向無窮大,從而滿足可行域條件。外點懲罰法的思想與內(nèi)點懲罰法類似,引入罰函數(shù),構(gòu)造增廣目標(biāo)函數(shù)將約束優(yōu)化轉(zhuǎn)為無約束優(yōu)化問題。由于罰函數(shù)的存在,可行域D外點的函數(shù)值將會趨向無窮大,即被罰函數(shù)懲罰,從而滿足可行域條件。2.2智能機器人運動學(xué)基礎(chǔ)機器人通過身體的關(guān)節(jié)、枝干和軸承等部分支撐身體,不同的構(gòu)件通過相互作用來提供機器人運動的方向和動力。因此,機器人學(xué)的核心之一是運動學(xué),運動是機器人實現(xiàn)與環(huán)境交互的主要途徑之一。運動學(xué)涉及數(shù)學(xué)、物理力學(xué)和組織學(xué)等多個學(xué)科領(lǐng)域,本節(jié)主要介紹剛體運動、正向動力學(xué)、逆動力學(xué)、閉鏈運動學(xué)、開鏈運動學(xué)和運動規(guī)劃的基礎(chǔ)知識。2.2.1剛體及剛體自由度機器人是由一組稱之為構(gòu)件的物體相互之間通過不同類型的關(guān)節(jié)機械連接而成,由驅(qū)動器(如電機)提供力與力矩使構(gòu)件產(chǎn)生運動的。通常,組成機器人的構(gòu)件是形狀已知的剛體。定義2.2.1(剛體)剛體是指在運動中和受力的作用后,形狀和大小不變,而且內(nèi)部各點的相對位置不變的物體。通過剛體的定義我們可以用有限個參數(shù)來確定機器人中所有點的位置,從而確定機器人的位形、狀態(tài)和運動軌跡等,機器人的自由度就是常用的參數(shù)之一。自由度指的是表示機器人位形所需要的最小實值坐標(biāo)數(shù),二維平面中的剛體具有3個自由度,三維平面中的剛體則具有6個自由度。由于機器人的構(gòu)件是已知剛體,可以由其剛體的數(shù)目和運動平面得知機器人的自由度。一個常用于計算平面和空間機器人自由度的公式是Grübler公式:自由度=構(gòu)件的自由度之和-獨立約束數(shù)2.2.2正向動力學(xué)及逆動力學(xué)機器人的正向動力學(xué)是指已知機器人的關(guān)節(jié)坐標(biāo),求解末端位置和姿態(tài)問題所使用的動力學(xué)理論。圖2.3所示為一個平面3R開鏈機械手,其末端位置坐標(biāo)(x,y)和姿態(tài)角φ的計算關(guān)系式如下:1.一維搜索智能機器人使用搜索算法能夠得到實際問題的最優(yōu)解,如尋找到達目的地的最短路徑、自動避障或自動進行垃圾分類等。為了充分利用實際場景的信息,提高搜索效率,通常使用迭代的非線性優(yōu)化方法。若在迭代優(yōu)化過程中,假定已知第k步迭代點xk和第k+1步搜索方向pk,則只需確定第k+1步搜索步長tk,就可以完成本步迭代。像這樣求解一維搜索步長tk的優(yōu)化問題稱為一維搜索。在一維搜索的過程中,迭代的目的是尋找使目標(biāo)函數(shù)的函數(shù)值下降的步長,根據(jù)該步長是否能夠使目標(biāo)函數(shù)值下降最多,可以分為精確一維搜索與非精確一維搜索。首先設(shè)定處于機器人基座的基坐標(biāo)系{s}和附著在最后一根桿上的末端坐標(biāo)系。若初始位置機器人所有關(guān)節(jié)的變量初值為0,關(guān)節(jié)n對應(yīng)的關(guān)節(jié)變量是θn,則末端坐標(biāo)系的位移可以寫成:式中:T是末端的新位形,Sn是基坐標(biāo)系中關(guān)節(jié)n的旋量坐標(biāo),θn是關(guān)節(jié)移動的距離,M是末端坐標(biāo)系相對于基坐標(biāo)系的初始位形?,F(xiàn)在,假定關(guān)節(jié)n-1、n-2乃至關(guān)節(jié)1也允許發(fā)生變化,則末端坐標(biāo)系的位移表示為與正向運動學(xué)相對,逆動力學(xué)是研究在給定了齊次變換矩陣X后,如何找出滿足T(θ)=X的關(guān)節(jié)角θ。但是,逆動力學(xué)問題可能存在多組解析解,或不存在解析解。面對多組解析解,需要排除位于工作空間之外的解;而對于不存在解析解的情況,可以使用數(shù)值迭代的方法求解。利用數(shù)值迭代不但可以獲得逆動力學(xué)問題的解,還可以改善實際工程中的解精度。2.2.3閉鏈運動學(xué)定義2.2.2(閉鏈)任何包含一個或多個環(huán)路的運動鏈都稱為閉鏈。閉鏈具有如下兩個特征:(1)并非所有關(guān)節(jié)都需要驅(qū)動。(2)關(guān)節(jié)變量必須滿足若干獨立或非獨立的閉環(huán)約束方程。在閉鏈中,一類較為常見的閉鏈結(jié)構(gòu)是并聯(lián)機構(gòu)。并聯(lián)機構(gòu)由一個靜止的平臺和一個移動的平臺構(gòu)成,平臺由多條腿連接,這些腿通常是開鏈結(jié)構(gòu)。圖2.5所示是一個典型的并聯(lián)機構(gòu),設(shè)動平臺的位形由Tsb給定,三條腿的運動鏈正向運動學(xué)分

用T1(θ),T2(φ)和T3(ψ)表

示,則

環(huán)

作Tsb=T1(θ)=T2(φ)=T3(ψ)。

由于閉鏈存在非驅(qū)動關(guān)節(jié),再加上驅(qū)動關(guān)節(jié)的數(shù)目可以超過并聯(lián)機構(gòu)的自由度數(shù)目,因此帶來了冗余驅(qū)動,使得閉鏈運動學(xué)中存在奇異類型。定義2.2.3(閉鏈奇異)閉鏈奇異包括三種奇異類型,分別是驅(qū)動奇異、位形空間奇異和末端奇異。(1)驅(qū)動奇異。當(dāng)驅(qū)動關(guān)節(jié)不能被獨立驅(qū)動時會產(chǎn)生非退化驅(qū)動奇異,當(dāng)鎖定所有關(guān)節(jié)不能使機構(gòu)成為剛性結(jié)構(gòu)時會產(chǎn)生退化驅(qū)動奇異。(2)位形空間奇異。位形空間在分岔點處使約束雅可比矩陣產(chǎn)生降秩,稱為位形空間奇異。(3)末端奇異。末端執(zhí)行器失去一個或多個運動自由度,稱為末端奇異。2.2.4開鏈運動學(xué)機器人的開鏈運動學(xué)方程可以通過以下兩種方式推導(dǎo)得到:(1)對剛體直接應(yīng)用牛頓—歐拉剛體動力學(xué)方程,即牛頓—歐拉公式。(2)根據(jù)機器人的動能和勢能導(dǎo)出拉格朗日動力學(xué)。拉格朗日動力學(xué)

選定一組獨立坐標(biāo)q(也稱為廣義坐標(biāo))描述系統(tǒng)的位形,并選定廣義力f和廣義速率

數(shù))定義

統(tǒng)

差,即

牛頓—歐拉遞歸公式

由牛頓—歐拉公式所得到的運動方程與由拉格朗日方法導(dǎo)出的運動方程相同,但由于前者采用了遞歸方法,因此在計算機計算時十分高效,更加便捷。具體算法如下:(1)初始化:將坐標(biāo)系{0}附連到機器人基座,將剩下的n-1個坐標(biāo)系依次附連到對應(yīng)的連桿質(zhì)心,并在末端執(zhí)

標(biāo)

系{n+1}。定

義Mi,i-1

是θi=0時

標(biāo)

系{i-1}在{i}中的位形,Ai是關(guān)節(jié)i的旋量軸在{i}中的表示,Gi是連桿i的6×6空間慣量矩陣,V0是{0}的運動旋量,Fn+1=(mtip,ftip)是末端執(zhí)行器坐標(biāo)系{n+1}中對環(huán)境作用的力旋量。(2)正向迭代:給定

執(zhí)行(3)反向迭代:對i=1到n,執(zhí)行2.2.5運動規(guī)劃運動規(guī)劃是指機器人尋找從開始狀態(tài)到目標(biāo)狀態(tài)的運動路徑,既要避免在運動過程中觸碰環(huán)境障礙物,也要滿足關(guān)節(jié)極限和扭矩極限等約束條件。定義2.2.4(位形空間)位形空間簡稱為C空間,在該空間中,每一個點c對應(yīng)機器人的唯一位形q。同樣地,機器人的每個位形q都可以唯一表示為C空間中的一個點c。定義2.2.5(位形空間障礙)將位形空間劃分為兩部分,分別是自由空間Cfree和障礙空間Cobs。位形空間的障礙不但包括已知空間中的障礙物,也包括機器人本身的關(guān)節(jié)限位。運動規(guī)劃基本問題。給定初始狀態(tài)x(0)=xstart,以及期望的最終狀態(tài)xgoal,尋找時間T和一組控制變量u,使得x(T)=xgoal,且對于所有t∈[0,T]總有q(x(t))∈Cfree?;締栴}具有許多變種,下面給出一些應(yīng)用較為廣泛的變種問題。(1)路徑規(guī)劃。路徑規(guī)劃是運動規(guī)劃問題的子問題,它希望在初始位形到目標(biāo)位形之間尋找一條無碰撞的路徑。(2)在線規(guī)劃。在實際應(yīng)用中,機器人可能需要即時判斷空間障礙,并快速反應(yīng)躲閃,這就要求在運動規(guī)劃的基礎(chǔ)上,以在線方式即時快速地進行規(guī)劃。無論是哪種規(guī)劃問題,在進行運動規(guī)劃時,都需要機器人進行碰撞檢測和搜索。(3)碰撞檢測。給定位形空間中的障礙物β和位形q,設(shè)d(q,β)為機器人與障礙物之間的距離,則d(q,β)>0代表機器人與障礙物沒有接觸,d(q,β)=0代表二者剛好接觸,d(q,β)<0時代表碰撞。(4)圖搜索。自由空間可以表示為圖,利用圖搜索策略尋找從起始點到終點的無障礙路徑是運動規(guī)劃的常用方法。圖搜索策略的方法有很多,其中應(yīng)用較為廣泛的是啟發(fā)式算法,即利用啟發(fā)式信息進行搜索。2.3智能機器人控制學(xué)基礎(chǔ)控制的本質(zhì)就是將規(guī)劃系統(tǒng)的命令作為輸入信息,將傳感器探測得到的狀態(tài)信息作為反饋,計算得到執(zhí)行器的控制信號,完成運動控制的閉環(huán)。對于設(shè)計任何一個控制系統(tǒng)來說,需要了解其輸入、輸出、控制元件和算法。比如用電機將某個車輪的轉(zhuǎn)速從10加速到100。此時電機就是一個系統(tǒng),它實現(xiàn)了電壓信號到轉(zhuǎn)速信號的變換,改變電壓,轉(zhuǎn)速信號也會隨之改變。在這個簡易的系統(tǒng)里,輸入對應(yīng)速度傳感器所采集到的轉(zhuǎn)速,控制元件對應(yīng)電機,算法對應(yīng)主機,輸出則對應(yīng)控制電機加速的信號。對于一個直流電機,在一定范圍內(nèi)施加給它的電壓越大,轉(zhuǎn)速越大。想要將它的速度維持在100,最簡單的方法則是當(dāng)主機監(jiān)測到轉(zhuǎn)速大于100時,控制電壓增大;監(jiān)測到轉(zhuǎn)速小于100時,控制電壓減小。但在實際情況中,直流電機的特性并非是線性的,速度傳感器的采集也非無限快,采集和控制都需要時間。此外,控制對象具有慣性,當(dāng)停止加速時,電機還可能因為慣性繼續(xù)加速一小段時間。因此,這種“簡單粗暴”的控制方法是無法保持穩(wěn)定的。這時就需要一種算法,可以將需要控制的物理量帶到目標(biāo)附近,可以“預(yù)見”這個量的變化趨勢,以消除因為慣性、阻力等因素造成的靜態(tài)誤差。針對這些問題,就出現(xiàn)了一種歷久不衰的算法———PID控制算法。1.一維搜索智能機器人使用搜索算法能夠得到實際問題的最優(yōu)解,如尋找到達目的地的最短路徑、自動避障或自動進行垃圾分類等。為了充分利用實際場景的信息,提高搜索效率,通常使用迭代的非線性優(yōu)化方法。若在迭代優(yōu)化過程中,假定已知第k步迭代點xk和第k+1步搜索方向pk,則只需確定第k+1步搜索步長tk,就可以完成本步迭代。像這樣求解一維搜索步長tk的優(yōu)化問題稱為一維搜索。在一維搜索的過程中,迭代的目的是尋找使目標(biāo)函數(shù)的函數(shù)值下降的步長,根據(jù)該步長是否能夠使目標(biāo)函數(shù)值下降最多,可以分為精確一維搜索與非精確一維搜索。PID(比例積分微分)控制算法是應(yīng)用最廣泛的閉環(huán)控制算法之一。閉環(huán)控制的目的是使用來自被測過程的輸入對一個或多個控制進行更改,以補償當(dāng)前狀態(tài)和期望狀態(tài)之間的差異。在控制算法的應(yīng)用中,PID及其衍生算法是應(yīng)用得最廣泛的算法之一,是當(dāng)之無愧的萬能算法。難能可貴的是,在控制算法中,PID控制算法是最簡單、最能體現(xiàn)反饋思想的控制算法。PID控制算法解決了自動控制理論所要解決的最基本的問題,即系統(tǒng)的穩(wěn)定性、快速性和準(zhǔn)確性問題。PID控制算法的控制流程如圖2.6所示。PID的核心思想是通過誤差信號控制被控量,規(guī)定在t時刻,r(t)為系統(tǒng)給定值,y(t)為實際輸出,u(t)為控制量。此時誤差值e(t)為實際輸出和系統(tǒng)給定值的差值,即PID控制器可連續(xù)計算誤差值e(t),并基于比例、積分和微分項進行修正。PID是指為了產(chǎn)生控制信號而對誤差進行的三項運算。接下來將分別介紹PID控制算法的這三個部分,每一部分都是一種控制,缺少任一部分系統(tǒng)都將行為不穩(wěn)定且難以預(yù)測。首先定義一些變量:Kp———比例系數(shù)。Ti———積分系數(shù)

。Td———微分系數(shù)。1.比例部分比例項是當(dāng)前誤差值乘以比例系數(shù),即比例環(huán)節(jié)的作用是對偏差瞬間做出反應(yīng)。偏差一旦產(chǎn)生,控制器立即產(chǎn)生控制作用,使控制量向減小偏差的方向變化??刂谱饔玫膹娙跞Q于比例系數(shù)Kp,Kp越大,控制作用越強,則過渡過程越快,控制過程的靜態(tài)偏差也就越小;但是Kp越大,也越容易產(chǎn)生震蕩,破壞系統(tǒng)的穩(wěn)定性。故而比例系數(shù)的選擇必須恰當(dāng),才能達到過渡時間少、靜差小而又穩(wěn)定的效果。2.積分部分積分項是一段時間內(nèi)的累計誤差和累計修正量,它考慮了所有已經(jīng)發(fā)生的誤差,即從積分部分的數(shù)學(xué)表達式可以知道,積分控制不僅考慮誤差,還考慮它持續(xù)存在的時長,用于補償錯誤的修正量會隨著時間的推移而增加。只要存在誤差,積分部分的控制作用就會不斷增加。積分環(huán)節(jié)的調(diào)節(jié)作用雖然會消除靜態(tài)誤差,但也會降低系統(tǒng)的響應(yīng)速度,容易過度補償并產(chǎn)生振蕩。積分系數(shù)Ti越大,積分的積累作用越弱,這時系統(tǒng)在過渡時不會產(chǎn)生振蕩,從而可以提高系統(tǒng)的穩(wěn)定性;但是增大積分常數(shù)會減慢靜態(tài)誤差的消除過程,消除偏差所需的時間也較長。當(dāng)Ti較小時,積分作用較長,這時系統(tǒng)過渡時間中又可能產(chǎn)生振蕩,不過消除偏差所需的時間較短。所以必須根據(jù)實際控制的具體要求來確定積分系數(shù)。3.微分部分微分項是隨時間變化的原始誤差和當(dāng)前誤差的差值,然后乘以微分參數(shù),即實際的控制系統(tǒng)除了希望消除靜態(tài)誤差外,還要求加快調(diào)節(jié)過程。在偏差出現(xiàn)或偏差變化的瞬間,不但要對偏差量做出響應(yīng),而且要根據(jù)偏差的變化趨勢預(yù)先給出適當(dāng)?shù)募m正。微分環(huán)節(jié)的作用是阻止偏差的變化。它是根據(jù)偏差的變化趨勢進行控制的,偏差的變化趨勢越大,微分控制器的輸出就越大,并能在偏差變大之前進行修正。它加快了系統(tǒng)的跟蹤速度。PID控制算法的輸出u(t)就是這三個部分的總和。將它們結(jié)合到一起,可產(chǎn)生一個平滑的校正過程,即2.3.2數(shù)字PID控制由于計算機控制是一種采樣控制,它只能根據(jù)采樣時刻的偏差計算控制量,而不能像模擬控制那樣連續(xù)輸出控制量。由于這一特點,積分項和微分項不能直接使用,必須進行離散化處理。離散化處理的方法為:以T作為采樣周期,K作為采樣序號,則離散采樣時間kt對應(yīng)著連續(xù)時間t,積分環(huán)節(jié)用加和的形式代替,微分環(huán)節(jié)用斜率的形式代替,即將對應(yīng)的積分微分公式代入PID輸出公式,就可以得到離散的PID表達式:如果采樣周期足夠小,由離散PID的近似計算可以獲得足夠的精確結(jié)果,同時它給出了全部控制量的大小,因此也可稱為全量式或位置式PID控制算法。結(jié)束了理論部分的介紹,更重要的則是實踐了。在實際應(yīng)用中,最難的是如何確定三個項的系數(shù),實現(xiàn)優(yōu)良的控制器。這需要大量的實驗以及經(jīng)驗來決定。PID控制算法的應(yīng)用非常廣泛,小到控制一個元件的溫度,大到控制一個無人機的飛行姿態(tài)和飛行速度等,都可以用PID控制。因此熟練掌握PID算法的設(shè)計與實現(xiàn)過程對于控制一個機器人系統(tǒng)尤為重要。2.3.3神經(jīng)網(wǎng)絡(luò)控制算法傳統(tǒng)的控制方法都是經(jīng)過嚴(yán)密的數(shù)學(xué)推導(dǎo),根據(jù)被控對象的數(shù)學(xué)模型和控制系統(tǒng)要求的性能指標(biāo)來設(shè)計控制器的方法。然而當(dāng)控制對象具有很強的非線性而無法用數(shù)學(xué)描述,或數(shù)學(xué)模型較為復(fù)雜時,傳統(tǒng)控制方法將發(fā)揮不出全部性能。此時則可以引入神經(jīng)網(wǎng)絡(luò)控制算法。相較于傳統(tǒng)控制算法,神經(jīng)網(wǎng)絡(luò)控制算法具有很強的逼近非線性函數(shù)的能力,能夠很好地完成非線性映射。在介紹神經(jīng)網(wǎng)絡(luò)控制算法之前,首先介紹一下神經(jīng)網(wǎng)絡(luò)的基本工作原理。神經(jīng)網(wǎng)絡(luò)是深度學(xué)習(xí)的基礎(chǔ),它以人腦中的神經(jīng)網(wǎng)絡(luò)作為啟發(fā),在學(xué)習(xí)或訓(xùn)練過程中改變突觸權(quán)重值,以適應(yīng)周圍環(huán)境的要求。神經(jīng)網(wǎng)絡(luò)通過其基本單元———神經(jīng)元連接而成。神經(jīng)元由模仿人類的神經(jīng)得來,每個神經(jīng)元之間都通過突觸來連接,信號從突觸輸入到各個神經(jīng)元,當(dāng)信號強度大于某個閾值時,將會把此神經(jīng)元激活,從而向與其連接的其他神經(jīng)元發(fā)送一個峰值信號。以圖2.7為例,神經(jīng)元輸入端共有三個激勵,將所有的激勵分別乘以相對應(yīng)的可學(xué)習(xí)的神經(jīng)元連接權(quán)重ω并求和,再加上偏置項b,最后通過一個非線性激活函數(shù),即可組成一個神經(jīng)元的激活模型。將神經(jīng)元按列進行排列,列與列之間全連接,可得到一個BP神經(jīng)網(wǎng)絡(luò),其結(jié)構(gòu)如圖2.8所示。在從左到右的正向傳播過程中將會得到一個輸出值,把輸出值與所期望得到的值對比計算出誤差值,通過計算每一個節(jié)點的偏導(dǎo)數(shù),可以得到相應(yīng)節(jié)點的誤差梯度。將得到的損失值反向應(yīng)用到損失梯度上就得到了誤差的反向傳播過程。在神經(jīng)網(wǎng)絡(luò)所處環(huán)境的激勵下,相繼給網(wǎng)絡(luò)輸入一些數(shù)據(jù)樣本,并按照一定的規(guī)則調(diào)整網(wǎng)絡(luò)各層的權(quán)值矩陣,待各層的權(quán)值都穩(wěn)定到一定值,神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)過程就結(jié)束了。我們可以利用經(jīng)過學(xué)習(xí)后的神經(jīng)網(wǎng)絡(luò)對真實的樣本進行分類。神經(jīng)網(wǎng)絡(luò)控制算法是指在控制系統(tǒng)中,應(yīng)用神經(jīng)網(wǎng)絡(luò)技術(shù),對難以精確建模的復(fù)雜非線性對象進行神經(jīng)網(wǎng)絡(luò)模型辨識。根據(jù)神經(jīng)網(wǎng)絡(luò)在控制器中的不同作用,可將神經(jīng)網(wǎng)絡(luò)控制算法分為兩類:一類稱為神經(jīng)網(wǎng)絡(luò)控制,它以神經(jīng)網(wǎng)絡(luò)為基礎(chǔ),形成了獨立的控制系統(tǒng);另一類稱為混合神經(jīng)網(wǎng)絡(luò)控制,它利用神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)能力來優(yōu)化傳統(tǒng)的控制方法。其中最為經(jīng)典的神經(jīng)網(wǎng)絡(luò)控制結(jié)構(gòu)為神經(jīng)網(wǎng)絡(luò)監(jiān)督控制,也稱為導(dǎo)師指導(dǎo)下的控制器。此類控制器通過對傳統(tǒng)的控制器進行學(xué)習(xí),然后用神經(jīng)網(wǎng)絡(luò)控制器取代或逐漸取代原有控制器。傳感器的信息和命令信號作為神經(jīng)網(wǎng)絡(luò)的輸入信號,被送入神經(jīng)網(wǎng)絡(luò)中,神經(jīng)網(wǎng)絡(luò)會記憶傳統(tǒng)控制器的動態(tài)特性,直到神經(jīng)網(wǎng)絡(luò)的訓(xùn)練達到了能夠充分描述人的控制行為,最后輸出與傳統(tǒng)控制器相似的控制作用,則網(wǎng)絡(luò)訓(xùn)練結(jié)束。訓(xùn)練好的控制器就可以直接投入實際系統(tǒng)的控制。圖2.9所示為神經(jīng)網(wǎng)絡(luò)監(jiān)督控制器結(jié)構(gòu),通過對傳統(tǒng)控制器的輸出進行學(xué)習(xí),在線調(diào)整自身參數(shù),直至反饋誤差趨近零,最終取代傳統(tǒng)控制器。當(dāng)系統(tǒng)被外界干擾時,傳統(tǒng)控制器將重新起作用,神經(jīng)網(wǎng)絡(luò)也將重新學(xué)習(xí)。與傳統(tǒng)控制算法相比,神經(jīng)網(wǎng)絡(luò)控制算法具有很強的自適應(yīng)性和學(xué)習(xí)能力、非線性映射能力、魯棒性和容錯能力。此外可與其他智能控制方法如模糊邏輯、遺傳算法等相融合。充分將神經(jīng)網(wǎng)絡(luò)特性應(yīng)用于控制領(lǐng)域,有助于控制系統(tǒng)的智能化發(fā)展。2.3.4蟻群控制算法隨著人工智能技術(shù)為優(yōu)化算法領(lǐng)域不斷注入新的活力,一些基于仿生原理、通過模擬自然現(xiàn)象或過程的現(xiàn)代啟發(fā)式方法相繼提出。其中,蟻群優(yōu)化算法(ACO)是通過模擬自然界中螞蟻集體覓食行為而提出的一種基于種群的模擬優(yōu)化算法。蟻群算法已經(jīng)在組合優(yōu)化、函數(shù)優(yōu)化及機器人路徑規(guī)劃等領(lǐng)域得到了廣泛的應(yīng)用,并取得了較好的效果。此外蟻群算法在控制系統(tǒng)中的應(yīng)用也取得了較好的性能。本小節(jié)首先描述蟻群算法的基本原理,接著介紹蟻群算法在控制器參數(shù)優(yōu)化中的應(yīng)用。螞蟻是一種群居動物,它具有高度的社會性,螞蟻之間的溝通除了可以借助觸覺和視覺外,在大規(guī)模協(xié)作行動中還借助一種生物信息介質(zhì)———信息素。信息素是一種由螞蟻自身釋放的易揮發(fā)物質(zhì),能夠?qū)崿F(xiàn)蟻群內(nèi)的間接通信。螞蟻在尋找食物時,在其經(jīng)過的路上會釋放信息素,信息素可以被其他螞蟻感知,并且信息素濃度越高,對應(yīng)的路徑越短。螞蟻會以較大的概率選擇信息素濃度較高的路徑,并釋放一定量的信息素,從而使距離較短路徑的信息素濃度被加強,形成正反饋。這種正反饋機制使得越來越多的螞蟻在巢穴與食物之間的最短路徑上行進。蟻群算法最初是以旅行商問題(TSP)作為應(yīng)用實例提出的。該問題假設(shè)一個商人要拜訪n個城市,每個城市只能拜訪一次,且最后要回到原來出發(fā)的城市。其目標(biāo)是希望選出的路徑的路程是所有路徑中的最小值。對于每只螞蟻k,路徑記憶向量Rk

按照訪問順序記錄了所有k已經(jīng)經(jīng)過的城市序號。設(shè)螞蟻k當(dāng)前所在城市為i,則其選擇城市j作為下一個訪問對象的概率為式中:Jk(i)表示從城市i可以直接到達的且又不在螞蟻訪問過的城市序列Rk

中的城市集合;(i,j)是一個啟發(fā)式信息,通常由(i,j)=1/dij直接計算;τ(i,j)表示邊(i,j)上的信息素量。信息素更新規(guī)則如下:式中:m是螞蟻個數(shù),ρ是信息素的揮發(fā)率,規(guī)定0<ρ≤1;Δτk(i,j)是第k只螞蟻在它經(jīng)過的邊上釋放的信息素量,它等于螞蟻k本輪構(gòu)建路徑長度的倒數(shù)。Ck

表示路徑長度,它是Rk

中所有邊的長度和。蟻群算法流程如圖2.10所示。首先初始化螞蟻和城市的數(shù)量以及重要程度因子α和β,接著計算螞蟻訪問下一城市的概率,構(gòu)造禁忌表,再根據(jù)信息素更新公式更新信息素,當(dāng)?shù)阶畲蟠螖?shù)時則得到優(yōu)化問題的最短路徑。對于一個控制系統(tǒng),如何優(yōu)化參數(shù)是其控制性能的關(guān)鍵,并和系統(tǒng)的安全運行有著密不可分的關(guān)系。參數(shù)優(yōu)化一般有兩種方法,其中人工整定法的精度較低,有時難以滿足特殊生產(chǎn)的要求,另一種則是利用智能優(yōu)化算法對參數(shù)進行優(yōu)化。蟻群算法易與問題結(jié)合,便于運算,因此將其用于控制系統(tǒng)的參數(shù)優(yōu)化也能取得良好的效果。蟻群控制算法初始化后,將螞蟻置于各自的初始化鄰域,每個螞蟻按照式(2.18)所給的轉(zhuǎn)移概率移動,以控制系統(tǒng)的性能指標(biāo)作為目標(biāo)函數(shù),計算各螞蟻的目標(biāo)函數(shù),并記錄當(dāng)前控制器的最優(yōu)解,按照式(2.19)更新信息素。重復(fù)上述過程螞蟻群體則會找到控制器參數(shù)的最優(yōu)解。2.4智能機器人軟件基礎(chǔ)通過基礎(chǔ)學(xué)科方面的介紹,相信讀者已經(jīng)對智能機器人理論方面有了一定的認識。在控制學(xué)、運動學(xué)和數(shù)學(xué)的基礎(chǔ)上,軟件是機器人能夠理解和感知世界必不可少的組成部分,如語音識別軟件能夠使機器人“理解”并回應(yīng)人類的話語,人臉識別軟件讓機器人能夠“認識”人類的面孔等,本節(jié)將介紹與這些軟件技術(shù)相關(guān)的實現(xiàn)。2.4.1OpenCV庫介紹OpenCV是

學(xué)

習(xí)

庫,可

在Linux、Windows、Android和MacOS操作系統(tǒng)上。它由一系列C函數(shù)和少量C++類構(gòu)成,同時提供了Python、Ruby、MATLAB等語言的接口,實現(xiàn)了圖像處理和計算機視覺方面的很多通用算法,主要傾向于實時視覺應(yīng)用。本節(jié)將主要介紹使用Python對OpenCV庫的調(diào)用來完成一些基礎(chǔ)操作。1.圖像存取圖像存取主要包括圖像的讀取、保存、圖片格式的轉(zhuǎn)換等。首先導(dǎo)入OpenCV模塊,讀取一張圖像。讀取單通道灰度圖,把單通道圖片保存后再讀取。cv2.IMWRITE_JPEG_QUALITY指定了jpg質(zhì)量,范圍為0到100,默認值為95,值越高畫質(zhì)越好,文件越大。cv2.IMWRITE_PNG_COMPRESSION指定了png質(zhì)量,范圍為0到9,默認值為3,值越高文件越小,畫質(zhì)越差。2.圖像縮放、剪裁、補邊cv2.resize()函數(shù)用于圖片的大小縮放,可以將一張圖片縮放為指定大小。如不直接指定縮放后的大小,可通過fx和fy指定縮放比例,值為0.5則表示長寬都為原來的一半。cv2.INTER_LINEAR在這里指定為最近鄰插值。在上張圖片的基礎(chǔ)上,上下各貼50像素的黑邊,生成300×300的圖像最后對照片中的局部進行剪裁。3.相機功能VideoCapture用于從相機設(shè)備或電腦文件夾中捕獲圖像和視頻。VideoWriter用于生成視頻。下面的代碼會根據(jù)電腦攝像頭捕捉到的信息,在img文件夾下生成一個save.avi的視頻文件。首先導(dǎo)入一些必要的庫,定義捕獲圖像的間隔、總幀數(shù)和輸出文件的幀率。2.4.2Python調(diào)用OpenCV庫實現(xiàn)人臉識別人臉識別就是對輸入的圖像判斷其中是否有人臉,并識別出人臉的位置及人臉圖像所對應(yīng)的人。人臉識別包含了人臉檢測和人臉識別兩部分,即檢測人臉的位置和識別人臉的類別。下面將介紹人臉識別在OpenCV中的相應(yīng)模塊,相應(yīng)實驗環(huán)境如表2.1所示。1.人臉檢測人臉檢測的主要任務(wù)是構(gòu)造一個能夠區(qū)分人臉實例和非人臉實例的分類器,通過不同的特征進行一步步篩選,最終得出所屬的分類。本節(jié)將以Haar級聯(lián)分類器為例實現(xiàn)圖像中的人

測。OpenCV中

訓(xùn)

聯(lián)

使

用,在

應(yīng)

的haarcascades、hogcascades、lbpcascades文件夾中分別存放著Haar、HOG、LBP級聯(lián)分類器,它們以.xml的文件形式存放在OpenCV的源文件中,不同的.xml文件可以檢測不同的類型,如眼睛、眼鏡、正面人臉、鼻子等。加載級聯(lián)分類器,其中filename是分類器的路徑和名稱。人臉檢測使用的是cv2.CascadeClassifier.detectMultiScale()函數(shù),它可以檢測出圖片中的所有人臉,該函數(shù)由分類器對象調(diào)用。其中,image是待檢測圖片,通常為灰度圖;scaleFactor表示在前后兩次的掃描中,搜索窗口的縮放比例;minNeighbors表示構(gòu)成檢測目標(biāo)的相鄰矩形的最小個數(shù)。下面是人臉檢測示例代碼,加載了Haar分類器,識別出圖片中的人臉,繪制人臉位置并保存為新的圖片。本實驗

數(shù)

據(jù)

是WIDERFACE(下

址:/open_x0002_datasets/WIDER_FACE)人臉檢測數(shù)據(jù)集,包含32203張圖片,以及393703個標(biāo)注人臉。從此數(shù)據(jù)集中選取圖片,運行以上代碼,檢測結(jié)果如圖2.11所示。2.人臉識別人臉識別就是要找到一個模型,使之可以將當(dāng)前人臉采用與人臉檢測相同的方法提取特征,再從已有特征集中找出當(dāng)前特征的最近鄰樣本,從而得到當(dāng)前樣本的標(biāo)簽。OpenCV中有三種人臉識別的方式,分別為LBPH、EigenFishface、Fisherfaces方法。下面以LBPH方法為例,實現(xiàn)簡單的人臉識別功能。本實

使

數(shù)

據(jù)

是PubFig人

數(shù)

據(jù)

集(下

址:/CAVE/databases/pubfig/),包含從互聯(lián)網(wǎng)收集的200人的58797張圖片。從中選取部分?jǐn)?shù)據(jù)集,將不同的人臉圖片分別放入不同的文件夾中,并將文件夾以人臉類別命名。讀取數(shù)據(jù)路徑中所有文件夾和其中的人臉圖片,分別和標(biāo)簽一一對應(yīng)。圖2.12所示為組織好的人臉數(shù)據(jù)集。2.4.3Linux開發(fā)在進行智能機器人的設(shè)計和實現(xiàn)時,需要選擇合適的開發(fā)環(huán)境,以方便地調(diào)試和測試智能機器人的性能。Linux作為一種廣受歡迎的開源系統(tǒng),成為了智能機器人開發(fā)的首選環(huán)境之一。本節(jié)首先對Linux系統(tǒng)進行簡單的介紹,然后說明如何使用Linux進行智能機器人的開發(fā)。1.Linux系統(tǒng)介紹20世紀(jì)80年代,計算機主要的操作系統(tǒng)包括Unix、DOS和MacOS,其中Unix價格昂貴,DOS系統(tǒng)的使用方式復(fù)雜艱難,而MacOS則僅適用于蘋果計算機。因此,計算機領(lǐng)域亟需一個強大、廉價、開源且開放的操作系統(tǒng)。在這樣的背景下,1991年,來自芬蘭赫爾辛基大學(xué)的LinusTorvalds基于MINIX操作系統(tǒng)開發(fā)了Linux0.01,開啟了Linux時代。相比于傳統(tǒng)的操作系統(tǒng),Linux去除了Unix繁雜的核心程序,能夠適用于一般的計算機,并且完全開源,因此一經(jīng)問世便獲得了廣泛的應(yīng)用。對于軟硬件開發(fā)者來說,Linux還具有其他操作系統(tǒng)所不具有的優(yōu)勢,那就是Linux具有強大的開放性,可以由用戶隨意裁剪和修改源代碼,且與其他系統(tǒng)相互兼容,這使得Linux不僅可以運行在多種硬件平臺上,還可以作為嵌入式操作系統(tǒng)運行在獨立的產(chǎn)品(如掌上電腦、游戲機等)中。Linux操作系統(tǒng)具有多個發(fā)行版本,根據(jù)開發(fā)者的需求和使用習(xí)慣不同,可以選擇適合自己的版本。具有代表性且使用范圍較廣的Linux發(fā)行版本有以下幾種:(1)RedHatLinux。RedHat被稱為最受認可的Linux品牌,其特點是具有收費版本,使用人數(shù)眾多,適合專業(yè)的商業(yè)開發(fā)公司使用。(2)UbuntuLinux。該版本基于DebianLinux發(fā)展而來,具有界面友好、易于入門、硬件支持全面、完全免費的特點,對于習(xí)慣使用圖形界面的開發(fā)者是十分適宜的選擇。(3)GentooLinux。Gentoo發(fā)行版本具有安裝復(fù)雜、管理便捷、設(shè)計簡潔和自由性高的特點,許多開發(fā)者使用這一操作系統(tǒng)開發(fā)軟硬件產(chǎn)品。除了上述介紹的三種Linux發(fā)行版本,還有許多優(yōu)秀的Linux操作系統(tǒng)為智能機器人及其他各類軟硬件產(chǎn)品的開發(fā)提供了便捷而高效的開發(fā)環(huán)境。無論是何種版本,其采用的內(nèi)核都是類似的,因此,在學(xué)習(xí)Linux基礎(chǔ)命令時也十分方便。2.Linux基礎(chǔ)命令下面介紹基礎(chǔ)的Linux命令。Linux命令的基本格式為:命令名[選項][參數(shù)]。其中,命令名是整條命令最關(guān)鍵的部分,具有唯一性。選項是命令的可選內(nèi)容,參數(shù)是命令名的處理對象。以下是部分常用指令。上述命令涵蓋了Linux系統(tǒng)下創(chuàng)建、編輯、移動、刪除、復(fù)制、查找文件及安裝、更新和卸載軟件的方式,掌握這些命令,就能夠?qū)inux系統(tǒng)有初步的認識。不過,在采用Linux系統(tǒng)開發(fā)智能機器人時,還需要使用大量的開發(fā)工具,如硬件邏輯分析儀、構(gòu)建工具、基準(zhǔn)測試程序、模擬器、集成開發(fā)環(huán)境、軟件調(diào)試器和跟蹤器等。(1)硬件邏輯分析儀。智能機器人的實現(xiàn)離不開集成數(shù)字電路的工作。由于數(shù)字電路通常具有運行速度快、狀態(tài)變化頻繁的特點,因此開發(fā)者難以即時捕捉信號的變化。邏輯分析儀可以將數(shù)字電路中的信號轉(zhuǎn)換為時序圖等易于觀察的信號,從而讓開發(fā)者更好地檢查電路系統(tǒng)是否正常工作。(2)構(gòu)建工具。構(gòu)建工具是由一組不同的軟件開發(fā)工具組成的,如GCC、Binutils和Glibc等。構(gòu)建工具能夠編譯和運行特定的程序語言。(3)基準(zhǔn)測試程序。開發(fā)者通常使用基準(zhǔn)測試程序來測量硬件的最高實際運行性能以及軟件的性能效果。根據(jù)所測試的軟硬件范圍不同,基準(zhǔn)測試程序又可以進一步分為微基準(zhǔn)測試程序和宏基準(zhǔn)測試程序,前者主要測量軟硬件某一特定方面的性能,后者則測量系統(tǒng)的總體性能。(4)集成開發(fā)環(huán)境。集成開發(fā)環(huán)境適用于提供程序開發(fā)環(huán)境的應(yīng)用程序,可以為開發(fā)者方便地提供代碼編寫、分析、編譯、調(diào)試等功能,提高軟硬件開發(fā)的效率。在進行Linux開發(fā)時,常用的集成開發(fā)環(huán)境包括Vim、Eclipse和Annaconda等。在上述介紹的集成開發(fā)環(huán)境中,Annaconda是較為常用的。下一節(jié)將介紹Annaconda的安裝方式和在該集成開發(fā)環(huán)境下如何使用Pytorch庫進行智能機器人的開發(fā)。2.4.4Anaconda介紹、

安裝及Pytorch介紹、

使用在設(shè)計和實現(xiàn)智能機器人的過程中,軟件設(shè)計是必不可少的環(huán)節(jié)。如果說硬件是機器人的軀干和骨骼,那么軟件就是機器人實現(xiàn)智能的靈魂。良好的集成開發(fā)環(huán)境可以提高智能機器人軟件設(shè)計的效率和速度,還能夠節(jié)約開發(fā)成本、測試成本。Anaconda就是常用的集成開發(fā)環(huán)境之一。1.Anaconda介紹及安裝Anaconda是一個開源的Python開發(fā)環(huán)境,包括Conda、Python和超過180種已安裝的函數(shù)包及其依賴項,可以便捷地對Python函數(shù)包和環(huán)境進行管理和使用。Anaconda能夠在Linux、MacOS和Windows操作系統(tǒng)中使用,本節(jié)主要介紹的是Linux系統(tǒng)下的安裝步驟。(1)圖2.14所示為Anaconda官網(wǎng)界面,首先確定Linux系統(tǒng)版本,然后在Anaconda官網(wǎng)(www.A/)中下載合適的Anaconda安裝包。(2)如果使用的是帶有圖形界面的系統(tǒng),可以直接進入安裝包所在的目錄界面;否則,使用上一節(jié)所介紹的命令進入安裝包所在的文件目錄。找到安裝包后,在當(dāng)前界面打開終端,輸入如下命令:$shAnaconda安裝包全名.sh(3)輸入命令后,進入安裝界面,如圖2.15所示,按下回車鍵繼續(xù)安裝。(4)閱讀如圖2.16和圖2.17所示的安裝協(xié)議,閱讀結(jié)束后,輸入“yes”繼續(xù)安裝。(5)選擇安裝目錄,按下回車鍵即安裝在當(dāng)前默認目錄下,如圖2.18所示。(6)安裝結(jié)束,可以選擇對Anaconda進行初始化,圖2.19所示為安裝結(jié)束后所顯示的界面。2.Pytorch介紹和使用俗話說,工欲善其事,必先利其器。Pytorch作為深度學(xué)習(xí)的主要神經(jīng)網(wǎng)絡(luò)框架之一,可謂是十分重要的“器”了。Pytorch由Facebook開源,是一個對多維矩陣數(shù)據(jù)進行張量操作、專門針對GPU加速的深度神經(jīng)網(wǎng)絡(luò)編程,在機器學(xué)習(xí)和深度學(xué)習(xí)領(lǐng)域有著廣泛的應(yīng)用。Pytorch具有簡潔、快速、易于使用的特點。其簡潔主要體現(xiàn)在Pytorch不追求過多的函數(shù)封裝,而是遵循從張量(tensor)到變量(variable)再到模塊(module)的層次原則。這不但使Pytorch能夠靈活地使用,還使得其運行速度更快,在使用過程中也更加方便。由于Pytorch是專門為GPU進行深度學(xué)習(xí)而開發(fā)的,因此,為了最大化發(fā)揮Pytorch的價值,在安裝Pytorch時應(yīng)首先安裝CUDA。如果沒有安裝CUDA,Pytorch官網(wǎng)也提供了CPU版本的安裝命令,用戶可自行選擇。接下來介紹在Anaconda中安裝Pytorch的方法,并介紹一些常用的Pytorch函數(shù)。(1)如圖2.20所示,在conda中輸入以下指令,創(chuàng)建Pytorch環(huán)境(Python版本根據(jù)實際安裝的Anaconda版本確定)。$condacreatenpytorchpython=3.9(3)進入Pytorch環(huán)境。$condaactivatepytorch(4)打

開Pytorch官

網(wǎng)(/),尋

統(tǒng)

的Pytorch版

本,根

據(jù)

網(wǎng)

載。圖2.22給

例,即

在Linux系

統(tǒng)、CUDA10.2版本的Conda虛擬環(huán)境中,使用Python語言安裝穩(wěn)定的最新版Pytorch所使用的命令。(5)在Anaconda環(huán)境下輸入上述命令,即可成功安裝Pytorch。在安裝

了Pytorch后,即

便

經(jīng)

網(wǎng)

絡(luò)

學(xué)

習(xí)、訓(xùn)

理。Pytorch中常用的函數(shù)主要涉及模型的加載、保存和參數(shù)的優(yōu)化等,掌握這些函數(shù)的使用方法,能夠提高神經(jīng)網(wǎng)絡(luò)模型學(xué)習(xí)的效率。常用的模型加載和保存函數(shù)如下:Pytorch庫定義了部分模型的基類,如卷積層和全連接層處理等,如下所示。在開發(fā)者編寫自己的模型時,需要繼承基類模型。由于神經(jīng)網(wǎng)絡(luò)模型通常具有較大的規(guī)模,為了更加便捷和快速地加載模型,也可以選擇只加載模型參數(shù)。前面已經(jīng)介紹過,在進行Pytorch設(shè)計時采用了tensor,即張量的概念。以下是處理張量數(shù)據(jù)時常用的函數(shù),可以方便地對張量進行擴充、改變、轉(zhuǎn)置等。2.4.5基于Pytorch的語音識別語音識別是智能機器人在自然語言處理方面的主要應(yīng)用之一。當(dāng)智能機器人與人類互動時,應(yīng)當(dāng)能夠“聽懂”人類的命令、要求和其他語句,從而完成交互。本節(jié)介紹語音識別的相關(guān)知識,以及利用Python深度學(xué)習(xí)完成語音識別的基本步驟。1.語音識別簡介語音識別技術(shù)也稱為自動語音識別(ASR)。語音識別旨在將人類語音中的詞匯內(nèi)容轉(zhuǎn)換為計算機可讀的輸入,如按鍵、二進制編碼或者字符序列等。隨著計算機技術(shù)的迅速發(fā)展,語音識別技術(shù)已經(jīng)廣泛地應(yīng)用在人們生活的各個領(lǐng)域,如家庭語音助理、手機語音助手和車載語音導(dǎo)航等。語音識別的重點和難點主要在于計算機所理解的輸入是時間序列,而人類所理解的則是語音中的含義。因此,語音識別需要建立起語音含義與時間序列之間的關(guān)系,使得計算機能夠正確理解人類語音。在深度學(xué)習(xí)領(lǐng)域,隨著自然語言處理技術(shù)的不斷發(fā)展,語音識別已經(jīng)獲得了長足的進步,如循環(huán)時間網(wǎng)絡(luò)、長短時記憶網(wǎng)絡(luò)和注意力機制等。2.簡單語音識別示例本節(jié)展示一個基于Pytorch、Tensorflow和Numpy深度學(xué)習(xí)函數(shù)庫建立的語音識別網(wǎng)絡(luò),實驗環(huán)境如表2.2所示。2.4.6MATLAB介紹、

安裝及使用在智能機器人開發(fā)軟件應(yīng)用中,MATLAB憑借其強大的科學(xué)計算、可視化和交互式程序設(shè)計能力,成為了主流開發(fā)軟件之一。與本章所介紹的Pytorch、Anaconda等軟件有所不同,MATLAB以矩陣為基本數(shù)據(jù)單位,主要完成有效數(shù)值計算任務(wù),廣泛應(yīng)用于數(shù)值分析、數(shù)值和符號計算、工程繪圖、控制系統(tǒng)仿真、數(shù)字圖像處理等研究領(lǐng)域。MATLAB為C/C++、Fortran、Java和Python等編程語言提供了引擎API,能夠支持使用這些編程語言執(zhí)行MATLAB命令,從而大大提高了開發(fā)效率和編程速度。另外,MATLAB還具有若干功能強大的模塊集和工具箱,使得開發(fā)人員可以直接調(diào)用成熟的模塊與工具,減少編程時間。本節(jié)主要對MATLAB的安裝方式進行簡單介紹,并對智能機器人開發(fā)的相關(guān)環(huán)境搭載示例。1.MATLAB安裝介紹(1)MATLAB支持Mac、Windows和Linux平臺,開發(fā)者可以根據(jù)自己的實際情況選擇不同平臺的安裝程序。在安裝程序時,有以下兩種選擇:①

在官網(wǎng)(/products/matlab.html)中下載合適的安裝包;②

如果開發(fā)者是高校學(xué)生或企業(yè)人員,可以在高?;蚱髽I(yè)的正版軟件平臺中下載MATLAB安裝包。(2)安裝程序下載完成后,找到setup(安裝程序),如圖2.23所示,以管理員的身份運行程序。(3)如圖2.24所示,在彈出的界面中選擇安裝方式,推薦選擇“使用文件安裝密鑰”,否則可能會因為網(wǎng)絡(luò)問題安裝失敗。(4)閱讀如圖2.25所示的“許可協(xié)議”,并點擊“下一步”。(5)使用“文件安裝密鑰”進行安裝,如圖2.26所示。(6)如圖2.27所示,選擇安裝文件夾。由于安裝MATLAB時需要較大的存儲空間,因此不建議將其安裝在系統(tǒng)盤中。(7)根據(jù)自己的開發(fā)需求,選擇所要安裝的產(chǎn)品,圖2.28和2.29展示了所有產(chǎn)品均安裝、添加快捷方式的選項。(8)如圖2.30所示,確認安裝完成,即可開始使用MATLAB進行開發(fā)工作。2.搭載開發(fā)環(huán)境在使用MATLAB進行智能機器人開發(fā)時,既需要深度學(xué)習(xí)(如神經(jīng)網(wǎng)絡(luò))的支持,也需要實現(xiàn)機器人的建模與仿真。MATLAB不但可以通過簡潔的代碼實現(xiàn)深度學(xué)習(xí)功能,還提供了機器人工具箱(RoboticsSystemToolbox)供開發(fā)者使用。(1)機器人工具箱的安裝及簡介。安裝機器人工具箱的方法有以下兩種:①

在MATLAB官網(wǎng)中搜索“RoboticsSystemToolbox”,并選擇與MATLAB匹配的版本下載;②

在MATLAB應(yīng)用界面中使用“添加項(Add-Ons)”添加該工具箱。機器人工具箱提供了設(shè)計、模擬、測試和部署機器人的工具和算法,能夠在仿真環(huán)境中進行機器人的碰撞檢測、路徑規(guī)劃、軌跡生成、正反向運動學(xué)和動力學(xué)算法設(shè)計。同時,還可以將算法直接連接到KinovaGen3等機器人平臺上,驗證算法性能。(2)深度學(xué)習(xí)工具箱的安裝和介紹。MATLAB具

學(xué)

習(xí)

、計

箱,能夠完成計算機視覺、強化學(xué)習(xí)、遷移學(xué)習(xí)等深度學(xué)習(xí)任務(wù)。深度學(xué)習(xí)工具箱提供了簡單的MATLAB命令來創(chuàng)建深度神經(jīng)網(wǎng)絡(luò)的各個層,并以工作流的方

現(xiàn)

覺、自

理、音

理、自

駛、無

等。MATLAB還提供了深度網(wǎng)絡(luò)設(shè)計器、試驗管理器、量化器和圖像標(biāo)注器等深度學(xué)習(xí)App輔助深度學(xué)習(xí)任務(wù)。2.5智能機器人常用硬件軟件為機器人提供了計算、處理的能力,就像是人類的大腦為人們提供了思想的能力一樣。但是,想讓機器人真正地運動起來,像人一樣行走、移動和完成動作,還需要硬件的幫助。本節(jié)主要介紹機器人的常用硬件裝置,如移動裝置、感知裝置和主控裝置等。2.5.1機器人移動裝置對于一個靜止的物體,需要給它施加外力才可以讓它移動到其他位置。但機器人是如何獲得外力的呢?一種非常便捷和低成本的方式則是使用電能,將電能轉(zhuǎn)換為動能,就可以讓物體移動變得很容易。本小節(jié)將介紹常用于機器人制作的電機,包括直流電機、步進電機和舵機以及它們的控制器,并介紹如何使用它們實現(xiàn)機器人移動。1.直流電機和步進電機直流電機的工作原理基于電流流過導(dǎo)線時產(chǎn)生磁場。電機中的轉(zhuǎn)子一般由銅制漆包線繞制而成,當(dāng)電流通過時會產(chǎn)生強大的磁場,這個磁場和電機定子上的固定磁場產(chǎn)生磁力作用,從而電機可以傳動。電流通過電機的方向可以決定轉(zhuǎn)子磁場的方向,該磁場的方向決定了電機的轉(zhuǎn)動方向。所以如果想要電機反向轉(zhuǎn)動,只需要交換電機的兩根連線即可。區(qū)別于直流電機,還有一種電機稱為步進電機,它專門為精確的旋轉(zhuǎn)控制所設(shè)計。步進電機的工作原理和直流電機相同,都是基于電流流過導(dǎo)線時產(chǎn)生磁場。但不同點在于,步進電機每次只轉(zhuǎn)動一個步距角而不是無止境地旋轉(zhuǎn)。轉(zhuǎn)動每一個步距角后,只有在磁場進行了正確的換相后才能轉(zhuǎn)動下一個步距角,所以它的旋轉(zhuǎn)角度可以被精確控制。2.舵機舵機作為角度微控制器,被大量應(yīng)用在機器人、機械臂、飛行器等需要精確控制角度的領(lǐng)域。它的基本

圖2.31所

示。要

驅(qū)

機,必

應(yīng)

的PWM信號,舵機的旋轉(zhuǎn)角度一般為180°,例如,當(dāng)給舵機輸入的脈沖信號寬度為2ms時,舵機的輸出軸將旋轉(zhuǎn)180°。舵機主要分為兩種,即數(shù)字舵機和模擬舵機,二者的機械結(jié)構(gòu)一樣,由馬達、減速齒輪和控制電路等組成。模擬電機需要給它不停地發(fā)送PWM信號,才能讓它保持在同一位置,而數(shù)字舵機只需要給它發(fā)送一次PWM信號就可以讓它保持在固定的位置。2.5.2機器人感知裝置人類對外部環(huán)境的感知主要是通過視覺器官、聽覺器官、嗅覺器官和觸覺器官等未完成的。通過這些器官對環(huán)境的感知,我們可以判斷自己處于一個什么樣的環(huán)境中,比如感知冷熱、與物體的距離有多遠等。與人類從環(huán)境獲得感知并進行相應(yīng)活動的行為類似,機器人也應(yīng)擁有感知周圍環(huán)境,根據(jù)環(huán)境變化而改變自身行為的能力。

傳感器則組成了機器人的眼、耳、嘴、臂膀和皮膚,是機器人感知外界的重要幫手,它們猶如人類的感知器官,為機器人提供對外部環(huán)境的感知能力。同時,傳感器還可以用來檢測機器人自身的工作狀態(tài),并按照一定的規(guī)律轉(zhuǎn)換成可用的輸出信號。1.智能視覺傳感器

智能視覺傳感器也稱智能相機,是一種兼具圖像采集、圖像處理和信息傳遞功能的小型機器視覺系統(tǒng),也是一種嵌入式計算機視覺系統(tǒng)。

它將圖像傳感器、數(shù)字處理器、通信模塊和其他外設(shè)集成到一個單一的相機內(nèi)。視覺傳感器的圖像采集單元主要由CCD/CMOS相機、光學(xué)系統(tǒng)、照明系統(tǒng)和圖像采集卡組成,將光學(xué)影像轉(zhuǎn)換成數(shù)字圖像,傳遞給圖像處理單元。

2.聲覺傳感器

聲覺傳感器的作用相當(dāng)于一個麥克風(fēng)。它用來接收聲波,顯示聲音的振動圖像,但不能對噪聲的強度進行測量。聲覺傳感器主要用于感受和解釋在氣體(非接觸感受)、液體或固體(接觸感受)中的聲波。聲覺傳感器的復(fù)雜程度可以從簡單的聲波存在檢測到復(fù)雜的聲波頻率分析,直到對連續(xù)自然語言中單獨語音和詞匯的辨別。國內(nèi)外很多公司都利用聲音識別技術(shù)開發(fā)出了相應(yīng)的產(chǎn)品。比較知名的企業(yè)有思必馳、科大訊飛以及騰訊、百度等巨頭,共闖語音技術(shù)領(lǐng)域。3.接近覺傳感器

接近覺傳感器介于觸覺傳感器和視覺傳感器之間,可以測量距離和方位,而且可以融合視覺和觸覺傳感器的信息。接近覺傳感器可以輔助視覺系統(tǒng)的功能,來判斷對象物體的方位、外形,同時識別其表面形狀。因此,為準(zhǔn)確抓取部件,對機器人接近覺傳感器的精度要求是非常高的。這種傳感器的作用有:發(fā)現(xiàn)前方障礙物,限制機器人的運動范圍,以避免與障礙物發(fā)生碰撞;在接觸對象物前得到必要信息,比如與物體的相對距離、相對傾角,以便為后續(xù)動作做準(zhǔn)備;獲取物體表面各點間的距離,從而得到有關(guān)對象物表面形狀的信息。2.5.3機器人主控裝置一個完整的機器人,除了需要“四肢”來完成運動、“器官”來感知外界環(huán)境外,還需要“大腦”來支配全身的設(shè)備。機器人常用的主控裝置有單片機、FPGA、樹莓派、Arduino等。本小節(jié)將對單片機和FPGA的發(fā)展和原理進行介紹。1.單片機簡介單片機又稱單片微型計算機、微控制單元,是把中央處理器CPU、存儲器、定時/計數(shù)器、各種輸入/輸出接口都集成在一塊集成電路芯片上的微型計算機。單片機具有體積小、成本低、功能全等優(yōu)點,因而在民用和工業(yè)測控領(lǐng)域得到了廣泛的應(yīng)用。簡單來說,單片機就是一塊集成芯片,這塊集成芯片具有一些特殊功能,它的功能實現(xiàn)要靠使用者來編程完成。編程的目的就是控制這個芯片的各個引腳在不同的時間輸出不同的高電平或低電平,進而控制與單片機各個引腳相連接的外圍電路的電氣狀態(tài)?,F(xiàn)如今,許多機器人都使用了單片機,那么單片機在機器人中究竟做了些什么呢?單片機的構(gòu)成如圖2.32所示,如果將單片機比作機器人的大腦,那么CPU負責(zé)思考,內(nèi)存負責(zé)記憶,外設(shè)功能則相當(dāng)于控制外部動作的神經(jīng)系統(tǒng)。以電機控制

溫馨提示

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

最新文檔

評論

0/150

提交評論