標籤:

機器人編程怎麼入門?

現在在一家自動化的企業實習,至今沒有接觸過機器人編程,求大牛們推薦實用教程。


打個廣告(更新於2017.03.30)

坐標上海,上海微創醫療器械(集團)有限公司,機器人子公司在研產品主要是腹腔鏡手術機器人、骨科手術機器人等

招聘:

機器人演算法工程師

軟體工程師

機器人控制工程師

具體崗位要求,請移步另一個回答:

做控制、機器人等演算法工程師是怎樣一種體驗? - 回答作者: 夕陽

http://zhihu.com/question/46824735/answer/105381384

——————————————————————————

也有很多大神的公司也在招人的,如:

北京:

【招聘】紅岸水滴 誠聘 機械、電路、嵌入式、控制工程師 - 冷哲的文章 - 知乎專欄@冷哲

MEDBOT缺演算法工程師和軟體工程師一枚

武漢:

尋找機器人夥伴 - 機器人的那些事 - 知乎專欄@李淼robot

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

我算是一個機器人演算法工程師,平時工作也就是看看論文,查查專利,研究模型,碼段代碼。從業三年,也是從小白慢慢接觸並喜歡上了這份工作,姑且從兩年多的工作經驗分享一下我的入門心得:

1、
至少會一種編程語言,最好是C

因為通用性比較高,無論是matlab、VS以及其他硬體平台都是支持C的。編程語言就和你學母語、英語都一個樣,掌握基本要素(變數、語法、演算法)+ 大量練習。同時有些平台還會有別的語言,但總歸是思路差不多,多練習,多請教,多百度(有牆,你懂的)。

老譚這本書還可以:

2、
學會用MATLAB

Matlab本身就是支持矩陣運算的,而機器人控制演算法裡面涉及到大量的矩陣運算,所以matlab簡直是為機器人控制量身打造的軟體一樣。此外,matlab支持各種繪圖,編程簡單,又有很多的工具包,如Robtics toolbox;另外simulink又可以進行各種模擬。有一台裝了MATLAB的電腦,無需硬體,基本上可以讓你玩轉機器人。

Matlab感覺隨便一本教材+百度+中文論壇就可以了。


3、
熟練應用至少一種控制器

市面上有各種各樣的機器人控制器,也根據機器人的複雜程度(自由度和主動軸的數量)來選用合適的控制器。一般來講,市面上常用的有STM32,PLC,PMAC,UMAC,TC2/3等。不同控制器有不同的應用環境和編程語言,在開發過程中正確的編程是必不可少的,同時也多學習他們的軟體結構,多向供應商要求技術支持,一個好的程序架構省去了很多編碼和DEBUG時間,並且看上去程序非常簡潔有效。


4、
Coding
Debug

編碼是檢驗你學習語言的成果,說明你能把認識的東西拼到一塊兒了。那麼恭喜你,完成了1/6的工作量。在《人月神話》(強烈推薦)中提到一個軟體任務進度安排的經驗法則:

從圖中看出,測試可以佔到了開發進度的一半時間。因為你會經常遇到各種各樣的bug,需要花超過編碼的時間找出bug、修復bug,這時又有可能產生新的bug,這都是在正常不過的事情了。而這恰恰是考驗了工程師耐心和編程能力。

干機器人這一行來,對於這點是深有體驗,也表示非常贊同,它也指導著我在機器人演算法開發過程中的任務安排。


5、
獨立完成一種機器人控制

最後一項應該相當於你的畢業課題了。以上的練習和理論再多,也僅僅是理論而已,因為在開發過程中你會發現僅僅學會編程是遠遠不夠的,機械,電氣,控制都需要懂一些,最重要的還是要把它轉化成生產力啊。因此,建議如果有條件的話,把上面學到的去獨立完成一種機器人控制(無論串聯、並聯、4自由度或6自由度)。

題外話:

經常,我和小夥伴 @許三多 開玩笑說,干機器人演算法控制這一行,就像是在學校讀書一個樣,依舊是論文-專利-模擬-調試-產品;

我們會羨慕那些牛逼學校(不限於MIT、CMU)的實驗室,會羨慕論文專利作者提出新的演算法,會羨慕那些大牛 @冷哲@韓峰濤@曹開元@王哲@李淼robot 的知識儲備和知識面;

經常自嘲自己太low,又不想這麼一直low下去;

