Bästa svaret
Det enklaste svaret skulle vara C ++ och Python .
Alla robotikprojekt som jag har arbetat med körs på någon av dessa plattformar, på ett eller annat sätt. Detta skulle dock vara ett ofullständigt svar utan att visa dig den faktiska bilden av vad som händer inom robotik.
Operativsystem:
- C ++ och Python är definitivt det programmeringsspråk som du använder i slutet. Koderna för de flesta robotarna för närvarande lever dock i ett operativsystem som heter ROS (Robot Operating System). ROS erbjuder en elegant programvaruarkitektur för enklare robotkontroll och planering. Det finns dessa olika nodprogram som du skriver som kan publicera viss information som kan användas av andra noder som finns i ROS . Till exempel skulle lokaliseringsnoden som uppskattar en drönares position i 3d-världen publicera denna information för andra noder att använda. En banplaneringsnod kan sedan prenumerera på dessa noder för att få dessa data att utvärdera nästa sökväg för drönaren. Var och en av dessa noder är enkla C ++ eller Python koder.
Programmering för robotforskning:
- Simulering : Nästan alla rigorösa simuleringar och testningar i forskningsfasen görs först på MATLAB innan den konverterades till en C ++ – eller Python -kod. Detta beror på de eleganta visualiseringsverktygen och praktiska förskrivna funktioner som plattformen erbjuder. MATLAB -koder kan också integreras med ROS .
Programmering för visuell kognition:
- Maskininlärningsmodeller : Om roboten använder någon form av maskininlärning eller djupinlärningstekniker tränas de först med plattformar som Tensorflow, Keras, PyTorch etc och sedan den utbildade modeller överförs till ROS som en nod. Till exempel skulle en sök- och räddningsdrona använda en mänsklig detektionsmodell som en ROS -nod som prenumererar på den råa kamerans bildnod och publicerar all mänsklig detektion.
- Bildbehandling : OpenCV är ett allmänt använt bildbehandlingsverktyg som kan integreras med C ++ eller Python inuti ROS . En fotbollsrobot skulle till exempel behöva den här modulen för att upptäcka alla färgade bollar på bilden.
Programmering för robotmaskinvara:
- Hårdvaruprogrammering : För hårdvarunivå FPGA programmering, verilog eller VHDL används.
- Firmware eller mikrokontroller : AVR programmering för ATMEGA marker används ofta om du vill ha en mer effektiv och sofistikerad kontroll av hårdvaran. Ett enklare alternativ är att använda Arduino mikrokontroller som använder ett omslag runt C-språk . Det är ganska enkelt att programmera i Arduino att köra en servomotor eller att styra en motorförare.
- Enkortsdatorer : Om du behöver mer minne och processorkraft än den som tillhandahålls av Arduino eller Atmega , du väljer Raspberry Pi eller Beagle Board . Båda stöder Ubuntu ombord med Python eller C ++ i ROS , vilket gör ditt liv enklare!
I slutet kokar allt ner till Python, C ++ och MATLAB i en ROS-plattform . ROS har precis erövrat robotfältet så mycket att de flesta av de coola nya robotprogrammeringsverktygen är födda som ROS paket.
Svar
Kanske hjälper färdplanen jag skapade dig på din resa för att lära dig robotik. Jag ser att denna fråga ställs mycket.
Färdkartan har fyra nivåer och varje nivå fokuserar på fyra kärnkoncept.
Uppvärmningsnivå
- Lär dig kodning: Börja plocka upp minst ett praktiskt programmeringsspråk . Arduino IDE är bra.Python är jättebra. C / C ++ blir fantastiskt. Mitt förslag skulle vara Python . Det finns flera orsaker till detta och senare i färdplanen ser du varför.
- Lär dig elektronik: Börja bygga grundläggande elektronisk kretsar . Det kan vara så enkelt som att tända en LED. Nästa lyser upp fler lysdioder. Skapa en enkel trafiksignal. Redskapskontakter. Lär dig de teoretiska idéerna bakom hur spänning, ström, motstånd, transistorer, serier och parallella kretsar fungerar. Utforska sensorer och servomotorer också!
- Lär dig grundläggande montering: Som barn älskade vi att göra leksaker och bygga saker. Gör detsamma här. Lär dig att skapa grundläggande strukturer med trä, akryl, fiber eller plast.
- Integrera med mikrokontroller: Med kunskap om ovanstående koncept bör du försöka testa dem på en grundläggande mikrokontroller. När allt kommer omkring vill du att din krets ska ”reagera”. Det mest populära valet bland hobbyister och nybörjare är att gå med Arduino . Arduino har verkligen förenklat processen för kodning och implementering av grundläggande reaktionära kretsar.
(Resurser: YouTube, Khan Academy, Code, Coursera, Udemy)
Nybörjarnivå
- Lär dig objektorienterad programmering: Det är inte bara viktigt att koda i robotik utan också hur man kodar bra . Objektorienterad programmering (OOP) är en enorm muskel att växa och tidigare kan du göra detta, desto mer kommer du att tacka dig själv i framtiden. OOP är inte exklusivt för Python. Men i Python kan du enkelt implementera dessa och öva. Genom OOP lär du dig om klasser, metoder, arv osv. Detta är en utmärkt teknik för att skriva funktionella, modulära och effektiva koder.
- Lär dig fysik, sannolikhet och linjär algebra: När du växer från en spädbarnsrobot till en tonåring är det viktigt att du också vet hur robotik skrivs, läses och talas av andra i samhället. Detta roboticspråk använder starkt fysik, sannolikhet och linjär algebra. Ja, du kanske inte gillar dessa ämnen i skolan eller universitetet, men lita på att du behöver dem om du är allvarligt med robotik. Du kan inte göra datasyn utan att veta om matriser. Du kan inte göra vägplanering utan att veta om fysik. Du kan inte göra artificiell intelligens eller maskininlärning utan att veta om sannolikheten.
- Mer involverade datorkunskaper: Vad menar jag nu med det? Många nykomlingar inom robotik blir stumpade (jag var också!) För att de behöver lära sig detta nya främmande operativsystem som har en pingvin någonstans bredvid. Jag pratar om Linux operativsystem. Det är absolut nödvändigt att för någon som vill fördjupa sig i robotik bör bekanta sig med Linux. Många bibliotek, paket och programvara som utvecklats för robotik distribueras mycket enkelt och effektivt i Linux-miljöer. Populärt Linux OS-val: Ubuntu
- Inbäddade system: Nu när du har utvecklat bättre kunskap om kodning, kretsar, teoretiska begrepp och förtrogenhet med Linux, vi måste implementera dessa på en mindre dator än vår bärbara dator. Så fortsätt och prova uppvärmningsnivå koncept tillsammans med ovanstående koncept på en minidator såsom Raspberry Pi eller BeagleBone. Anslut några sensorer, servor och en kamera till en av dessa mindatorer och skriv lite kod för att känna av, flytta och upptäcka saker!
(Resurser: YouTube, Khan Academy, Code, Coursera, MIT OCW)
Mellannivå
- Utveckla teoretiska grunder: Här beroende på vilket område av robotik du är intresserad av måste du lära dig mer om teorin bakom det. Lär dig mer om manipulation av robotarmar (kinematik och kontroll), perception (datorvision, linjär algebra , matriser), maskininlärning / artificiell intelligens (sannolikhet, statistik, matematik). Ser du hur några av de tidigare begreppen är grundläggande för dessa kärnrobotikområden?
- Använd avancerade bibliotek: Nu måste du implementera maskinen inlärnings- och / eller datorvisionsalgoritmer på din robot. Trots allt borde roboten kunna se och tänka och lära sig, eller hur?På Python finns fantastiska bibliotek skrivna för implementering av maskininlärning och datorvisionsalgoritmer, t.ex. tensorflöde och OpenCV. På samma sätt kan mycket AI också övas på Python. Naturligtvis kan du göra detsamma i C / C ++. Jag försöker dock hålla det konsekvent här.
- Bli bekant med ROS: Med kunskapen om alla ovanstående, en utmärkt mellanvaror som man bör lära sig är Robotoperativsystem (ROS). Det kan vara lite knepigt att plocka upp först. ROS öppnar dock upp dina dörrar för att testa avancerade algoritmer och simuleringar på robotar som du inte ens har! Vill du flyga en fyrkopter? Eller navigera en robot autonomt på en karta? Vad sägs om att få en industriell arm att plocka upp ett föremål? Du kan göra det i ROS via dess simuleringsmiljö med namnet Gazebo.
- Mer CAD: Du kanske är intresserad av att utveckla och designa komplexa robotar. Börja lära dig 3D-designprogramvara som Blender eller SolidWorks så att du kan designa dina egna robotar.
Expertnivå
- Fortsätt lära och växa: Varje koncept som nämns ovan är oändligt av sin egen dygd, och för att bli en expert inom robotik måste du investera tid och fortsätta lära dig. Du kommer att inse att du måste lära dig fler klassificeringsmaskiner eller modeller för att bättre upptäcka objekt / bilder. Eller du kan behöva lära dig mer om kontrollalgoritmer för att optimera dina lösningar.
- Mer programvara / hårdvara: Beroende på ditt intresseområde och specialisering kommer du att göra mer och mer av kodning, algoritmisk utveckling, ROS och / eller robotdesign.
Slutligen är jag definitivt ingen expert och därför kan jag inte lägga mycket till det . Vad jag säkert kan säga är att jag inte vet vad jag inte vet. En viktig sak att komma ihåg är: kom igång och var konsekvent =)