Beste svaret
Det enkleste svaret ville være C ++ og Python .
Alle robotikkprosjektene som jeg har jobbet med, kjører på en av disse plattformene, på den ene eller andre måten. Dette vil imidlertid være et ufullstendig svar uten å vise deg det faktiske bildet av hva som skjer innen robotikk.
Operativsystem:
- C ++ og Python er definitivt programmeringsspråket du bruker til slutt. Kodene for de fleste av robotene lever i disse dager imidlertid inne i et operativsystem kalt ROS (Robot Operating System). ROS gir en elegant programvarearkitektur for enklere robotkontroll og planlegging. Det er disse forskjellige nodeprogrammene du skriver som kan publisere viss informasjon som kan brukes av andre noder som bor i ROS . For eksempel vil lokaliseringsnoden som estimerer posisjonen til en drone i 3d-verdenen publisere denne informasjonen for andre noder å bruke. En baneplanleggernode kan da abonnere på disse nodene for å få disse dataene til å evaluere neste bane for dronen. Hver av disse nodene er enkle C ++ eller Python koder.
Programmering for robotikkforskning:
- Simulering : Nesten alle strenge simuleringer og tester i forskningsfasen gjøres først på MATLAB før den ble konvertert til en C ++ – eller Python -kode. Dette er på grunn av de elegante visualiseringsverktøyene og de praktiske forhåndsskrevne funksjonene som plattformen tilbyr. MATLAB koder kan også integreres med ROS .
Programmering for visuell kognisjon:
- Maskinlæringsmodeller : Hvis roboten bruker en slags maskinlærings- eller dyplæringsteknikker, blir de først trent med plattformer som Tensorflow, Keras, PyTorch etc og deretter den trente modeller overføres til ROS som en node. For eksempel vil en søke- og redningsdron bruke en menneskelig deteksjonsmodell som en ROS -node som abonnerer på den rå kameraets bildenode og publiserer all menneskelig deteksjon.
- Bildebehandling : OpenCV er et mye brukt bildebehandlingsverktøy som kan integreres med C ++ eller Python inne i ROS . En fotballrobot vil for eksempel trenge denne modulen for å oppdage alle de fargede kulene på bildet.
Programmering for robotikkmaskinvare:
- Maskinvareprogrammering : For maskinvarenivå FPGA programmering brukes verilog eller VHDL .
- Firmware- eller mikrokontroller : AVR programmering for ATMEGA sjetonger brukes mye hvis du vil ha en mer effektiv og sofistikert kontroll av maskinvaren. Et enklere alternativ er å bruke Arduino mikrokontroller som bruker en omslag rundt C-språket . Det er ganske greit å programmere i Arduino for å kjøre en servomotor eller for å kontrollere en motorfører.
- Enkeltkortcomputere : Hvis du trenger mer minne og prosessorkraft enn det som er gitt av Arduino eller Atmega , går du til Raspberry Pi eller Beagle Board . Begge støtter Ubuntu ombord med Python eller C ++ i ROS , noe som gjør livet ditt enklere!
Til slutt koker det hele ned til Python, C ++ og MATLAB i en ROS-plattform . ROS har nettopp erobret robotikkfeltet så mye at de fleste av de kule nye robottekniske programmeringsverktøyene er født som ROS pakker.
Svar
Kanskje vil veikartet jeg opprettet hjelpe deg på reisen din for å lære robotikk. Jeg ser at dette spørsmålet blir stilt mye.
Veikartet har 4 nivåer og hvert nivå fokuserer på 4 kjernekonsepter.
Oppvarmingsnivå
- Lær koding: Begynn å plukke opp minst ett hendig programmeringsspråk . Arduino IDE er bra.Python er flott. C / C ++ vil være fantastisk. Mitt forslag vil være Python . Det er flere grunner til dette, og senere i veikartet vil du se hvorfor.
- Lær elektronikk: Begynn å bygge grunnleggende elektronisk kretser . Det kan være så enkelt som å tenne på en LED. Neste lyser flere lysdioder. Lag et enkelt trafikksignal. Implementere brytere. Lær de teoretiske ideene bak hvordan spenning, strøm, motstander, transistorer, serier og parallelle kretser fungerer. Utforsk sensorer og servomotorer også!
- Lær grunnleggende montering: Som barn elsket vi å lage leker og bygge ting. Gjør det samme her. Lær deg å lage noen grunnleggende strukturer som bruker tre, akryl, fiber eller plast.
- Integrer med mikrokontroller: Med kunnskap om det ovennevnte konsepter, bør du prøve å teste dem på en grunnleggende mikrokontroller. Tross alt vil du at kretsen din skal «reagere». Det mest populære valget blant hobbyister og nybegynnere er å gå med Arduino . Arduino har virkelig forenklet prosessen med å kode og implementere grunnleggende reaksjonære kretser.
(Ressurser: YouTube, Khan Academy, Code, Coursera, Udemy)
Nybegynnernivå
- Lær objektorientert programmering: Det er ikke bare viktig å kode i robotikk, men også hvordan du koder godt . Objektorientert programmering (OOP) er en enorm muskel å vokse og tidligere kan du gjøre dette, jo mer vil du takke deg selv i fremtiden. OOP er ikke eksklusivt for Python. Imidlertid kan du i Python implementere disse enkelt og øve. Gjennom OOP vil du lære om klasser, metoder, arv osv. Dette er en utmerket teknikk for å skrive funksjonelle, modulære og effektive koder.
- Lær fysikk, sannsynlighet og lineær algebra: Når du vokser fra en spedbarnsrobot til en ungdom, er det viktig at du også vet hvordan robotikk skrives, leses og snakkes av andre i samfunnet. Dette robotikkspråket bruker fysikk, sannsynlighet og lineær algebra. Ja, du liker kanskje ikke disse fagene på skolen eller universitetet, men stol på meg du trenger dem hvis du er alvorlig om robotikk. Du kan ikke gjøre datasyn uten å vite om matriser. Du kan ikke gjøre baneplanlegging uten å vite om fysikk. Du kan ikke gjøre kunstig intelligens eller maskinlæring uten å vite om sannsynlighet.
- Mer involverte datakunnskaper: Hva mener jeg nå med det? Mange nykommere i robotikk blir stumpet (jeg var også!) For at de trenger å lære dette nye fremmede operativsystemet som har en pingvin et sted ved siden av seg. Jeg snakker om Linux operativsystem. Det er viktig at noen som ønsker å komme dypere inn i robotikk, skal gjøre seg kjent med Linux. Mange biblioteker, pakker og programvare utviklet for robotikk distribueres veldig enkelt og effektivt i Linux-miljøer. Populært Linux OS-valg: Ubuntu
- Innebygde systemer: Nå som du har utviklet bedre kunnskap om koding, kretsløp, teoretiske konsepter og fortrolighet med Linux, må vi implementere disse på en mindre datamaskin enn den bærbare datamaskinen vår. Så fortsett og prøv oppvarmingsnivå konsepter sammen med de ovennevnte konseptene på en mini-datamaskin slik som Raspberry Pi eller BeagleBone. Hekt på noen sensorer, servoer og et kamera til en av disse minidatamaskinene, og skriv litt kode for å fornemme, flytte og oppdage ting!
(Ressurser: YouTube, Khan Academy, Code, Coursera, MIT OCW)
Mellomnivå
- Utvikle teoretiske grunnlag: Her avhengig av hvilket område av robotikk du er interessert i, må du lære mer om teorien bak. Lær om manipulering av robotarm (kinematikk og kontroll), persepsjon (datasyn, lineær algebra , matriser), maskinlæring / kunstig intelligens (sannsynlighet, statistikk, matematikk). Ser du hvordan noen av de tidligere konseptene er grunnleggende for disse kjerneområdene for robotikk?
- Bruk avanserte biblioteker: Nå må du implementere maskinen lærings- og / eller datasynsalgoritmer på roboten din. Tross alt skal roboten kunne se og tenke og lære, ikke sant?På Python er det fantastiske biblioteker skrevet for implementering av maskinlæring og algoritmer for datasyn, f.eks. tensor flow og OpenCV. På samme måte kan det også praktiseres mye AI på Python. Selvfølgelig kan du gjøre det samme i C / C ++. Imidlertid prøver jeg å holde det konsistent her.
- Bli kjent med ROS: Med kunnskapen om alle de ovennevnte, en utmerket mellomvare som man bør lære er Robotoperativsystem (ROS). Det kan være litt vanskelig å plukke opp først. Imidlertid åpner ROS dørene dine for å teste avanserte algoritmer og simuleringer på roboter som du ikke engang har! Vil du fly en quadcopter? Eller navigere en robot autonomt på et kart? Hva med å få en industriell arm til å plukke opp en gjenstand? Du kan gjøre det i ROS via dets simuleringsmiljø som heter Gazebo.
- Mer CAD: Du kan være interessert i å utvikle og designe komplekse roboter. Begynn å lære 3D-designprogramvare som Blender eller SolidWorks, slik at du kan designe dine egne roboter.
Ekspertnivå
- Fortsett å lære og vokse: Hvert konsept som er nevnt ovenfor er uendelig med sin egen dyd, og for å bli ekspert på robotikk, må du investere tiden og fortsette å lære. Du vil innse at du trenger å lære flere klassifikatorer eller modeller for å oppdage objekter / bilder bedre. Eller du må kanskje lære mer om kontrollalgoritmer for å optimalisere løsningene dine.
- Mer programvare / maskinvare: Avhengig av interesseområde og spesialisering, vil du gjøre mer og mer av koding, algoritmisk utvikling, ROS og / eller robotdesign.
Til slutt er jeg definitivt ikke ekspert og kan derfor ikke legge mye til det . Det jeg kan si sikkert er til og med jeg vet ikke hva jeg ikke vet. En viktig ting å huske er: kom i gang og vær konsekvent =)