於是我們就把這份工作當成一個讀博經歷了,經常就戲稱上班為「上學」,下班為「放學」,見到領導會叫「老闆」,遇到同事喊「師弟師妹」,說不定哪天我真要去讀個博了;

哦,對了,我們是朝9晚10。


機器人的編程需要看具體的開發平台,如果是自己開發機器人平台,語言一般使用C++,操作系統一般為ROS操作系統,需要完成某些功能,可以調用ROS中一些庫函數。
如果需要深入學習對機器人的開發,如軌跡規劃等,可以從機器人運動學入門(Kinematics Control Of Robot), 然後學習機器人動力學(Dynamic Control).


本人利益相關:

1.《機器人編程實戰》譯者,已交稿,2017年出版,我在學習此書的過程中也開始思考這個問題了。

2.《星火計劃》ROS機器人編程公開課講師,課程體系的設計者。


本回答編輯自我給雷鋒網的撰稿,解析:機器人系統架構有哪些特殊技巧? | 雷鋒網

高清大圖無碼版,已整理到我的 知乎專欄

後續會在專欄不斷補充完善。

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

首先假設我們不需要討論以下問題:

1.編程怎麼入門?

2.嵌入式開發怎麼入門?

3.機器人學怎麼入門?

那我們就可以切入正題了:

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

機器人編程雖然嚴重依賴以上3項基礎,但仍有其自身特點,我認為需著重掌握以下兩點:

1.掌握主要的機器人系統架構的設計範式或軟體框架


2.機器人演算法的具體實現


機器人編程涉及控制系統的設計與實現,包括環境感知、交互、移動及行為的控制。

一個理想的機器人編程過程包括(假定硬體已經一切就緒):

1.系統架構設計

2.具體功能的演算法實現

3.編碼與集成

「它不是關於機器人的硬體,而是關於機器人是「誰」的內涵問題。」

由於筆者所從事工作性質,主要集中在1.系統設計和2.演算法的研究上,3.coding的機會並不是很多。第二個原因是:如果1,2工作完成後,3的工作其實和機器人本身並不大,計算機專業恐怕會做的更好。因此本文主要就1給出一些總結和建議。另外,由於所研究的演算法過(wu)於(fa)先(ying)進(yong),通常會在專業的學術期刊上發表,在此也不做過多討論。

1.
機器人系統架構

「架構可定義為組件的結構及它們之間的關係,以及規範其設計和後續進化的原則和指南。簡言之,架構是構造與集成軟體密集型系統的深層次設計。」

系統架構也可稱其為如何實施解決方案的一個策略性設計(例如基於組件的工程標準、安全)和解決方案做什麼的功能性設計(如演算法、設計模式、底層實現)。


1 機器人功能分解

另外,軟體工程的基本要求包括模塊化、代碼可復用、功能可共享。使用通用的框架,有利於分解開發任務及代碼移植。機器人軟體同樣遵從軟體工程的一般規律。說白了,架構就是你如何把機器人的功能打散,再如何把代碼組織起來。一個清晰的與項目相匹配的架構直接決定了你的開發效率甚至最終功能的成敗。

從人類第一台可編程的機器人開發伊始,架構問題就與之相伴而生。早在1996年,Garlan
和 Shaw在《軟體架構:一門新興學科的展望》就總結了移動機器人的基本設計需求, 如:(1) 慎思規劃和反應式行為;(2)容許不確定性;(3)考慮危險;(4)靈活性強。針對這些要求,他們評估了四種用於移動機器人的架構,包括控制迴路(control loop)、分層(layers)、隱式調用(implicit invocation)、黑板(blackboard)。經過了幾十年的實踐,一些架構被逐漸淘汰,一些架構逐漸被完善起來。

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

注意:現在很多機器人開發者一上手就是ROS,雖然ROS是一種比較不錯的系統架構,它的基於node的思想在當時是非常先進的,在今天已成為主流。但我們也要清楚,它只是其中一種架構,尤其是在小型嵌入式設備上定製機器人系統時,其他的架構可能會更有效率。另外Master中央控制模式,也是單機時代的產物,在多機的情形就不是很適用。

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

1.1 S-P-A結構

圖 2 機器人的「see-think-act」工作模式

圖 3 「感測——計劃——行動」(SPA)結構

