Beste antwoord
Het eenvoudigste antwoord is C ++ en Python .
Alle robotica-projecten waarmee ik heb gewerkt, draaien op een van deze platforms, op de een of andere manier. Dit zou echter een onvolledig antwoord zijn zonder u het werkelijke beeld te laten zien van wat er binnen robotica gebeurt.
Besturingssysteem:
- C ++ en Python zijn zeker de programmeertalen die je aan het einde gebruikt. De codes voor de meeste robots bevinden zich tegenwoordig echter in een besturingssysteem genaamd ROS (Robot Operating System). ROS biedt een elegante softwarearchitectuur voor eenvoudigere robotbesturing en planning. Er zijn verschillende knooppuntprogrammas die u schrijft en die bepaalde informatie kunnen publiceren die kan worden gebruikt door andere knooppunten die in ROS leven. Het lokalisatieknooppunt dat de positie van een drone in de 3D-wereld schat, zou deze informatie bijvoorbeeld publiceren zodat andere knooppunten kunnen worden gebruikt. Een trajectplanningsknooppunt kan zich vervolgens abonneren op deze knooppunten om deze gegevens te verkrijgen om het volgende pad voor de drone te evalueren. Elk van deze knooppunten zijn eenvoudige C ++ of Python -codes.
Programmering voor robotica-onderzoek:
- Simulatie : bijna alle rigoureuze simulaties en tests in de onderzoeksfase worden eerst gedaan op MATLAB voordat het wordt geconverteerd naar een C ++ of Python -code. Dit komt door de elegante visualisatietools en handige vooraf geschreven functies die het platform biedt. MATLAB -codes kunnen ook worden geïntegreerd met ROS .
Programmering voor visuele cognitie:
- Machine learning-modellen : als de robot een soort machine learning of deep learning-technieken gebruikt, worden ze eerst getraind met platforms zoals Tensorflow, Keras, PyTorch enz. en vervolgens worden de getrainde modellen worden als knooppunt overgedragen naar ROS . Een zoek- en reddingsdrone zou bijvoorbeeld een menselijk detectiemodel gebruiken als een ROS -knooppunt dat zich abonneert op het onbewerkte camerabeeldknooppunt en alle menselijke detectie publiceert.
- Beeldverwerking : OpenCV is een veelgebruikt hulpmiddel voor beeldverwerking dat kan geïntegreerd zijn met C ++ of Python binnen ROS . Een voetbalrobot zou deze module bijvoorbeeld nodig hebben om alle gekleurde ballen op de afbeelding te detecteren.
Programmering voor robotica-hardware:
- Hardwareprogrammering : voor hardwareniveau FPGA programmeren, verilog of VHDL wordt gebruikt.
- Firmware of microcontrollers : AVR -programmering voor ATMEGA -chips worden veel gebruikt als u een efficiëntere en verfijndere controle over de hardware wilt hebben. Een gemakkelijkere optie is om de Arduino microcontroller te gebruiken die een wrapper gebruikt rond de C-taal . Het is vrij eenvoudig om in Arduino te programmeren om een servomotor te laten draaien of om een motorstuurprogramma te besturen.
- Single board computers : als je meer nodig hebt geheugen en verwerkingskracht dan die van Arduino of Atmega , ga je voor Raspberry Pi of Beagle Board . Beide ondersteunen Ubuntu aan boord met Python of C ++ in ROS , wat uw leven gemakkelijker maakt!
Uiteindelijk komt het allemaal neer op Python, C ++ en MATLAB in een ROS-platform . ROS heeft zojuist het robotica-veld zo veroverd dat de meeste coole nieuwe programmeertools voor robotica worden geboren als ROS pakketten.
Antwoord
Misschien zal de routekaart die ik heb gemaakt je helpen bij je reis om robotica te leren. Ik zie dat deze vraag vaak wordt gesteld.
De routekaart heeft 4 niveaus en elk niveau is gericht op 4 kernconcepten.
Opwarmniveau
- Leren codering: Begin met het oppikken van minstens één handige programmeertaal . Arduino IDE is goed.Python is geweldig. C / C ++ zal fantastisch zijn. Mijn suggestie is Python . Hiervoor zijn verschillende redenen en later in de routekaart zul je zien waarom.
- Leer elektronica: Begin met het bouwen van basiselektronica circuits . Het kan zo simpel zijn als het aansteken van een LED. Vervolgens lichten meer LEDs op. Maak een eenvoudig verkeerslicht. Implementeer schakelaars. Leer de theoretische ideeën achter hoe spanning, stroom, weerstanden, transistors, serie- en parallelle circuits werken. Ontdek ook sensoren en servomotoren!
- Leer de basisassemblage: Als kinderen hielden we ervan om speelgoed te maken en dingen te bouwen. Doe hier hetzelfde. Leer een aantal basisstructuren te maken met hout, acryl, vezels of plastic.
- Integreren met microcontroller: Met kennis van het bovenstaande concepten, zou je ze moeten proberen en testen op een eenvoudige microcontroller. U wilt immers dat uw circuit “reageert”. De meest populaire keuze onder hobbyisten en beginners is om te gaan met Arduino . Arduino heeft het proces van codering en implementatie van eenvoudige reactionaire circuits echt vereenvoudigd.
(Bronnen: YouTube, Khan Academy, Code, Coursera, Udemy)
Beginnersniveau
- Leer objectgeoriënteerd programmeren: het is niet alleen belangrijk om te coderen in robotica, maar ook hoe goed te coderen . Objectgeoriënteerd programmeren (OOP) is een enorme spier om te groeien en hoe eerder je dit kunt doen, hoe meer je jezelf zult bedanken in de toekomst. OOP is niet exclusief voor Python. In Python kunt u deze echter eenvoudig implementeren en oefenen. Via OOP leert u over klassen, methoden, overerving, enz. En dit is een uitstekende techniek voor het schrijven van functionele, modulaire en efficiënte codes.
- Leren natuurkunde, waarschijnlijkheid en lineaire algebra: terwijl je groeit van een zuigelingenrobot tot een adolescent, is het belangrijk dat je ook weet hoe robotica wordt geschreven, gelezen en gesproken door anderen in de gemeenschap. Deze robottaal maakt veel gebruik van natuurkunde, waarschijnlijkheid en lineaire algebra. Ja, je vindt deze vakken misschien niet leuk op school of op de universiteit, maar geloof me, je hebt ze nodig als je dat bent serieus over robotica. U kunt geen computervisie doen zonder kennis te hebben van matrices. Je kunt geen padplanning maken zonder kennis van de natuurkunde. U kunt geen kunstmatige intelligentie of machine learning doen zonder de waarschijnlijkheid te kennen.
- Meer betrokken computervaardigheden: Wat bedoel ik daarmee? Veel nieuwkomers op het gebied van robotica zijn stomverbaasd (ik ook!) Dat ze dit nieuwe buitenaards uitziende besturingssysteem moeten leren met ergens een pinguïn ernaast. Ik heb het over Linux besturingssysteem. Het is absoluut noodzakelijk dat iemand die zich verdiept in robotica, vertrouwd moet raken met Linux. Veel bibliotheken, pakketten en software die voor robotica zijn ontwikkeld, worden heel gemakkelijk en efficiënt gedistribueerd in Linux-omgevingen. Populaire Linux OS-keuze: Ubuntu
- Ingebouwde systemen: Nu je hebt een betere kennis ontwikkeld van codering, schakelingen, theoretische concepten en vertrouwdheid met Linux, we moeten deze implementeren op een kleinere computer dan onze laptop. Dus ga je gang en probeer opwarmniveau -concepten samen met de bovenstaande -concepten op een minicomputer zoals Raspberry Pi of de BeagleBone. Koppel enkele sensoren, servos en een camera aan een van deze min-computers, en schrijf wat code om dingen te detecteren, verplaatsen en detecteren!
(bronnen: YouTube, Khan Academy, Code, Coursera, MIT OCW)
Gemiddeld niveau
- Ontwikkel theoretische grondslagen: Hier afhankelijk van in welk gebied van robotica je geïnteresseerd bent, je moet meer leren over de theorie erachter. Meer informatie over robotarmmanipulatie (kinematica en besturing), perceptie (computervisie, lineaire algebra , matrices), machine learning / kunstmatige intelligentie (waarschijnlijkheid, statistiek, wiskunde). Zie je hoe sommige van de voorgaande concepten fundamenteel zijn voor deze kerngebieden van robotica?
- Gebruik geavanceerde bibliotheken: Nu moet je machine implementeren leren en / of computer vision-algoritmen op uw robot. De robot moet tenslotte kunnen zien, denken en leren, toch?Op Python zijn er verbazingwekkende bibliotheken geschreven voor het implementeren van machine learning en computer vision-algoritmen, bijvoorbeeld tensorstroom en OpenCV. Evenzo kan veel AI ook op Python worden geoefend. Natuurlijk kunt u hetzelfde doen in C / C ++. Ik probeer het hier echter consistent te houden.
- Raak vertrouwd met ROS: Met de kennis van al het bovenstaande is een uitstekende middleware die men zou moeten leren, is het Robotbesturingssysteem (ROS). Het kan in het begin een beetje lastig zijn om op te halen. ROS opent echter uw deuren om geavanceerde algoritmen en simulaties te testen op robots die u niet eens hebt! Wil je een quadcopter besturen? Of autonoom een robot navigeren op een kaart? Hoe zit het met het krijgen van een industriële arm om een object op te pakken? U kunt dat doen in ROS via zijn simulatieomgeving genaamd Gazebo.
- Meer CAD: Misschien bent u geïnteresseerd in het ontwikkelen en ontwerpen van complexe robots. Begin met het leren van 3D-ontwerpsoftware zoals Blender of SolidWorks zodat je je eigen robots kunt ontwerpen.
Expertniveau
- Blijf leren en groeien: elk hierboven genoemd concept is op zichzelf eindeloos, en om een expert in robotica te worden, moet je tijd investeren en blijven leren. U zult zich realiseren dat u meer classificaties of modellen moet leren om objecten / afbeeldingen beter te detecteren. Of misschien heeft u meer informatie nodig over besturingsalgoritmen om uw oplossingen te optimaliseren.
- Meer software / hardware: afhankelijk van uw interessegebied en specialisatie, zul je steeds meer gaan coderen, algoritmische ontwikkeling, ROS en / of robotontwerp.
Ten slotte ben ik absoluut geen expert en daarom kan ik daar niet veel aan toevoegen . Wat ik zeker kan zeggen, is dat zelfs ik niet weet wat ik niet weet. Een belangrijk ding om te onthouden is: ga aan de slag en wees consistent =)