作者:呂朝陽 來源:知乎
對(duì)于工科領(lǐng)域來說,脫離實(shí)踐的學(xué)習(xí)都是膚淺的,對(duì)于控制這種強(qiáng)調(diào)經(jīng)驗(yàn)的技術(shù)更是如此。如果去問一個(gè)程序員怎么學(xué)習(xí)一塊技術(shù),他必然讓你去多編程。機(jī)器人領(lǐng)域也是。如果想把基本功打扎實(shí),那么實(shí)踐更是必不可少了。
對(duì)于普通學(xué)生入門來說 一款合適的機(jī)器人平臺(tái) + 入門級(jí)的控制算法進(jìn)行試驗(yàn)。同時(shí)深入地學(xué)習(xí)相應(yīng)地理論知識(shí)。
對(duì)于一個(gè)有控制基礎(chǔ),需要現(xiàn)學(xué)現(xiàn)用的工作者來說,啃一本諸如《現(xiàn)代控制工程》的書籍,在工作者演練,下面的平臺(tái)內(nèi)容直接略過。
關(guān)于平臺(tái)的選擇和相應(yīng)的學(xué)習(xí)教程,我放在最后,防止大圖分散了重點(diǎn)。先結(jié)合機(jī)器人來說一下控制。對(duì)于設(shè)計(jì)任何一個(gè)控制系統(tǒng)來說,需要了解自己的輸入、輸出、控制元件,和算法。在一個(gè)簡易的機(jī)器人系統(tǒng)里,分別對(duì)應(yīng)的原件是:
輸入 --- 傳感器 (聲吶,紅外,攝像頭,陀螺儀,加速度計(jì),羅盤)
控制元件 --- 電機(jī)
控制算法 --- 控制板 (小到單片機(jī),大到微機(jī))
輸出 --- 你的控制目標(biāo) (比如機(jī)器人的路徑跟蹤)
對(duì)這四方面都有了解之后,才能基本對(duì)機(jī)器人的控制有一個(gè)較為感性的認(rèn)識(shí)。這是入門的基礎(chǔ)。如果你對(duì)輸入和輸出做一個(gè)測(cè)量,比如用電機(jī)將某個(gè)輪子的轉(zhuǎn)速從10加速到100,把這個(gè)測(cè)量勾畫出來,那么這一個(gè)響應(yīng)曲線。如何將電機(jī)準(zhǔn)確快速地從10加速到100,這就需要一個(gè)簡易的反饋控制器。
上面所說的各個(gè)傳感器元件,都有廉價(jià)版可以購買學(xué)習(xí),但隨之引入的問題就是他們不精確,比如有噪聲。消除這個(gè)噪聲,你就需要在你的控制系統(tǒng)中引入更多的控制單元來消除這個(gè)噪聲,比如加入濾波單元。上面說這么多,只是想表達(dá),理論和算法都是有應(yīng)用背景的,但同時(shí),學(xué)習(xí)一些暫時(shí)無法應(yīng)用的算法也并不助于入門,甚至可能走偏門,覺得越復(fù)雜越好。所有的工程應(yīng)用者都會(huì)說某某算法非常好,但是經(jīng)典還是PID。倘若不親手設(shè)計(jì)一個(gè)PID系統(tǒng),恐怕真的領(lǐng)略不到它的魅力。我大學(xué)本科的控制課程包含了自動(dòng)控制理論和現(xiàn)代控制理論,但是直到我設(shè)計(jì)一個(gè)四旋翼無人機(jī)的時(shí)候,才真正建立了我自己對(duì)機(jī)器人控制的理解。《現(xiàn)代控制工程》是一本非常經(jīng)典的專業(yè)書籍,需要理論知識(shí),再進(jìn)行詳細(xì)的學(xué)習(xí)。我的建議是先玩,玩到需要時(shí),認(rèn)真學(xué)習(xí)這部分理論。
-----------------------------------------------------------------------------------------------------
推薦一些機(jī)器人平臺(tái)。核心都涉及到運(yùn)動(dòng)控制。
基于arduino的機(jī)器人平臺(tái)是最大眾的平臺(tái)了,這是一個(gè)開源社區(qū),很多關(guān)于機(jī)器人的簡易設(shè)計(jì)和控制算法實(shí)現(xiàn)都能在google得到。淘寶arduino機(jī)器人,包括arduino控制板和各類簡易傳感器,幾百塊之內(nèi)錢都能得到。同時(shí)推薦一下Udacity上的Robotics課程,基于arduino也都能實(shí)現(xiàn)完成。國外的有些Robotics課程使用的都是Lego Mindstorm作為實(shí)驗(yàn)平臺(tái)(略土豪版)。紅外,聲吶,陀螺儀這些傳感器Lego都有,同時(shí)它的電機(jī)也可以實(shí)現(xiàn)閉環(huán)控制。
Imperial College London的Robotics課程就是以Lego為實(shí)驗(yàn)平臺(tái)的,Andrew Davison的課件上所有的理論都可以用Lego實(shí)現(xiàn)Andrew Davison: Robotics Course。如果這些都玩膩了,可以試試玩一個(gè)機(jī)器人飛行控制,比如四旋翼飛機(jī)。飛行器是六自由度控制,因此比小車要更加具有挑戰(zhàn)性,也需要更精確的控制系統(tǒng)。下面這是我以前的一個(gè)四旋翼DIY,基于arduino MultiWii的。
MultiWii是一個(gè)基于arduino的開源飛控平臺(tái),所有c代碼都可得,不多于一兩萬行。如果把這些都研究透了,相比已經(jīng)是專業(yè)水平了。
二
作者:賀磊 來源:知乎
首先,應(yīng)當(dāng)了解到:機(jī)器人控制(Robot Control)的目的是通過人工引入控制改善原有系統(tǒng)的特性,使新的系統(tǒng):1)跟蹤性能(Tracking Performance)更好,2)抗擾動(dòng)性(Diturbance Rejection)更強(qiáng),3)穩(wěn)健性(Robustness)更優(yōu),e.t.c.
機(jī)器人控制器大致可以分為硬件和算法兩個(gè)大方向:
機(jī)器人控制硬件
基本控制結(jié)構(gòu):當(dāng)年,N. Wiener對(duì)神經(jīng)科學(xué)很感興趣,發(fā)現(xiàn)其實(shí)機(jī)器的反饋控制和人的運(yùn)動(dòng)控制機(jī)理是相似的。控制工程中的:傳感器(各種位置、速度、力傳感器等)、控制器(各種處理器以及控制算法)和驅(qū)動(dòng)器(電機(jī)、液壓、氣動(dòng)、記憶合金等)三部分,分別對(duì)應(yīng)于人的感受器(receptor)(例如:視覺、聽覺、味覺、嗅覺、觸覺等外感受器)、神經(jīng)系統(tǒng)(中樞和周圍神經(jīng)系統(tǒng))和效應(yīng)器(effector)(肌肉、骨骼),只不過人的結(jié)構(gòu)更加復(fù)雜。
層次控制體系:了解了控制的基本結(jié)構(gòu),剩下的事情就是設(shè)計(jì)控制系統(tǒng)。如今,大家設(shè)計(jì)控制系統(tǒng)的方法還是比較統(tǒng)一的,基本都可以歸結(jié)為5層的層次體系:1)主機(jī)(Host),2)運(yùn)動(dòng)控制器(Motion Controller),3)伺服驅(qū)動(dòng)器(Servo Driver),4)電機(jī)(Motor),5)機(jī)構(gòu)(Mechanism )。
主機(jī):主要完成人機(jī)交互(操作員控制或者調(diào)試機(jī)器),高級(jí)運(yùn)算(機(jī)器人運(yùn)動(dòng)規(guī)劃等)。由于需要高等運(yùn)算功能,這部分算法通常是基于操作系統(tǒng)的,硬件載體用通用計(jì)算機(jī)即可。
運(yùn)動(dòng)控制器:主要用于改善機(jī)器人動(dòng)力學(xué)(Robot Dynamics)。機(jī)器人的機(jī)械本身并不具備跟蹤軌跡的能力,需要外加控制來改善。由于需要大量的實(shí)時(shí)運(yùn)算,這部分通常是基于實(shí)時(shí)操作系統(tǒng),比如QNX等,硬件載體可以用ARM或其他。比如,工業(yè)界的工業(yè)機(jī)器人主要使用運(yùn)動(dòng)反饋(Motion Feedback),也即將驅(qū)動(dòng)器配置為位置控制或者速度控制模式,此時(shí)運(yùn)動(dòng)控制器的主要用于補(bǔ)償傳動(dòng)系統(tǒng)非線性性,例如:由于齒輪間隙、微小彈性變形導(dǎo)致的末端偏移。
伺服驅(qū)動(dòng)器:主要用于改善電機(jī)動(dòng)力學(xué)(Motor Dynamics)。由于電機(jī)本身物理特性并不具備良好的位置、速度和力矩跟蹤能力,因此需要依靠控制來改善。這部分需要更高的實(shí)時(shí)性能,因?yàn)殡姍C(jī)的響應(yīng)速度快,需要us級(jí)定時(shí),所以可以使用高性能DSP。比如,直流有刷電機(jī)中轉(zhuǎn)子速度正比于反向電動(dòng)勢(shì)、力矩正比于電樞電流,而沒有物理量能夠直接控制位置,此時(shí)需要外加位置控制器。
電機(jī):充當(dāng)執(zhí)行器,將電信號(hào)轉(zhuǎn)化為機(jī)械運(yùn)動(dòng)。
機(jī)械本體:被控制的終極對(duì)象。
算法的編寫:鑒于如今幾乎沒人再用Op-Amp搭建模擬計(jì)算機(jī)的事實(shí),可以說算法就是個(gè)編程問題。基本的編程語言能力,比如MATLAB、C、C++是必須的。設(shè)計(jì)好算法之后,還需面對(duì)另外幾個(gè)問題:
離散化問題(Discretization):連續(xù)算法的離散化是必要的,因?yàn)槿缃裼?jì)算機(jī)都是數(shù)字系統(tǒng)。對(duì)于線性系統(tǒng),比如電機(jī)控制,方法當(dāng)然就是從s域(傳遞函數(shù))到z域(Z變換)再到t域(差分方程)的變換,非線性的就得研究微分方程的各種數(shù)值方法了。
混合控制問題(Hybrid Control):幾乎當(dāng)前所有的機(jī)器人控制系統(tǒng)都不僅有一個(gè)控制模式,比如:回初始位置、運(yùn)動(dòng)控制模式、人工試教模式等等,每個(gè)模式需要特殊的控制算法。單個(gè)系統(tǒng)存在多個(gè)控制器時(shí)被稱為混合控制系統(tǒng),混合控制系統(tǒng)常常使用有限狀態(tài)機(jī)(Finite State Machine, FSM)建模,狀態(tài)機(jī)的切換需注意一些問題,比如芝諾問題。
通信問題(Communication):通常機(jī)器人系統(tǒng)都包含幾十個(gè),甚至上百個(gè)傳感器以及幾個(gè)到十幾個(gè)驅(qū)動(dòng)器,通信時(shí)常是個(gè)頭疼的問題。問題的復(fù)雜性源于:通信對(duì)象多(并發(fā)問題),順序需要協(xié)調(diào)(時(shí)序問題),通信的速率需要兼顧(阻塞問題)。個(gè)人傾向于使用基于“事件驅(qū)動(dòng)模型”+“有限狀態(tài)機(jī)模型”的混合模型來處理此類問題。
機(jī)器人控制理論:控制方法千奇百怪,這里僅舉機(jī)器人臂的兩個(gè)比較經(jīng)典而常用的方法:混合力位控制和阻抗控制。
混合力/位控制(Hybrid Force/Position Control)是Mark Raibert(現(xiàn)今Boston Dynamics老板)和John Craig于70s末在JPL的工作成果,當(dāng)時(shí)他們是在Stanford臂上做的實(shí)驗(yàn),研究例如裝配等任務(wù)時(shí)的力和位置同時(shí)控制的情況。
阻抗控制(Impedance Control)是N.Hogan的工作成果。維納晚年,對(duì)人控制機(jī)器臂很感興趣。后來,他組織了MIT的Robert Mann,Stephen Jacobsen等一伙人開發(fā)了基于肌肉電信號(hào)控制的假肢臂,叫Boston Elbow。后來,Hogan繼續(xù)Mann的工作,他覺得假肢是給人用的,不應(yīng)當(dāng)和工業(yè)機(jī)器人一樣具有高的剛度,而應(yīng)該具有柔性,所以后來引入了阻抗。
其他控制。
建議:自己也在鉆研,共同學(xué)習(xí)吧。
首先,把描述機(jī)器人運(yùn)動(dòng)學(xué)和力學(xué)搞定。J.J. Craig出版于80s的《Introduction to Robotics: Mechanics and Control 》,或者R. Murray出版于90s的《A Mathematical Introduction to Robotic Manipulation》都行。對(duì)于機(jī)器人的數(shù)學(xué)基礎(chǔ),最新的成就是基于Differentiable Manifold(微分流形)、Lie group(李群)和Screw Theory(旋量理論)的。在這方面,個(gè)人認(rèn)為以下研究團(tuán)隊(duì)奠定了機(jī)器人的數(shù)學(xué)基礎(chǔ)理論:
1) Harvard的Roger Brokett教授及其學(xué)生Frank Chongwoo Park等;
2) UC Berkeley的Shankar Sastry教授及其學(xué)生Richard Murray,Zexiang Li等。
3) uPenn的Vijay Kumar教授,他和他的學(xué)生Milos Zefran以及Calin Belta在90年代研究了基于Differentiable Manifold的單剛體運(yùn)動(dòng)學(xué)和動(dòng)力學(xué)。
4)上述2)中Richard Murray的學(xué)生Andrew Lewis和Francesco Bullo等研究了基于differentiable manifold和Lagrange Mechanics的機(jī)器人動(dòng)力學(xué)以及幾何控制理論(Geometric Control Theory)。
再次,必要的反饋控制基礎(chǔ)當(dāng)然是不能少的。關(guān)于控制,并不推薦把下面的教材通讀一遍,僅需要了解必要的控制理念即可。陷入繁雜的細(xì)節(jié)往往不得要領(lǐng),并浪費(fèi)時(shí)間。具體的問題需要研讀論文。
首先,要建立控制理論的基本概念,如狀態(tài)方程、傳遞函數(shù)、前饋、反饋、穩(wěn)定性等等,推薦Stanford大學(xué)教授Franklin的《Feedback Control of Dynamic Systems》;
關(guān)于機(jī)器人控制的入門讀物,解釋的最清晰的當(dāng)屬M(fèi)W Spong的《Robot modeling and control》,書中不僅詳細(xì)講解了基于機(jī)器人動(dòng)力學(xué)的控制,也講解了執(zhí)行器動(dòng)力學(xué)與控制(也即電機(jī)控制)。
關(guān)于非線性控制理論,推薦MIT教授J.J.E. Slotine的《Applied Nonlinear Control》。