機器人天然的工作模式是「see-think-act」,所以自然而然的就形成了「感測——計劃——行動」(SPA)結構:從感知進行映射,經由一個內在的世界模型構造,再由此模型規劃一系列的行動,最終在真實的環境中執行這些規劃。與之對應的軟體結構稱為經典模型,也稱為層次模型、功能模型、工程模型或三層模型,這是一種由上至下執行的可預測的軟體結構,

SPA機器人系統典型的結構是中建立有三個抽象層,分別稱為行駛層(Pilot)(最低層)、導航層(Navigator)(中間層)、規劃層(Planner)(最高層)。感測器獲取的載體數據由下兩層預處理後再到達最高「智能」層作出行駛決策,實際的行駛(如導航和低層的行駛功能)交由下面各層執行,最低層再次成為與小車的介面,將駕駛指令發送給機器人的執行器。

缺點:這種方法強調世界模型的構造並以此模型規划行動,而構造符號模型需要大量的計算時間,這對機器人的性能會有顯著的影響。另外,規劃模型與真實環境的偏差將導致機器人的動作無法達到預期的效果。

1.2 基於行為的結構

圖 4 基於行為的結構

由於SPA系統過於死板,出現了另一種實現方法:基於行為的方法。基於行為方法前身是反應式系統,反應式系統並不採用符號表示,卻能夠生成合理的複合行為。基於行為機器人方案進一步擴展了簡單反應式系統的概念,使得簡單的並發行為可以結合起來工作。

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

小歷史:Joe Jones和Daniel Roth於2003年出版的《Robot Programming:A Practical Guide to Behavior-Based Robotics》以及使用基於行為系統的iRobot掃地機器人的大獲成功(通過基於行為的系統可有效實現遍歷、避免在某處卡死等多個目標的達成),標誌著當年基於行為系統結構的統治地位。短短十年間,SLAM的迅速興起,基於地圖的規劃和導航再次興起,很多人似乎忘記了或壓根就沒聽說過Behavior-Based
Robotics的存在。

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


5 圖書:基於行為的機器人編程

基於行為的軟體模型是一種由下至上的設計,因而其結果不易預測,每一個機器人功能性(functionality)被封裝成一個小的獨立的模塊,稱為一個「行為」,而不是編寫一整個大段的代碼。因為所有的行為並行執行,所以不需要設置優先順序。此種設計的目的之一是為了易於擴展,例如便於增加一個新的感測器或向機器人程序里增加一個新的行為特徵。所有的行為可以讀取載體所有感測器的數據,但當歸集眾多的行為向執行器產生單一的輸出信號時,則會出現問題。

最初的行為之間使用固定的優先順序,而在現代的應用中則採用更加靈活的選擇方案。

「基於行為機器人學」主要特點包括(參見《嵌入式機器人學》):

感應與動作的緊密耦合

在某種程度上,所有行為機器人的動作是對刺激的反應而不是依賴於有意識的規則。迴避使用思考規劃,取而代之的是一些計算簡化的模塊來實現從輸入到執行的映射,此舉有利於快速響應。基於這個觀察Brooks言簡意概的表達出來其中的原理「規劃不過是一種迴避計算下一步要做什麼的方法」。

避開知識的符號表示

對環境的處理上不需要構造一個內部模型以用於執行規劃任務,而是採用真實世界「它自己最好的模型」。機器人直接從觀測中獲取到未來的行為,而非試圖去生成一個能夠內部操作的世界的抽象表示並以此作為規劃未來行動的基礎。

分解成具有因果意義的單元

行為按照狀態——動作成對出現,設計為對特定的狀態做出確定的動作響應。

並發關聯行為的時變等級調整

為適應所要達成任務目的,在運行期間採用一個控制方案來改變行為的激活等級。

行為選擇

在基於行為系統中運行著一定數目作為並行進程的行為,每一個行為可以讀取所有的感測器(讀動作),但只有一個行為可獲得機器人執行器或行駛機構的控制權(寫動作)。因此需要一個全局控制器在恰當的時機來協助行為選擇(或是行為激活、或是行為輸出融合)以達到預期的目的。這將系統的設計工作,就從描述系統本身轉移到定義一個正常工作的系統的輸出上。

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

