您好,登錄后才能下訂單哦!
這個(gè)問(wèn)題大多數(shù)新的機(jī)器人專家在他們的職業(yè)生涯中至少會(huì)思考一次。不幸的是,這也是一個(gè)沒(méi)有直接答案的問(wèn)題。
如果你在 Stack Overflow、Quora、Trossen、Reddit 或 Research Gate 等機(jī)器人專家或者社區(qū)論壇上提問(wèn)“機(jī)器人最好的編程語(yǔ)言是什么?” 你會(huì)得到不同的答案。正如我們?cè)谖恼轮杏懻摰幕緳C(jī)器人技能一樣,對(duì)于機(jī)器人學(xué)家來(lái)說(shuō)最關(guān)鍵的是建立“ 編程思維 ”,而不是用一種特定的語(yǔ)言來(lái)衡量。在很多方面,你首先學(xué)習(xí)哪種編程語(yǔ)言并不重要,重要的是在通過(guò)編程思維來(lái)不斷提高自身的技能。
回歸主題,在本文中,我們將介紹機(jī)器人研發(fā)中使用的十大最流行的編程語(yǔ)言。我們將討論他們的缺點(diǎn)和優(yōu)點(diǎn),以及使用或者不使用它們的理由。世界上有超過(guò)1500種編程語(yǔ)言你可以學(xué)習(xí)。下面列出的是目前機(jī)器人中十種最流行的編程語(yǔ)言。每種語(yǔ)言都有不同的優(yōu)勢(shì),作者根據(jù)自身經(jīng)驗(yàn),按照優(yōu)先級(jí)從低到高排序。
BASIC和Pascal是我曾經(jīng)學(xué)過(guò)了的兩種主要的編程語(yǔ)言。但這并不是我把它們放在榜單上的原因。相反,它們是運(yùn)用于工業(yè)機(jī)器人編程上很好的語(yǔ)言。BASIC 針對(duì)初學(xué)者設(shè)計(jì),這使它可以成為開(kāi)發(fā)者簡(jiǎn)單的入門語(yǔ)言。
Pascal的目的是提高編程實(shí)踐,并提出像指針這樣的構(gòu)建,這使得它成為一個(gè)從 BASIC 到更多編程語(yǔ)言的奠基石。如今,這兩種語(yǔ)言對(duì)于“日常運(yùn)用”來(lái)說(shuō)有些過(guò)時(shí)了。但是普通情況下,您要進(jìn)行相當(dāng)程度的底層編碼,或者需要熟悉其他工業(yè)機(jī)器人語(yǔ)言,那么了解它們會(huì)對(duì)您有所幫助。
實(shí)際上,每一個(gè)機(jī)器人制造商都已經(jīng)建立了自己特定的限制性機(jī)器人編程語(yǔ)言,這一直是工業(yè)機(jī)器人領(lǐng)域的一個(gè)問(wèn)題。通過(guò)學(xué)習(xí)Pascal,你會(huì)熟悉他們的一部分。但是,當(dāng)你開(kāi)始在另一個(gè)機(jī)器人平臺(tái)編碼時(shí),都必須使用另一種語(yǔ)言。
如機(jī)械臂領(lǐng)域?qū)嵙?qiáng)勁的 ABB 公司,用的語(yǔ)言系統(tǒng)叫做 RAPID;來(lái)自于德國(guó)的 KUKA,語(yǔ)言和公司名字一樣也叫做 KUKA;Comau 利用 PDL2;Yaskawa 利用 Advise 和 Kawasaki 利用 AS。在這一點(diǎn)上,F(xiàn)anuc 機(jī)器人利用 Karel,Staubli 機(jī)器人利用 VAL3 和 Widespread Robots 利用 URScript。
最近,像 ROS 這樣的行業(yè)已經(jīng)開(kāi)始為程序員提供更加標(biāo)準(zhǔn)化的語(yǔ)言選擇。盡管如此,作為一個(gè)技術(shù)人員,你仍需要使用制造商的編程語(yǔ)言。
LISP是世界上第二古老的編程語(yǔ)言(FORTRAN更為古老,但只差一年)。相比與其他語(yǔ)言,它使用得并不是很廣泛,但是在人工智能編程領(lǐng)域還是很最重要的。ROS的一部分是用 LISP 編寫的,事實(shí)上,你并不需要知ROS是怎么編寫的。
硬件描述語(yǔ)言基本上是描繪電氣的編程方法。這些語(yǔ)言對(duì)于一些機(jī)器人專家來(lái)說(shuō)是非常普遍的,因?yàn)樗麄兞?xí)慣用 FPGAs(Field Programmable Gate Arrays)編程。FPGA可以不用硅芯片便能開(kāi)發(fā)出電子硬件,這使得它們成為一種開(kāi)發(fā)的更快,更低要求的改進(jìn)選擇。如果你不模擬硬件,你可能永遠(yuǎn)不會(huì)使用HDL。
存在即是合理,你還是需要了解一下HDL的,并且它們和其他編程語(yǔ)言也不太一樣。HDL的所有的操作都是并行完成的,而不是像基于處理器的語(yǔ)言那樣順序操作。
Assembly 可以讓你用“0和1”進(jìn)行編程,這是最底層的編程。在過(guò)去,大多數(shù)底層硬件需要在 Assembly 中進(jìn)行編程。隨著 Arduino 和其他類似微控制器的興起,你現(xiàn)在可以利用C / C ++在底層進(jìn)行有效的編程,這意味著 Assembly 對(duì)于一般的機(jī)器人專家來(lái)說(shuō)可能會(huì)不那么重要。
MATLAB和它的開(kāi)源親戚(例如Octave)在一些機(jī)器人專家中非常有名,是他們負(fù)責(zé)調(diào)查數(shù)據(jù)和創(chuàng)建控制系統(tǒng)常用的語(yǔ)言。還有一個(gè)非常有名的MATLAB機(jī)器人 工具箱。我知道使用MATLAB單獨(dú)創(chuàng)建整個(gè)機(jī)器人系統(tǒng)的人員。所以,如果您需要分解數(shù)據(jù),創(chuàng)建高級(jí)圖表或執(zhí)行控制系統(tǒng),那就很可能需要學(xué)習(xí)MATLAB。
C#是微軟提供的一種限制性編程語(yǔ)言。C#/ .NET很大程度上是為微軟機(jī)器人工程師工作室(Microsoft Robotics Studio Studio)提供的,微軟機(jī)器人工程師工作室將其作為基本語(yǔ)言。如果你將使用這個(gè)框架,你就必須學(xué)習(xí) C#。盡管如此,首先學(xué)習(xí)C / C ++,也可以提高自身的編碼能力。
作為一個(gè)電子設(shè)計(jì)工程師,我很驚訝一些軟件工程學(xué)院將 JAVA 作為他們第一個(gè)學(xué)習(xí)的編程語(yǔ)言。
Java把對(duì)程序員的底層存儲(chǔ)功能“隱藏了”,這使得對(duì)Java程序的要求不那么高,而且也意味著你對(duì)代碼的處理方式了解得不多。從軟件工程的基礎(chǔ)到探索機(jī)器人的未來(lái),你很可能已經(jīng)學(xué)習(xí)了Java。
像C#和MATLAB一樣,Java是一種解釋性語(yǔ)言,這意味著它不會(huì)被合并到機(jī)器語(yǔ)言代碼中。相反,Java虛擬機(jī)在運(yùn)行時(shí)解釋指令。理論上來(lái)說(shuō),基于Java虛擬機(jī),使用Java可以在不同機(jī)器上使用類似的代碼。但實(shí)際上,這并不普遍使用,有時(shí)會(huì)導(dǎo)致代碼運(yùn)行緩慢。但是Java編程語(yǔ)言在機(jī)器人研究中非常流行,所以你可能需要它。
許多人都認(rèn)為 C 和 C ++ 對(duì)機(jī)器人科學(xué)家來(lái)說(shuō)是一個(gè)很好的開(kāi)端。為什么?因?yàn)橄喈?dāng)多的硬件庫(kù)使用這些語(yǔ)言。它們適用于低級(jí)別的硬件,允許實(shí)時(shí)性能,是非常成熟的編程語(yǔ)言。
現(xiàn)在,你可能會(huì)更多地使用C ++,因?yàn)镃++具有更強(qiáng)大的實(shí)用性。C ++是C的一個(gè)擴(kuò)展。從基礎(chǔ)的C學(xué)習(xí),你也可以得到很多收獲,尤其是當(dāng)你發(fā)現(xiàn)一個(gè)硬件庫(kù)是用 C 編寫的時(shí)候。C / C ++不像Python或MATLAB那么容易學(xué)習(xí)的。使用C來(lái)執(zhí)行類似的功能可能需要相當(dāng)長(zhǎng)的時(shí)間,并且需要更多的代碼。盡管如此,但機(jī)器人極其依賴實(shí)時(shí)性能,所以它們?nèi)匀皇菣C(jī)器人科學(xué)家心中的“標(biāo)準(zhǔn)”機(jī)器人編程語(yǔ)言。
在機(jī)器人研究領(lǐng)域,Python 占據(jù)了重要地位,機(jī)器人研發(fā)第一編程語(yǔ)言。其中一個(gè)原因很可能是 Python(和C ++)是ROS中的兩種主要編程語(yǔ)言。像Java一樣,它是一種解釋性語(yǔ)言。但也不同于Java,Python 語(yǔ)言主要集中在可用性上。Python不需要花大量的時(shí)間來(lái)做常規(guī)的事情,例如定義和強(qiáng)制轉(zhuǎn)換變量類型。此外,還有大量免費(fèi)的庫(kù),這意味著當(dāng)你不得不實(shí)現(xiàn)一些基本的功能時(shí),你不需要“重新造輪子”。而且由于它允許與C / C ++代碼之間可以進(jìn)行簡(jiǎn)單的綁定,這意味著執(zhí)行代碼繁重部分的性能可以植入這些語(yǔ)言,從而避免性能損失。隨著越來(lái)越多的電子產(chǎn)品開(kāi)始使用“開(kāi)箱即用”的Python(像Raspberry Pi那樣),我們可能會(huì)在機(jī)器人中看到更多的Python。
那學(xué)習(xí)哪一個(gè)比較好呢?
我列舉了機(jī)器人十大熱門編程語(yǔ)言,并不意味著你每一個(gè)都需要去學(xué)習(xí)。最重要的是發(fā)現(xiàn)一種適合你的語(yǔ)言,當(dāng)然,也適用于你的機(jī)器人硬件。您需要一種可以讓你快速有效地創(chuàng)建程序的語(yǔ)言,你可以更專注于實(shí)用性。
因此,我建議先學(xué)習(xí)Python。這是我根據(jù)自己的自身經(jīng)驗(yàn)來(lái)說(shuō),當(dāng)然你也可以先學(xué)習(xí)適合你的語(yǔ)言。無(wú)論如何,Python是一門簡(jiǎn)單易學(xué)的語(yǔ)言它有許多有效的庫(kù)可供學(xué)習(xí),而且功能非常強(qiáng)大。我聽(tīng)過(guò)很多經(jīng)驗(yàn)豐富的程序員在幾天內(nèi)就學(xué)會(huì)了Python,并且很快就運(yùn)用到了大部分編程需求里面。在你學(xué)會(huì)了 Python 之后,我會(huì)建議學(xué)習(xí) C,再由C ++來(lái)牽引。因?yàn)槟阈枰獙⑺c機(jī)器人硬件驅(qū)動(dòng)程序的巨大主導(dǎo)接口進(jìn)行交互。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。