Cel mai bun răspuns
Cel mai simplu răspuns ar fi C ++ și Python .
Toate proiectele de robotică cu care am lucrat rulează pe oricare dintre aceste platforme, într-un fel sau altul. Cu toate acestea, acesta ar fi un răspuns incomplet fără a vă arăta imaginea reală a ceea ce se întâmplă în robotică.
Sistem de operare:
- C ++ și Python sunt cu siguranță limbajul de programare pe care îl folosiți la final. Cu toate acestea, codurile pentru majoritatea roboților din aceste zile aparțin într-un sistem de operare numit ROS (Robot Operating System). ROS oferă o arhitectură software elegantă pentru controlul și planificarea mai ușoară a robotului. Există aceste diferite programe de nod pe care le scrieți, care pot publica anumite informații care pot fi utilizate de alte noduri care locuiesc în interiorul ROS . De exemplu, nodul de localizare care estimează poziția unei drone în lumea 3d ar publica aceste informații pentru alte noduri de utilizat. Un nod planificator de traiectorie se poate abona apoi la aceste noduri pentru a obține aceste date pentru a evalua următoarea cale pentru dronă. Fiecare dintre aceste noduri este simplu coduri C ++ sau Python .
Programare pentru cercetare robotică:
- Simulare : Aproape toate simulările și testările riguroase din faza de cercetare se fac mai întâi pe MATLAB înainte ca acesta să fie convertit într-un cod C ++ sau Python . Acest lucru se datorează instrumentelor de vizualizare elegante și funcțiilor pre-scrise la îndemână pe care le oferă platforma. MATLAB codurile pot fi, de asemenea, integrate cu ROS .
Programare pentru cunoaștere vizuală:
- Modele de învățare automată : Dacă robotul folosește un fel de tehnici de învățare automată sau de învățare profundă, acesta este instruit mai întâi cu platforme precum Tensorflow, Keras, PyTorch etc și apoi instruiți modelele sunt transferate către ROS ca nod. De exemplu, o dronă de căutare și salvare ar folosi un model de detectare umană ca nod ROS care se abonează la nodul brut al imaginii camerei și publică toate detecțiile umane.
- Prelucrarea imaginilor : OpenCV este un instrument de prelucrare a imaginii utilizat pe scară largă, care poate fi integrat cu C ++ sau Python în ROS . Un robot de fotbal, de exemplu, ar avea nevoie de acest modul pentru a detecta toate bilele colorate de pe imagine.
Programare pentru hardware robotică:
- Programare hardware : pentru nivel hardware FPGA programare, se utilizează verilog sau VHDL .
- Firmware sau micro-controlere : programare AVR pentru ATMEGA Cipurile sunt utilizate pe scară largă dacă doriți să aveți un control mai eficient și mai sofisticat al hardware-ului. O opțiune mai ușoară este de a utiliza microcontroler Arduino care folosește un wrapper în jurul limbaj C . Este destul de simplu să programați în Arduino pentru a rula un servomotor sau pentru a controla un driver de motor.
- Calculatoare cu o singură placă : Dacă aveți nevoie de mai mult memorie și putere de procesare decât cele furnizate de Arduino sau Atmega , alegeți pentru Raspberry Pi sau Beagle Board . Ambele suportă Ubuntu la bord cu Python sau C ++ în ROS , facilitându-vă viața!
La sfârșit, totul se reduce la Python, C ++ și MATLAB într-o platformă ROS . ROS tocmai a cucerit domeniul roboticii atât de mult încât majoritatea noilor instrumente noi de programare robotică se nasc ca ROS pachete.
Răspuns
Poate că harta rutieră pe care am creat-o vă va ajuta în călătoria dvs. de învățare a roboticii. Văd că această întrebare este pusă mult.
Harta rutieră are 4 niveluri și fiecare nivel se concentrează pe 4 concepte de bază.
Nivel de încălzire
- Aflați codificare: Începeți să ridicați cel puțin un limbaj de programare la îndemână . ID-ul Arduino este bun.Python este grozav. C / C ++ va fi fantastic. Sugestia mea ar fi Python . Există mai multe motive pentru aceasta și mai târziu în foaia de parcurs veți vedea de ce.
- Aflați electronica: Începeți să construiți circuite . Poate fi la fel de simplu ca aprinderea unui LED. Apoi aprindeți mai multe LED-uri. Faceți un semnal de trafic simplu. Implementați comutatoare. Aflați ideile teoretice din spatele modului în care funcționează tensiunea, curentul, rezistențele, tranzistoarele, circuitele în serie și paralele. Explorați și senzorii și servomotorii!
- Aflați asamblarea de bază: În calitate de copii ne plăcea să facem jucării și să construim lucruri. Faceți același lucru și aici. Aflați să realizați câteva structuri de bază folosind lemn, acril, fibră sau plastic.
- Integrare cu microcontroler: Cu cunoștințe de mai sus concepte, ar trebui să încercați să le testați pe un microcontroler de bază. La urma urmei, doriți ca circuitul dvs. să „reacționeze”. Cea mai populară alegere printre pasionați și începători este de a merge cu Arduino . Arduino a simplificat cu adevărat procesul de codificare și implementare a circuitelor reacționare de bază.
(Resurse: YouTube, Khan Academy, Code, Coursera, Udemy)
Nivel pentru începători
- Aflați programarea orientată pe obiecte: Nu este important doar să codați în robotică, ci și cum să codificați bine . Programarea orientată pe obiecte (OOP) este un mușchi extraordinar pentru a crește și mai devreme puteți face acest lucru, cu atât vă veți mulțumi mai mult în viitor. OOP nu este exclusiv Python. Cu toate acestea, în Python le puteți implementa ușor și practica. Prin OOP, veți afla despre clase, metode, moștenire etc. și aceasta este o tehnică excelentă pentru scrierea codurilor funcționale, modulare și eficiente.
- Aflați fizică, probabilitate și algebră liniară: Pe măsură ce creșteți de la un robotist pentru sugari la un adolescent, este important să știți și modul în care robotica este scrisă, citită și vorbită de către ceilalți din comunitate. Acest limbaj de robotică folosește foarte mult fizică, probabilitate și algebră liniară. Da, este posibil să nu vă bucurați de aceste discipline la școală sau universitate, dar credeți-mă că aveți nevoie de ele dacă sunteți serios despre robotică. Nu puteți face viziune pe computer fără să știți despre matrice. Nu puteți face planificare de drum fără să știți despre fizică. Nu puteți face inteligență artificială sau învățare automată fără să știți despre probabilitate.
- Mai multe abilități de calculator implicate: Acum, ce vreau să spun prin asta? O mulțime de nou-veniți la robotică sunt surprinși (am fost și eu!) Că trebuie să învețe acest nou sistem de operare cu aspect extraterestru care are un pinguin undeva lângă el. Vorbesc despre sistemul de operare Linux . Este imperativ ca pentru cineva care caută să se adâncească în robotică să se familiarizeze cu Linux. O mulțime de biblioteci, pachete și software dezvoltate pentru robotică sunt distribuite foarte ușor și eficient pe medii Linux. Alegerea populară a sistemului de operare Linux: Ubuntu
- Sisteme încorporate: Acum că ați dezvoltat cunoștințe mai bune despre codificare, circuite, concepte teoretice și familiaritate cu Linux, trebuie să le implementăm pe un computer mai mic decât laptopul nostru. Deci, mergeți mai departe și încercați conceptele nivel de încălzire împreună cu conceptele de mai sus pe un mini-computer precum Raspberry Pi sau BeagleBone. Cuplați niște senzori, servouri și o cameră la unul dintre aceste min-computere și scrieți un cod pentru a detecta, muta și detecta lucruri!
(Resurse: YouTube, Khan Academy, Code, Coursera, MIT OCW)
Nivel intermediar
- Elaborați fundamentele teoretice: Aici, în funcție de ce domeniu al roboticii vă interesează, trebuie să aflați mai multe despre teoria din spatele ei. Aflați despre manipulare robotică a brațelor (cinematică și control), percepție (viziune pe computer, algebră liniară , matrice), învățare automată / inteligență artificială (probabilitate, statistici, matematică). Vedeți cum unele dintre conceptele anterioare sunt fundamentale pentru aceste domenii principale de robotică?
- Utilizați biblioteci avansate: Acum trebuie să implementați mașina algoritmi de învățare și / sau viziune computerizată pe robotul dvs. La urma urmei, robotul ar trebui să poată vedea, gândi și învăța, nu?Pe Python, există biblioteci uimitoare scrise pentru implementarea algoritmilor de învățare automată și de viziune computerizată, de ex. fluxul tensorial și OpenCV. În mod similar, o mulțime de AI poate fi practicată și pe Python. Desigur, puteți face același lucru în C / C ++. Cu toate acestea, încerc să-l mențin aici aici.
- Familiarizați-vă cu ROS: Cu cunoștințele de mai sus, un excelent mijlocul pe care ar trebui să-l înveți este sistemul de operare robot (ROS). Poate fi un pic dificil să ridici la început. Cu toate acestea, ROS îți deschide porțile pentru a testa algoritmi și simulări avansate pe roboți pe care nici măcar nu-i ai! Vrei să zbori cu un quadcopter? Sau navigați în mod autonom pe un robot pe o hartă? Ce zici de a obține un braț industrial pentru a ridica un obiect? Puteți face acest lucru în ROS prin mediul său de simulare numit Gazebo.
- Mai multe CAD: S-ar putea să fiți interesat să dezvoltați și să proiectați roboți complexi. Începeți să învățați software de proiectare 3D , cum ar fi Blender sau SolidWorks, astfel încât să vă puteți proiecta proprii roboți.
Nivel expert
- Continuați să învățați și să creșteți: Fiecare concept menționat mai sus este nesfârșit prin propria sa virtute și, pentru a deveni un expert în robotică, va trebui să investiți timpul și să continuați să învățați. Vă veți da seama că trebuie să aflați mai multe clasificatoare sau modele pentru a detecta mai bine obiecte / imagini. Sau poate fi necesar să aflați mai multe despre algoritmii de control pentru a vă optimiza soluțiile.
- Mai multe software / hardware: În funcție de zona dvs. de interes și specializare, veți face din ce în ce mai mult codificare, dezvoltare algoritmică, ROS și / sau proiectare robotică.
În cele din urmă, cu siguranță nu sunt un expert și, prin urmare, nu pot adăuga prea multe la asta . Ceea ce pot spune sigur este chiar că nu știu ce nu știu. Un lucru important de reținut este: începeți și fiți consecvenți =)