說多了,感覺要跑題了。如果你有興趣,並想了解更多關於編程機器人來處理未知的東西,推薦Ronald Arkin的《Behavior-Based Robotics》和Thomas Braun的《嵌入式機器人學:基於嵌入式系統的移動機器人設計和應用》。慎思式的機器人編程方法,從中級到高級的探討,推薦Christopher A. Rouff等人的《Agent Technology
from a Formal Perspective》。

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

一張圖小結一下:

2.
混合系統:實踐的產物

沒有萬靈的結構,混合系統結合了SPA和反應體系的原理,將多種混合系統應用於在感測器和電機輸出間進行協調來完成任務。混合結構相結合最具吸引力的好處可能是:系統按照按有利於完成任務的標準進行設計,而非刻板的遵循某一教條。但再複雜的機構,基本上也都是二者的組合。以ROS的導航包為例:


6 ROS導航包

導航包整體上是SPA結構,左右兩側是感知S,包括感測器數據/里程計/地圖等,中間框圖是Global和Local兩級規劃P,最後發送cmd_vel給行動A。

如果世界是完美的,那按照規劃的地圖行進到目的地就完事了。然而基於行為方法就是為了處理各種意外而生的。當機器人遇到障礙物或是被卡住的時候,內嵌的基於行為的系統就開始發揮作用。會根據情況,在「行為庫」recovery_behaviors中調用某一預先設定的「行為」來擺脫困境。


7 recovery_behaviors

默認的行為是:首先,清除機器人地圖指定區域以外的障礙。接下來,如果可能的話,機器人將執行一個原地旋轉清理空間。如果這也失敗了,機器人將更激進地清理地圖,清除一切可以原地旋轉的矩形區域以外的障礙。這將是另一個就地旋轉緊隨其後。如果這些都失敗了,機器人將認為其目標不可行,停止運行並通知用戶。

當然,你還可以針對各種意外設計更為複雜的recovery_behaviors 「行為庫」以備調用。

3.
安全自主機器人應用框架

現在還有一種基於場景和態勢的設計框架SARAA,我覺得很有趣。安全自主機器人應用架構(SARAA,Safe Autonomous Robot Application
Architecture, SARAA)是一種強調安全性的自主機器人的開發方法。


8 SARAA

SARAA機器人總結

在《機器人編程實戰》(2017年出版)書中,詳細介紹了編程一個機器人自主執行其任務、構成了所謂SARAA的7項技術:

軟體機器人框架

ROLL模型

REQUIRE

RSVP

SPACES

STORIES

PASS

我們稱具有這種體系結構的機器人為SARAA機器人。當正確地實現時,這些編程技術產生一個基於知識的機器人控制器。因此,一個SARAA機器人是一個可以在預先設定的場景和態勢中自主行動的知識型機器人。其中一個設計思想是根據場景和態勢對前提/後置條件的判斷以提高安全性。

感興趣可訪問Ctest實驗室(www.ctestlabs.org),SARAA已經用於在開源機器人平台內工作,例如Arduino、Linux和ROS。如果對編程SARAA機器人的場景和態勢很好理解與恰當定義,則SARAA機器人的設計有助於提升機器人的安全性。


9.17日更新了一波圖片,很多地方補充詳細,增加一些進階的內容,希望能給大家更多幫助。
————
目錄
一、適合新手練手的項目
二、單片機推薦
三、相關入門模塊簡介
四、相關軟體指南
五、進階-機器視覺
六、進階-飛行器相關
七、結尾
------------
[多圖預警]
我看了一下上面的答案都比較虛,我說一些實在的。
作為一個小學開始自學編程,大一開始玩機器人的同學,目前在校機器人隊摸魚,我分享一下我的入門歷程僅供參考。機器人這塊核心分機構和電控,教程會偏電控一點。
這條路比較適合對機器人感興趣的大學萌新,特別是大一剛入學的童鞋,你們的大學生活會因為科技製作而大不一樣

核心一條是,動手動手動手。

別想著我要把所有的東西都精通了再去做,先找個感興趣的項目,你會在做的過程中把所需的東西學了。

一、適合新手練手的項目
循跡避障小車,六自由度機械手臂,六足機器人...

(圖片來自某寶 侵刪)

