機器人控制該怎麼入門?
這裡指的控制是自動控制,偏向機器人運動控制一類,應該如何入門,如何在把基礎功打紮實、建立完整的知識構架的原則下,高效地學習?
對於工科領域來說,脫離實踐的學習都是膚淺的,對於控制這種強調經驗的技術更是如此。如果去問一個程序員怎麼學習一塊技術,他必然讓你去多編程。機器人領域也是。如果想把基本功打紮實,那麼實踐更是必不可少了。
對於普通學生入門來說 一款合適的機器人平台 + 入門級的控制演算法進行試驗。同時深入地學習相應地理論知識。
對於一個有控制基礎,需要現學現用的工作者來說,啃一本諸如《現代控制工程》的書籍,在工作者演練,下面的平台內容直接略過。
關於平台的選擇和相應的學習教程,我放在最後,防止大圖分散了重點。
先結合機器人來說一下控制。對於設計任何一個控制系統來說,需要了解自己的輸入、輸出、控制元件,和演算法。在一個簡易的機器人系統里,分別對應的原件是:
輸入 --- 感測器 (聲吶,紅外,攝像頭,陀螺儀,加速度計,羅盤)
控制元件 --- 電機
控制演算法 --- 控制板 (小到單片機,大到微機)
輸出 --- 你的控制目標 (比如機器人的路徑跟蹤)
對這四方面都有了解之後,才能基本對機器人的控制有一個較為感性的認識。這是入門的基礎。如果你對輸入和輸出做一個測量,比如用電機將某個輪子的轉速從10加速到100,把這個測量勾畫出來,那麼這一個響應曲線。如何將電機準確快速地從10加速到100,這就需要一個簡易的反饋控制器。
上面所說的各個感測器元件,都有廉價版可以購買學習,但隨之引入的問題就是他們不精確,比如有雜訊。消除這個雜訊,你就需要在你的控制系統中引入更多的控制單元來消除這個雜訊,比如加入濾波單元。
上面說這麼多,只是想表達,理論和演算法都是有應用背景的,但同時,學習一些暫時無法應用的演算法也並不助於入門,甚至可能走偏門,覺得越複雜越好。所有的工程應用者都會說某某演算法非常好,但是經典還是PID。倘若不親手設計一個PID系統,恐怕真的領略不到它的魅力。我大學本科的控制課程包含了自動控制理論和現代控制理論,但是直到我設計一個四旋翼無人機的時候,才真正建立了我自己對機器人控制的理解。
@曹夢迪 推薦的那本《現代控制工程》是一本非常經典的專業書籍,需要理論知識,再進行詳細的學習。我的建議是先玩,玩到需要時,認真學習這部分理論。
-----------------------------------------------------------------------------------------------------
推薦一些機器人平台。核心都涉及到運動控制。
同時推薦一下Udacity上的Robotics課程,基於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 )。 - 主機:主要完成人機交互(操作員控制或者調試機器),高級運算(機器人運動規劃等)。由於需要高等運算功能,這部分演算法通常是基於操作系統的,硬體載體用通用計算機即可。
- 運動控制器:主要用於改善機器人動力學(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》。
- 最後,如果是廣大的Ph.D.朋友們,硬體就不必玩了,直接上paper吧。讀paper,讀各種牛人的paper。發paper,最好往ICRA和IJRR裡面灌水。P.S.:被paper虐的吐了一口老血:-)
謝邀。如果指的不是智能演算法,是扎紮實實的機器人學,那麼下列學科需要學習,重要性分先後:
線性系統
機器人運動學,反向運動學,動力學
非線性控制,最優控制
微分幾何
理論力學
自適應控制,智能控制
曾經在coursera上過一門機器學習基石的課程,老師利用幾周的時間以一個很簡單的、甚至是不常用的PLA演算法為例,講解了有關機器學習所需要的知識,後來老師說這種演算法應用性不強,但通過它可以講到機器學習所涉及到的知識。在學過這些知識以後,再去學習一些複雜的演算法,而流程都與設計PLA演算法類似。
自動控制和機器學習是相似的,它涉及到了很多的演算法,線性控制、非線性控制,一個自動化專業的學生一學就是2個學期,效果也不見得好。我的想法是,首先從一種經典的演算法入手,(比如PID),圍繞其展開學習,目的就是成功應用PID演算法解決一些問題,(比如機器人的運動控制),之後再學習複雜的演算法。目標確定了,但在學習之前先問自己3個問題( @劉未鵬的《暗時間》曾提到 ):- 控制的本質是什麼;
- 控制的原則是什麼;
- 控制這一專業的知識構架是什麼;
以機器人運動控制舉例。
機器人控制有三個元素:控制器(演算法),執行器(電機),感測器;
- 控制的本質就是將規劃系統的指令作為輸入信息,將感測器探測得到的狀態信息和導航系統的定位信息作為反饋,計算得到執行器的控制信號,完成運動控制的閉環。
- 控制的原則就是穩定、準確、快速。
- 知識構架分為兩部分:理論環節、實踐環節。
- 理論環節即PID控制的原理,如何作用於被控物,這裡包括自動控制原理中結構圖、傳遞函數、數學模型、求解微分方程等知識的學習;
- 實踐部分則包括相關軟硬體的知識,軟體即編程,也涉及到操作系統的相關知識。硬體如工控板的使用等。
圍繞知識構架,無須事無巨細的學習,但要把PID了解透徹並成功應用。在這基礎上再學習複雜的演算法就會好一些。
================================update==================================補充:
知識構架:
- 理論:掌握在相應環境下機器人的動力學模型、運動控制原理和方法、使用的控制策略以及運動控制器的設計。相應展開可以進行深入系統學習。
- 模擬調試:相關工具如matlab或自己編程,將自己的演算法、模型進行實現,是對理論知識的反饋,可以看自己的設計是否合理,對理論知識有更直觀的了解。
- 實物試驗:涉及軟硬體的部分,體會理論實際差距,進一步完善理論。關於這部分的掌握程度還是要看自己的目標是什麼,圍繞重心進行。如硬體部分,可以購買一些模塊,以最少的經歷實現目標。
另外,光從整體到局部是不夠的,有時不理解複雜系統的一些組成部分,就沒法從整體上去把握。所以在遇到瓶頸時,可以對其展開學習。整體與局部並不矛盾,是可以一起進行的。
想學習一門專業,不該先入為主地受 XXX 該怎麼樣的觀念制約,應該充分利用身邊的資源工具進行學習。有項目就針對項目,沒項目可以如呂朝陽老師所說購買機器人平台,再者可以通過模擬對理論進行驗證。思考、總結和交流很重要。推薦:
イラストで學ぶ ロボット工學
鏈接:Amazon | イラストで學ぶ ロボット工學 (KS情報科學専門書) | 木野 仁, 谷口 忠大 通販
是一套很流行的「圖解」入門書系列之一。註:可不是漫畫啊。
感謝邀請,本科確實是學自動控制的,但研究生的方向是模式識別,工作後搞的是機器視覺,然後一直到現在。所以對於控制來說,真的沒有發言權。只談談個人看法。
個人感覺,學習機器人控制這種說法,好像並不嚴密。機器人控制應該是自動控制理論在實際中的一種應用吧,包括自動化的生產線等。所以要說入門的話,那就找一份自動化專業的課程單吧(基礎課和專業課),當然專業必修課之一,肯定是《自動控制原理》了。說到這,竟然想起了那位治學嚴謹的白白胖胖的教自控的老師了,可能這是和自動化相關的唯一印象了。
工作後,接觸的機器人或者機械手臂,都是成熟產品,更偏重於應用。這時,更關心的是,如何給機器植入「眼睛」,也就是機器視覺如何引導機器人動作,也算是視覺反饋。所以,在機器人應用中,更關注的是視覺演算法及軟體。
比較熟悉機器視覺,不懂控制,很可能答非所問,僅供參考吧
能上youtube的話,建議看看Brian Douglas的視頻,非常好的基礎教程。
不能上youtube的話,建議先學習翻牆。
請看Coursera上Prof. Magnus Egerstedt的課程Control of Mobile Robots。這裡有你想要的所有答案。
機器人是機器人,控制是控制……
感謝邀請。
自動控制入門的話當然是找任何一本高校教材,類似《自動控制原理》、《自動控制概論》什麼的去讀。(習題一定要做。)有能力的可以讀英文教材,最出名的有尾形克彥(Katsuhiko Ogata,舊譯緒方勝彥)的《現代控制工程》(Modern Control Engineering (5th Edition): Katsuhiko Ogata: 9780136156734: Amazon.com: Books)
以及弗蘭克林(Gene Franklin)、鮑威爾(David Powell)的《動態系統的反饋控制》和《數字系統的反饋控制》(Feedback Control of Dynamic Systems (6th Edition): Gene F. Franklin, J. David Powell, Abbas Emami-Naeini: 9780136019695: Amazon.com: Books
Digital Control of Dynamic Systems (3rd Edition): Gene F. Franklin, J. David Powell, Michael L. Workman: 9780201820546: Amazon.com: Books)
上面幾本都有中譯本,不過質量如何不清楚。
如果都沒有興趣可以看看錢老的《工程式控制制論》,也是不錯的書。
所需要的基礎有微分方程、積分變換(經典控制理論)、矩陣理論(現代控制理論)。
主要需要掌握的幾個思想:
1. 反饋
2. 穩定性
3. 動態性能
4. 狀態及其估計
對於機器人來說,從控制的層次來區分,可以分為基於電機角速度層次的控制 (velocity level control),以及在加速度層次的控制 (acceleration control)。目前的工業機器人,大部分都提供角速度層次的控制,有角速度和位置的反饋,控制起來也比較方便,但是基於角速度的控制和力矩控制相比,控制信號有時候不連續,會導致控制的軌跡發生抖動。基於力矩控制,也就是在速度和位置反饋的基礎上加入了電流反饋,控制效果更加精準並具有連續性,缺點是需要對機器人的模型(基於拉格朗日和牛頓模型)進行精準建模。當前,除非廠家明確提供了機器人的各種參數 (M, C, G模型),一般用戶很難有效操作。當然,基於機器人模型的特性,如LIP(linear in parameter),衍生出了一些利用自適神經網路以及模糊控制方法,但是這些演算法的穩定性很值得商榷,畢竟機器人控制除了控制精度和平穩性之外,首要目標是安全,自適應的過程如果出現參數的過大超調,很容易對人或者機器人造成傷害。考慮到機器人模型的不確定性,則有H2和Hinfinity的魯棒控制。總之,反正是控制論裡面有的,理論上都可以用在機器人上面,但是到底好不好使,和PID相比有啥優勢,只能呵呵了。
機器人控制如果從是否與環境有直接接觸來進行劃分,分為無接觸的控制以及阻抗控制(Impedance Control)和力和位置混合控制(hybrid force and position控制)。阻抗控制的核心思想,用通俗的話來說就是讓機器人模擬一個質量、彈簧、振子系統,實現柔順(compliance)。hybrid force and position 控制則是通過將力和位置控制進行decouple (解耦)分別實現控制。按照我的理解,阻抗控制和混合控制可以歸為機器人的外環控制,內環則是上面提到的速度層次(velocity level control),以及加速度層次的控制 (acceleration control)。內環響應實現快速跟蹤,外環則是優化內在和外在的控制指標。
另外,當前也有基於機器學習的控制,比如基於增強學習(reinforcement learning)、自適應最優控制(optimal control)、extreme seeking control來優化PID參數等等。這些控制同樣也是基於外環。
目前比較牛逼的一個機器人控制,是Berkeley Peter Abbeel他們做的將deep learning和optimal control 結合來做機器人高維數據輸入的控制(比如輸入時圖像,輸出是控制信號)。網上有他們家做的PR2機器人疊毛巾的視頻,感覺屌屌的。有興趣的同學可以讀下他們組的文章 (搜索guided policy search)。
最後,推薦幾本書吧,
J.J. Craig的《Introduction to Robotics: Mechanics and Control 》
Slotine 的 《Robot Analysis and Control》
Springer Handbook of Robotics: Bruno Siciliano, Oussama Khatib: 9783540239574: Amazon.com: Books
視頻可以看oussama的公開課。
轉載請註明出處如果問題指的是6軸工業機器人運動控制,那唯一一條道路,是考好雅思留學瑞典皇家理工,或者其他機器人學有優勢的歐美學校,日本學校。
其他辦法都是隨便說說的。
中國的機器人控制的技術水平,不是靠騙科研經費剝削研究生的某些人,這些人寫的書看的書對你都沒用,他們自己尚且做不出來,有什麼好學的。
中國是一個買五軸機床還要被部分禁運的國家,大家不要開玩笑了。
看你究竟想搞什麼了,如果只是編個程,實現一些演算法,學一些嵌入式就可以了。如果你想搞控制演算法研究,那下面這些學科有意義:
1.multibody system dynamics(用來Modellling)一般歸在力學下。
2.control theory/cybernetics,基本是applied maths的範疇,線性方面基礎需要,但是由於Robot模型基本都是nonlinear的,所以用的也不多,線性控制傳統上切入是泛函和線代。非線性演算法是重點,現代的描述多用微分幾何。另外可能會牽涉到例如優化,運算元,拓撲等等這種領域,這一塊基本就是數學。
3.輔助讀一些robotics專門的書(不用太多,主要是了解一些術語和意義,比如forwards/backwards kinematics, DH parameter這種,前兩塊是主要)。另外如有興趣的,可以看一些SO3 group的書。
4.擴展類的,比如讀一些FEM/BEM,MOR等等。
《機器人學導論》,斯坦福的教材,80年代開始的,
有很挫的翻譯版本。
我們團隊的工程師人手一本。
看這個就行了,沒必要想太多。
英文名字叫做《Introduction To Robotics, Mechanics and Control》
《機器人學導論(原書第3版)》(美)克來格(Craig,J.J) 著,超 等譯
機器人是一門是一門十分複雜的交叉學科。而控制又是連接軟硬之間的橋樑,題主也說了要建立完整的知識構架,那麼學控制兩頭都得了解。結合自身經歷,個人愚見,機器人系統可以分為三層:
1.硬體層:主要就是各種機械機構和電子元件以及伺服電機,單片機等,這個需要了解他們的參數和工作原理。我們本科機電的一般都學過比如機械原理,材料力學,電子電路(數電模電),微機原理等課,這些差不多了。
2.測控層:連接硬體和軟體的橋樑。就如所說的感測器驅動及相關濾波演算法、動力系統及其閉環控制。這些在本科就比較欠缺了,只有測試技術和控制工程的基礎課。所以現在要再學習下數字信號處理和自動控制原理,還有感測技術以及動力學分析,系統的把測控學習一下。
3.軟體層:人機界面和智能應用。因為是機電出身,這個需要重頭學。首先計算機語言得會,我主要學c和python,一個負責底層驅動,一個負責快速演算法驗證和平台搭建。還有以前都是人為對接收的信號進行識別分析再決策,現在隨著人工智慧興起,計算機可以幫助你完成許多你以前要自己做的任務。所以,接觸下機器學習演算法還是有必要的。
總之,機器人控制不是獨立於機器人系統的,單獨學習控制毫無意義,所以要系統地學很多:機械和電子的基礎專業課,感測器及信號處理,動力學及自動控制,單片機及操作系統(RTOS或者Linux,推薦用stm32,開發速度快),C語言和Python(numpy,scipy,matplotlib,opencv,pyqt,sklearn都要會用,方便快速系統集成)。
最後,數學是基礎,數學是基礎,數學是基礎。高數線代概率得會,矩陣分析,數值分析和泛函分析也得有所涉及。
嗯,差不多可以開發一個自己的機器人平台了。。。
推薦ROS,有相關的很全的WIKI網站,也有模擬器,一台電腦就可以學習
你可以不用真實的機器人,先用模擬器模擬一下。這樣一來成本低,二來不會弄壞東西,三來重編程、部署比較省事。簡單點的模型應當PC上就能帶得動。
稍微複習下微積分,機器人控制入門,這本書絕對是你想要的。
二手LEGO MINDSTORM ,例如9797,然後泡論壇,網上搜羅些學習資料(有深度成體系的都是英文書,國內翻譯的都是很淺顯的東西),翻牆看大牛作品。
大概可以概括為三點:
1、感測器驅動及相關濾波演算法。
2、動力系統及其閉環控制。
3、應用及人機界面
簡單解釋下
第一點可以讓機械感知周圍環境;第二點可以讓機械運動並穩定的運動;第三點可以讓機械有目的的運動並將狀態等信息呈現給人類。
我想從個人經驗角度回答你這個問題,因為我也曾深深為這個問題困擾過。
我是專職的科技教師,以前事業單位可以報銷,我幾乎把亞馬遜上所有關於機器人控制的書都買了一遍,除了1000元以上的進口書。裡面確實有很好的書,比如有一本Matlab PID的書,銷量很高的。但這太深了,並不足以幫助到我。
我這裡只講PID,不談模糊控制、不談卡爾曼濾波(後面兩樣,前兩年我所在的區域的有幾個高中生也在研究)
我不是使用arduino和樂高,研究PID的,我是使用VEX和VEX IQ機器人,主要是因為RobotC這款軟體。
有個高中生問美國人要到了一個模板,在VEX上做了PID控制。這證明了PID是可行的。後來,我在淘寶網的一個十幾塊錢的複眼光感的下載資料鏈接里,下載到了一個最簡單的PID的模板,然後針對我的感測器和馬達,試了一下只試了一下控制P(比例參數)的效果,居然有效果。然後就一發不可收拾地研究了很多這方面的內容,產生了一些經驗。
這其中,參數整定是PID控制最重要的問題。這公式建議你看英文版的維基百科,上面搜PID,就會有參數整定的方法。
但是有個經驗,就是我的D參數,總是要把公式計算的結果,縮小100倍,有時候是縮小1000倍。我也不知道為什麼,是我在疲勞測試中測出來的。我這是用VEX IQ機器人。後來我在VEX上面嘗試,發現D反而要放大10倍,或100倍。
我很難告訴你為什麼,但我覺得畢竟我是用的萬能的通用型的PID控制。我沒有拉格朗日分析力學的模型和公式,或者任何物理公式帶入計算,完全就是PID最經典的反饋控制方法,這也就決定了,我本身就是經驗型的,沒法說明原因。
後來我在Github上看了很多VEX的PID代碼,但覺得自己已經習慣了自己的這個模板。
然後我嘗試了兩個PID的同時存在。
後來,PID用在了飛輪上,然後發現震蕩很大,後來通過飛思卡爾智能車的書,得知還需要在代碼里加入濾波。
我基本上就這些經歷和經驗,我自己應該還算是比較基礎的PID控制入門級學生。因為每次坐飛機,我都能明顯感覺到,飛機的回復穩定太驚人了!說明,科學家早就解決了這麼困難的問題了!而我還在摸索最基本的!
推薦閱讀: