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