是否適合練手根據以下幾個方面,第一材料易得,大部分在某寶可以直接買到便宜的套件。第二所需的模塊簡單易學,主要包括電機驅動板、電機、舵機、小型航模電池或18650鋰電池組、入門級的單片機,感測器部分包括紅外感測器、超聲波感測器等。
(根據經驗一般某些眼界比較高的看不起小車這些東西。但實際動手有非常大的難度,現在能讓六自由度機械臂實現精確抓取的能有幾人,讓小車穩定循跡的又有幾人?
我參加了幾屆學校這類比賽,大部分參賽隊伍的心血都會因為現場突發情況而報廢,甚至一些光線干擾都能讓整個代碼循環報廢
簡單的東西想做到極致往往需要豐富而全面的實力

【第一次見到學長們玩超聲波,覺得超聲波這三個字簡直說出來都頗有面子。直到自己開始玩才發現是個入門模塊罷了......- -、】
以上入門第一步在於電控,你需要接觸嵌入式開發,選擇合適的單片機,開始學習C語言,推薦譚浩強老師那一本書入門C,不需要你全都懂,比如說指針這玩意兒現在(嗯我說入門階段)基本用不上。


二、單片機推薦
單片機上強烈推薦arduino入門,熟練後轉stm32,如果之前學過51的話會輕鬆很多(我在高三暑期買了塊開發板自己玩了會兒)。轉戰stm32是因為大學裡大部分機器人隊都使用的stm32作為機器人的核心控制板。
Arduino具體推薦arduino uno ,或者arduino mega2560,針腳特別豐富,可以掛載非常多的感測器

Arduino Mega2560arduino入門之後也可以玩一玩raspberry,現在已經有3代b買了,也就是開始linux嵌入式開發啦。驚人的配置顛覆你的想像,200多元的小電腦:

  • 1.2GHz 四核 Broadcom BCM2837 64 位 ARMv7 處理器
    • 板載 BCM43438 WiFi
  • 板載低功耗藍牙 (BLE) 藍牙和wifi使用的是BCM43438晶元,博通公司的
  • 1GB RAM
  • 4 個 USB 2 埠
  • 40 針擴展 GPIO
  • HDMI 和 RCA 視頻輸出

樹莓派這東西我得多說幾句,自帶wifi模塊,可插USB高清攝像頭,其搭配的IO口可以和普通單片機一樣作為輸入輸出使用,同時由於自身搭載linux系統,於是你可以通過C++甚至python語言來為你的機器人寫邏輯代碼
特別是當你需要為你的機器人加入圖像視覺等需要大量計算的功能時,在低成本情況下樹莓派將是最好的選擇
此外,樹莓派還能裝LAMP環境(linux apache mysql php)搭建一個個人小網站,甚至做微信公共平台的開發者伺服器,做下載器,寢室安全監控系統等等,很爽yooooo~

三、相關入門模塊簡介
可以買來玩的感測器和模塊:
【循跡避障小車】
超聲波感測器
紅外線感測器
SG90舵機
電機控制板
電機
....

然後嘗試自己開始製作機械手臂,所需要的模塊:
舵機驅動板
MR996舵機
如果想玩驅動力更大的機械手臂,可以自行某寶數字舵機,價格100左右
某寶六自由度機械手臂有現成的套裝,我記得是200~300元?

之後再怎麼玩就靠興趣了,一路走來基本的模塊你都已經熟練,想進行創新可以對這些模塊進行組合,結構上的創新也非常重要,可以自學

四、相關軟體指南
建模
:首推SolidWorks,各大機械系應該都會必學,可直接導出工程圖,或者導出3D列印文件

(渲染後效果超棒的有木有)

此外AutoCAD畫二維圖進行激光切割
AutoInventor也很不錯,和Solidworks類似
模擬:Adams。ADAMS是個模擬神器,配合SolidWorks使用效果更佳哦
Matlab SimuLink。
ansys有限元分析
畫電路板:altium designer,可以導出圖在某寶找店家加工你的板子,精美板子送女孩表白,豈不妙哉。

圖 Adams模擬

機器人領域非常廣,舉兩個我有所涉獵的領域給大家一點思路。
五、進階-機器視覺
機器視覺核心在於讓機器人通過視覺設備如攝像頭來獲得環境信息,當前最流行的視覺庫是opencv。
OpenCV的全稱是:Open Source Computer Vision Library。OpenCV是一個基於BSD許可(開源)發行的跨平台計算機視覺庫,可以運行在Linux、Windows和Mac OS操作系統上。它輕量級而且高效——由一系列 C 函數和少量 C++ 類構成,同時提供了Python、Ruby、MATLAB等語言的介面,實現了圖像處理和計算機視覺方面的很多通用演算法。[百度百科]

現在比較成熟的應用包括人臉識別、人體識別、車牌識別、車型識別等等。

(哈哈順便安利美劇 矽谷)

如今一些機器人賽事開始對各隊的機器視覺技術提出要求,將來視覺機器人也是一個非常有前景的發展方向。想入門這方面的童鞋可以學學opencv玩一玩啦。
給大家推薦一些我用過的學習資源:
專欄:【OpenCV】入門教程
迭代的是人,遞歸的是神
OpenCV - 標籤
同時,以上第一個博客的博主淺陌出的書 《學習opencv3》很不錯,淺顯易懂。
比較流行的教材是《 Learning Opencv》的漢化版 《學習Opencv》,一本經典的大部頭,但如果僅僅是憑藉興趣入門的話不推薦。
硬體方面可以在樹莓派上跑跑試試哈,看能不能做一個跟蹤人的小車,引入人臉判斷的話更有趣。

六、進階-飛行器相關

大疆突然火了,大家都開始知道旋翼這東西。其實早在大疆之前,高校裡邊旋翼早已成風,我們這邊每年校級科技競賽上大把的旋翼。
何況汪濤也是在宿舍里成立大疆呢。
作為入門的話推薦一下F450旋翼,每個男生心裡都有一個飛行夢想吧。雖然要做到爽飛需要很長的路要走,不過作為過來人可以告訴你,當你一手做出的旋翼翱翔在你們學校的上空時,曾經再多次的墜毀都值了。

翼項目比較燒錢,預計F450在千元,建議和學校相關科技部門聯繫支持,比如學院一般會非常支持學生做科研。另外每年一度的國創(大創)也是個非常不錯的機會,下
一屆應該是第十一屆了,申請這種項目需要一定的創新性,光說飛起來肯定是不行的啦~你可以考慮加一些當今沒有的功能上去,具體大家自己天馬行空吧。
旋翼涉及的技術:飛控(APM、Pixhawk)成品,自己寫也可以不過有一定難度;航模電池相關知識;電機選型、槳、電調的搭配;GPS、羅盤;操作相關技術;遙控器,推薦天地飛系列;如果想要傳輸圖像的話還涉及到數傳;當然最後還需要心理素質哈哈

如果感興趣的話給大家推薦一個論壇:遙控模型-遙控飛機
一些我曾經用過的教學資源:
泡泡老師的APM入門教程:泡泡老師教程
新手APM、PIX 飛控使用教程匯總,方便查詢
四旋翼電池、電機、螺旋槳選型與搭配
新手必備,多旋翼模型入門 關於理論知識(大體完結,想到再補充)

六、結尾
啊,終於更完啦。
已經很久沒在網上寫過教程了,回想當年論壇時代答主還是初中生,在網上瞎發一些易語言、魔獸地圖之類的玩意兒,不知道還有沒有人記得小煩和hke。
總之,機器人領域博大精深,涉及到各個領域的前沿。何況人工智慧隨著阿爾法狗也火了一把,很期待雷·庫茲韋爾2045奇點臨近的預言,不管真假在此之前先努力學習吧。

寫的這些不知道是不是幫到了大家,大家還有其他入門的困難歡迎私信


現在比較出色的機器人操作系統ROS,推薦學習《ROS by example》,關注ROS wiki,要重點明白系統的組織架構,然後經過一些案例實踐,就可以逐漸摸索上道開發自己的機器人功能了。
語言方面一般常用的是C++和python,ROS中也是用這兩種語言。
開發平台有 Turtlebot、NAO、parrat無人機、ROS無人機、PR2機器人等。
如果你偏向於硬體方面的編程,推薦學習Arduino開發板編程,或者單片機編程,樓上也有介紹。


機器人控制系統分類方式很多,若按編程方式分類:有物理設置編程式控制制系統、示教編程式控制制 系統、離線編程式控制制系統。
物理設置編程式控制制是由操作者設置固定的限位 開關,實現啟動、停車的程序操作,用於簡單的抓取和放置作業;
示教編程式控制制是通過人的示教來完成操作信息的記憶,然後再現示教階段的動作 過程;
離線編程式控制制是通過機器人語言進行編程式控制制。
通常意義上的編程都是指的離線編程,工業上一般都符合 IEC61131-3 標準,支持 IEC61131-3 規定的五種編程語言(IL,ST,FBD,LD,SFC)。我覺得越好高級語言這些都不在話下,只不過換了一個IDE編程罷了。


樓主問的應該是標準多軸工業機器人的編程吧。

各廠商的機器人編程語言各不相同。
從風格上來講,主要分歐美的,比如KUKA,ABB;和日本的,比如MOTOMAN, FANUC。兩大類
其區別是歐洲人認為你應該先在電腦上編程,再去用示教盒設定工具點坐標和機器手姿態。日本人認為你應該先用筆記本把思路寫下來再用示教盒一點一點吧程序按出來。
具體到編程語言風格上講,歐美的類似高級語言(相對來說),類似C或者Python。日本的感覺很像彙編一些,如果你用過數控機床應該就很熟悉。

但現在即使是日本的,也在向離線編程與圖形化的方向發展。亦即,將項目的三維圖(Pro E, CATIA, SolidWorks等)導入離線編程軟體中,然後規划動作模擬路徑,直接進行編程。

但實際上,實際項目中,編程時更多考慮的是與其他設備的配合以及怎麼優化動作。

所以,樓主想學習機器人編程,可以先了解一下面向對象編程,然後多去裝配車間,與工人交流,觀看設備測試。在工作中學習,保持壓力的狀態下是最高效的。


排名第一的答案好奇怪,現在工業自動化行業上還有需要用戶自己做單片機編程的機器人嗎?
點擊如下網址
http://robotpartner.cn
手機也可以訪問,有視頻教程鏈接,資料非常全。模擬軟體可以30天免費試用。

略有任何編程基礎的人,一般四天可以初步掌握。歐系編程都差不多,學會歐系,三天可以上手日系。

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

別人問如何學好現代漢語,你叫人家讀尚書,肯定不是正確的答案。


----------------
「因為我是做Robocon而不是做工業的,所以我只能根據在隊伍里遇到的情況來給你建議了。」

不會就是不會,工業機器人你摸都沒摸過,能給已經實習的人什麼好答案?


面向API編程的關鍵就是知道API


關於這個問題,前面幾位都已經回答得很具體了。我這裡來補充一下在MOOC平台上提供的很好的網上機器人入門課程。很適合需要入門機器人這個領域的初學者。

1. Control of Mobile Robots by Georgia Institute of Technology
https://www.coursera.org/learn/mobile-robot/home/welcome

強烈推薦這門課。從輪式機器人入手,帶你領略通用控制系統最基本的模型的搭建,設計,參數的選擇。深入淺出,不涉及上層的perception, AI, ML。當然,那個來自瑞典的教授上課也很幽默風趣,再加上基於他實驗室的本身的實力,值得期待。

每周都有一個quiz,難度還行。要拿到證書的話每周的quiz都要pass.不過我想說這門課還有一個亮點是提供了一個基於Matlab的圖形化輪式機器人的模擬平台http://Sim.I.am,這樣就可以把課堂上學到的鮮活的知識運用起來,畢竟學習機器人編程的話,最重要的還是自己操作,自己一行一行的打代碼,才是最有效的。

2. Robotics - University of Pennsylvania | Coursera

這個是Coursera上推出的一個specialization, 總共有6門課:

  • Aerial Robotics

  • Computational Motion Planning

  • Mobility

  • Perception

  • Estimation and Learning

  • Capstone

最初關注這個系列是由於開課的教授是Vijay Kumar,無人機教父,曾今關注這個教授是由於早年被刷屏的他的演講
Vijay Kumar | Speaker | TED.com

現在由於自己出名了,他在賓大的lab也越搞越大,國內有很多無人機的公司想跟他們合作。這個lab出來的一些中國的phd紛紛投入大疆等無人機公司。

此套課程基本涵蓋了機器人從底層到上層的大部分主流領域。每門課都有自己的重點和作業。就是時間有點長,現在好像要付費,有興趣的同學可以去看看。

3. Autonomous Mobile Robots at ETHz
Autonomous Mobile Robots

雖然都是focus在移動輪式機器人,和我推薦的第一門課不同,這門課主要是關注在機器人上層的演算法上,比如說運動控制,定位,路徑規劃,機器視覺,SLAM等, 當然前幾張也會介紹一下底層的一些演算法。教授也是在移動機器人領域很有名的的大牛。順便推薦一下這門課的教材,在輪式機器人領域非常經典:

4. Autonomous Navigation for Flying Robots at TUM
Autonomous Navigation for Flying Robots

專門關於無人機的一門很優秀的課,德國最好的工科大學慕尼黑工業大學所推出的。這所學校的自動控制和機器視覺方面實力很強。我自己看過幾期視頻,感覺還不錯。課程還建議學生用parrot的無人機進行實踐。還是挺有意思的。如果對無人機感興趣的同學可以關注一下,隨時開課。

-------------------------------------------------------------------------------------------------------------------------------------------
現在就想到這四門課,下次有其他的再補充。


計算機工程專業(一半硬體 一半軟體的奇葩專業)… 學校教了c++和matlab 之後用到的所有語言自己解決。自己找幾個小項目跟著教程做一下 改改代碼 就懂了。Arduino的資料很多 也很好懂。再專業了就不知道了…再難了看起來也就是這些東西 邏輯理清了好像就不會太難…還是本科生 也可能更難的項目我還沒接觸到…


杭州端德教育騰訊課堂免費錄播課(每周更新) 截止9月13日已有30節課

電氣化自動基礎

CAD製圖和電氣原理圖設計
https://ke.qq.com/course/154297#term_id=100176401tuin=10d92497

工業機器人系列

機器人感測器的應用與基本介紹
https://ke.qq.com/course/154884#term_id=100177203

機器人自動化基礎與行業應用
https://ke.qq.com/course/154880#term_id=100177196

工業機器人分類與應用
https://ke.qq.com/course/156439#tuin=10d92497term_id=100179210

FPGA系列
verilog基礎課程設計與FPGA基礎 (10節)
https://ke.qq.com/course/153888#term_id=100175876


這個也要看控制的level層次,如果是基於現有的平台開發(國外機器人博士基本上都是在已有的平台上進行研究,比如kuka的 LWR,還有UR10,baxter什麼的)。那麼了解編程就從ROS開始吧,先把linux跑起來,然後寫寫topic、service、node啥的,編輯下launch file。等把ROS玩熟了,你也就知道怎麼寫package,可以把你需要實現的功能寫成package形式。ROS支持C++和python,強烈建議上來學的時候用python,因為python的package調用和數據類型很方便,你真沒有必要為了考慮實時性去用C++代碼一點一點寫起。再說,如果對速度要求很高,你完全可以把耗時的部分用C++寫好編譯生成可執行文件,然後在python裡面用wrapper調用。

當然,如果是從最底層做起的話,就要看你的控制硬體是什麼配備了。FPGA的話要學VHDL和verilog。ARM或者其他嵌入式開發,要學C和C++。PLC要學邏輯圖設計。另外,還要寫各種感測單元(force,position,velocity)的借口,各種網路數據協議啥的 (CAN,modbus,EPA啥的)。


看你用啥語言吧,我們都是對圖像或者激光等感測器信號進行處理從而得到一個控制結果輸出給機器人控制模塊


先下載模擬軟體,在模擬器上寫宏程序來運行!熟悉之後慢慢用c需要來調試,慢慢深入!



推薦ROS IDE:RoboWare


睿慕課 上有多家機器人課程學習 http://www.aiimooc.com


先學習C語言,這個基本是必須的

  然後學習單片機(51簡單點,arm資料多)

  然後就是實驗步進電機的控制,解碼器的工作原理和編程等等(單片機的內容)

  這些是入門

  有基礎之後可以學點時髦的Arduino之類的,了解當前機器人最前沿的的系統了


目前機器人主流廠商都有自己的編程語言。 一般來說看一下menu就可以上手了。
關鍵是對機器人一般概念要有理解,比方說基本運動的指令Linear, Circular等, 坐標系的定義。。
可以找一點機器人學的書看一下開頭的一兩章。
如:Springer 出版的 Robotics - Modelling, Planning and Control


推薦閱讀:

能否簡單並且易懂地介紹一下多個基於濾波方法的SLAM演算法原理?
生命進化的最終極是不是無機生命體?
Google Project Tango 有哪些黑科技?
怎樣從實際場景上理解粒子濾波(Particle Filter)?
如何評價2016賽季的第二屆新博茨大戰賽事(battlebots)?

TAG:機器人 | 編程 |