機器人控制該怎麼入門?

感謝以下大牛回答及授權轉載!

呂朝陽,Robotics PhD @ Gatech

賀磊,Ph.D. candidate @ hust

王子豪

 

----------------------------------------------------------------------------------------------

呂朝陽:

對於工科領域來說,脫離實踐的學習都是膚淺的,對於控制這種強調經驗的技術更是如此。如果去問一個程序員怎麼學習一塊技術,他必然讓你去多編程。機器人領域也是。如果想把基本功打紮實,那麼實踐更是必不可少了。

對於普通學生入門來說 一款合適的機器人平臺 + 入門級的控制算法進行試驗。同時深入地學習相應地理論知識。

對於一個有控制基礎,需要現學現用的工作者來說,啃一本諸如《現代控制工程》的書籍,在工作者演練,下面的平臺內容直接略過。

關於平臺的選擇和相應的學習教程,我放在最後,防止大圖分散了重點。

先結合機器人來說一下控制。對於設計任何一個控制系統來說,需要了解自己的輸入、輸出、控制元件,和算法。在一個簡易的機器人系統裏,分別對應的原件是:
輸入 --- 傳感器 (聲吶,紅外,攝像頭,陀螺儀,加速度計,羅盤)
控制元件 --- 電機
控制算法 --- 控制板 (小到單片機,大到微機)
輸出 --- 你的控制目標 (比如機器人的路徑跟蹤)

對這四方面都有了解之後,才能基本對機器人的控制有一個較爲感性的認識。這是入門的基礎。如果你對輸入和輸出做一個測量,比如用電機將某個輪子的轉速從10加速到100,把這個測量勾畫出來,那麼這一個響應曲線。如何將電機準確快速地從10加速到100,這就需要一個簡易的反饋控制器。
上面所說的各個傳感器元件,都有廉價版可以購買學習,但隨之引入的問題就是他們不精確,比如有噪聲。消除這個噪聲,你就需要在你的控制系統中引入更多的控制單元來消除這個噪聲,比如加入濾波單元。

上面說這麼多,只是想表達,理論和算法都是有應用背景的,但同時,學習一些暫時無法應用的算法也並不助於入門,甚至可能走偏門,覺得越複雜越好。所有的工程應用者都會說某某算法非常好,但是經典還是PID。倘若不親手設計一個PID系統,恐怕真的領略不到它的魅力。我大學本科的控制課程包含了自動控制理論和現代控制理論,但是直到我設計一個四旋翼無人機的時候,才真正建立了我自己對機器人控制的理解。

推薦的那本《現代控制工程》是一本非常經典的專業書籍,需要理論知識,再進行詳細的學習。我的建議是先玩,玩到需要時,認真學習這部分理論。

-----------------------------------------------------------------------------------------------------
推薦一些機器人平臺。核心都涉及到運動控制。

基於arduino的機器人平臺是最大衆的平臺了,這是一個開源社區,很多關於機器人的簡易設計和控制算法實現都能在google得到。淘寶arduino機器人,包括arduino控制板和各類簡易傳感器,幾百塊之內錢都能得到。
同時推薦一下Udacity上的Robotics課程,基於arduino也都能實現完成。

國外的有些Robotics課程使用的都是Lego Mindstorm作爲實驗平臺(略土豪版)。紅外,聲吶,陀螺儀這些傳感器Lego都有,同時它的電機也可以實現閉環控制。淘寶依舊可以買到lego mindstorm_淘寶搜索(海外代購版,我買過)

Imperial College London的Robotics課程就是以Lego爲實驗平臺的,Andrew Davison的課件上所有的理論都可以用Lego實現Andrew Davison: Robotics Course

如果這些都玩膩了,可以試試玩一個機器人飛行控制,比如四旋翼飛機。飛行器是六自由度控制,因此比小車要更加具有挑戰性,也需要更精確的控制系統。下面這是我以前的一個四旋翼DIY,基於arduino MultiWii的。依舊淘寶四旋翼飛行器 diy_淘寶搜索

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 )。
      • 主機:主要完成人機交互(操作員控制或者調試機器),高級運算(機器人運動規劃等)。由於需要高等運算功能,這部分算法通常是基於操作系統的,硬件載體用通用PC即可。
      • 運動控制器:主要用於改善機器人動力學(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和John Craig於70s末在JPL的工作成果,當時他們是在Stanford臂上做的實驗,研究例如裝配等任務時的力和位置同時控制的情況。
    • 阻抗控制(Impedance Control)是 N.Hogan的工作成果。維納晚年,對人控制機器臂很感興趣。後來,他組織了MIT的Robert Mann,Stephen Jacobsen等一夥人開發了基於肌肉電信號控制的假肢臂,叫Boston Elbow。後來,Hogan繼續Mann的工作,他覺得假肢是給人用的,不應當和工業機器人一樣具有高的剛度,而應該具有柔性,所以後來引入了阻抗。
    • 其他控制。各類機器人都有其特殊的控制問題,對於公共的機器人數學基礎,個人認爲有兩個派比較厲害:一派是Harvard的Roger Brokett及其學生Frank Chongwoo Park等;另一派是UC Berkeley的Shankar Sastry及其學生Richard Murray,Zexiang Li,JJE Slotine,Stephen Boyd等,兩派人馬基本奠定了當今機器人數學基礎框架(由於學識短淺,可能漏掉了其他重要貢獻者)。
  • 建議:自己也在鑽研,共同學習吧。
    • 首先,當然是把描述機器人運動的力學搞定。J.J. Craig出版於80s的《Introduction to Robotics: Mechanics and Control 》,或者R. Murray出版於90s的《A Mathematical Introduction to Robotic Manipulation》都行。當然,更加推薦後者,因爲頂級學術論文很多都採用Lie group的描述方法了。
    • 再次,必要的反饋控制基礎當然是不能少的,推薦Franklin的《Feedback Control of Dynamic Systems》。
    • 最後,如果是廣大的Ph.D.朋友們,硬件就不必玩了,直接上paper吧。讀paper,讀各種牛人的paper。發paper,最好往ICRA和IJRR裏面灌水。P.S.:被paper虐的吐了一口老血:-)
    • ----------------------------------- ---------------------------------------------------------
發佈了22 篇原創文章 · 獲贊 131 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章