1、硬件描述語(yǔ)言(HDLs)
硬件描述語(yǔ)言通常用于描述電氣編程。一些機(jī)器人專(zhuān)家對(duì)這些語(yǔ)言非常熟悉,因?yàn)樗麄兞?xí)慣了FPGAS編程。FPGAS可以讓你在沒(méi)有實(shí)際生產(chǎn)硅芯片的情況下開(kāi)發(fā)電子硬件,這對(duì)于一些開(kāi)發(fā)來(lái)說(shuō)是一個(gè)更快更簡(jiǎn)單的選擇。如果你不開(kāi)發(fā)電子原型產(chǎn)品,你可能永遠(yuǎn)不會(huì)使用HDLS。即便如此,還是要了解這種編程語(yǔ)言,因?yàn)樗鼈兣c其他編程語(yǔ)言有很大的不同。一個(gè)重點(diǎn):HDLS的所有操作都是并發(fā)的,而不是基于處理器編程語(yǔ)言的順序。
2、Assembly
Assembly允許您在0和1數(shù)位上編程。這基本上是底層的編程語(yǔ)言。最近,底層電子需要Assembly來(lái)編程。隨著Arduino等微控制器的興起,您現(xiàn)在可以使用C/C++在底層方便編程。這意味著Assembly對(duì)大多數(shù)機(jī)器人專(zhuān)家來(lái)說(shuō)可能會(huì)變得更加不必要。
3、MATLAB
一些機(jī)器人工程師特別喜歡MATLAB及其相關(guān)的開(kāi)源資源,如Octave,用于分析數(shù)據(jù)和開(kāi)發(fā)控制系統(tǒng)。還有一個(gè)非常流行的機(jī)器人工具箱—MATLAB。我知道一些專(zhuān)家只能用MATLAB開(kāi)發(fā)整個(gè)機(jī)器人系統(tǒng)。如果你想分析數(shù)據(jù),生成高級(jí)圖像或?qū)嵤┛刂葡到y(tǒng),你可能想學(xué)習(xí)MATLAB。
4、C#/.NET
C#是微軟提供的專(zhuān)用編程語(yǔ)言。我把C#/.NET放在這里,主要是因?yàn)槲④洐C(jī)器人開(kāi)發(fā)人員的工作包(Microsoftroboticsdeveloperstudio),這個(gè)包的主要開(kāi)發(fā)語(yǔ)言是C#。如果你準(zhǔn)備好使用這個(gè)系統(tǒng),你很可能必須使用C#。
5、Java
作為一名電子工程師,我總是驚訝ava作為一些計(jì)算機(jī)科學(xué)學(xué)位課程的第一種編程語(yǔ)言感到驚訝。Java隱藏了程序員的底層存儲(chǔ)功能,這使得它比一些語(yǔ)言(如C語(yǔ)言)更容易編寫(xiě),但這也意味著你將更少地理解底層代碼的操作邏輯。如果你有計(jì)算機(jī)科學(xué)背景,轉(zhuǎn)到機(jī)器人學(xué)(很多人都是這樣,尤其是在研究領(lǐng)域),你可能已經(jīng)學(xué)過(guò)Java了。Java是一種解釋性語(yǔ)言,比如C#和MATLAB,這意味著它不會(huì)被編譯成機(jī)器代碼。相反,Java虛擬機(jī)在運(yùn)行時(shí)解釋指令。理論上,Java可以在不同的機(jī)器上運(yùn)行相同的代碼,這要感謝Java虛擬機(jī)。在實(shí)踐中,這不總是可行的,有時(shí)會(huì)導(dǎo)致代碼運(yùn)行緩慢。但是Java在一些機(jī)器人學(xué)中很受歡迎,所以你可能需要它。
6、Python
近年來(lái),學(xué)習(xí)Python的人出現(xiàn)了巨大的回潮,尤其是在機(jī)器人領(lǐng)域。原因之一可能是Python(和C++)是ROS中的兩種主要編程語(yǔ)言。與Java不同,Python的重點(diǎn)是易用性。Python不需要太多時(shí)間來(lái)做傳統(tǒng)的事情,比如定義和強(qiáng)制轉(zhuǎn)換變量類(lèi)型。這些在編程中很常見(jiàn)。另外,Python還有大量的免費(fèi)庫(kù),這意味著當(dāng)你需要實(shí)現(xiàn)一些基本的功能時(shí)不必“重新發(fā)明輪子”。而且因?yàn)镻ython允許與C/C++代碼進(jìn)行簡(jiǎn)單的綁定。這意味著這些語(yǔ)言可以植入代碼重部分的性能,以避免性能損失。隨著越來(lái)越多的電子產(chǎn)品開(kāi)始支持“開(kāi)箱即用”P(pán)ython(與RaspberryPi一道),我們可能會(huì)在機(jī)器人中看到更多Python。注:TheraspberyPiFoundation:英國(guó)一個(gè)小型慈善組織的目的是推廣技術(shù),而不是銷(xiāo)售技術(shù)。
7、C/C++
最后我們到了排名第1的機(jī)器人編程語(yǔ)言!許多人認(rèn)為C和C++對(duì)新入行的機(jī)器人學(xué)家是一個(gè)很好的起點(diǎn)。為什么?因?yàn)楹芏嘤布?kù)都使用這兩種語(yǔ)言。這兩種語(yǔ)言允許與低級(jí)別的硬件進(jìn)行交互,允許實(shí)時(shí)性能,是非常成熟的編程語(yǔ)言?,F(xiàn)如今,你可能會(huì)使用C++比C多,因?yàn)榍罢呔哂懈嗟墓δ?。C++基本上是C的一種延伸。首先學(xué)一點(diǎn)C會(huì)很有用,特別是當(dāng)你發(fā)現(xiàn)一個(gè)硬件庫(kù)是用C編寫(xiě)的。C/C++并不是像Python或MATLAB那樣簡(jiǎn)單易用。同樣用C來(lái)實(shí)現(xiàn)相同的功能會(huì)需要大量時(shí)間,也將需要更多行代碼。但是,由于機(jī)器人非常依賴(lài)實(shí)時(shí)性能,C和C++是最接近我們機(jī)器人專(zhuān)家“標(biāo)準(zhǔn)語(yǔ)言”的編程語(yǔ)言。