Nejlepší odpověď
Nejjednodušší odpovědí bude C ++ a Python .
Všechny robotické projekty, se kterými jsem pracoval, běží na jedné z těchto platforem, tak či onak. To by však byla neúplná odpověď, aniž byste nám ukázali skutečný obraz toho, co se děje v robotice.
Operační systém:
- C ++ a Python jsou rozhodně programovací jazyk, který na konci použijete. Kódy většiny robotů však dnes žijí v operačním systému zvaném ROS (Robot Operating System). ROS poskytuje elegantní softwarovou architekturu pro snazší ovládání a plánování robotů. Píšete tyto různé programy uzlů, které mohou publikovat určité informace, které mohou použít jiné uzly žijící uvnitř ROS . Například lokalizační uzel, který odhaduje polohu dronu ve 3D světě, zveřejní tyto informace pro další uzly, které se mají použít. Uzel plánovače trajektorie se pak může přihlásit k odběru těchto uzlů, aby získal tato data k vyhodnocení další cesty pro dron. Každý z těchto uzlů je jednoduchý kódy C ++ nebo Python .
Programování pro robotický výzkum:
- Simulace : Téměř všechny důkladné simulace a testování ve fázi výzkumu jsou prováděny nejdříve na MATLAB před převedením na kód C ++ nebo Python . Důvodem jsou elegantní vizualizační nástroje a užitečné předem napsané funkce, které platforma nabízí. Kódy MATLAB lze také integrovat do ROS .
Programování pro vizuální poznání:
- Modely strojového učení : Pokud robot používá nějaký druh strojového učení nebo technik hlubokého učení, je nejprve vyškolen na platformách jako Tensorflow, Keras, PyTorch atd. a poté vyškoleni modely jsou přeneseny do ROS jako uzel. Vyhledávací a záchranný dron například použije model detekce člověka jako uzel ROS , který se přihlásí k odběru surového uzlu obrazu kamery a publikuje veškerou detekci člověka.
- Zpracování obrázků : OpenCV je široce používaný nástroj pro zpracování obrázků, který může být integrován do C ++ nebo Pythonu uvnitř ROS . Například fotbalový robot potřebuje tento modul k detekci všech barevných koulí na obrázku.
Programování robotického hardwaru:
- Hardwarové programování : Pro hardwarovou úroveň FPGA programování, používá se verilog nebo VHDL .
- Firmware nebo mikrořadiče : AVR programování pro ATMEGA čipy jsou široce používány, pokud chcete mít efektivnější a sofistikovanější ovládání hardwaru. Jednodušší možností je použít mikrokontrolér Arduino , který používá obal kolem jazyka C . Programování v Arduinu je docela jednoduché, aby spouštělo servomotor nebo ovládalo ovladač motoru.
- Jednodeskové počítače : Pokud potřebujete více paměť a výpočetní výkon, než který poskytuje Arduino nebo Atmega , jdete na Raspberry Pi nebo Beagle Board rozpětí>. Oba podporují Ubuntu na palubě s Pythonem nebo C ++ v ROS , což vám usnadní život!
Nakonec se vše scvrkne na Python, C ++ a MATLAB v platformě ROS . ROS právě dobyl robotické pole natolik, že většina skvělých nových robotických programovacích nástrojů se rodí jako ROS balíčky.
Odpověď
Možná, že cestovní mapa, kterou jsem vytvořil, vám pomůže na vaší cestě učit se robotice. Vidím, že tato otázka je často kladena.
Plán má 4 úrovně a každá úroveň se zaměřuje na 4 základní koncepty.
Úroveň zahřívání
- Další informace kódování: Začněte vyzvedávat alespoň jeden šikovný programovací jazyk . Arduino IDE je dobré.Python je skvělý. C / C ++ bude fantastické. Můj návrh by byl Python . Existuje několik důvodů a později v cestovní mapě uvidíte, proč.
- Naučte se elektroniku: Začněte budovat základní elektroniku obvody . Může to být stejně jednoduché jako rozsvícení LED. Dále rozsvítí více LED. Vytvořte jednoduchý dopravní signál. Implementujte přepínače. Naučte se teoretické myšlenky fungování napětí, proudu, odporů, tranzistorů, sériových a paralelních obvodů. Prozkoumejte také senzory a servomotory!
- Naučte se základní montáž: Jako děti jsme rádi vyráběli hračky a stavěli věci. Udělejte totéž zde. Naučte se vytvářet některé základní struktury pomocí dřeva, akrylu, vláken nebo plastu.
- Integrace s mikrokontrolérem: S vědomím výše uvedeného koncepty, měli byste je vyzkoušet a otestovat na základním mikrořadiči. Nakonec chcete, aby váš obvod „reagoval“. Nejoblíbenější volbou mezi fandy a začátečníky je používání Arduino . Arduino skutečně zjednodušilo proces kódování a implementace základních reakčních obvodů.
(Zdroje: YouTube, Khan Academy, Code, Coursera, Udemy)
Úroveň pro začátečníky
- Naučte se objektově orientované programování: V robotice je důležité nejen kódovat, ale také jak dobře kódovat . Objektově orientované programování (OOP) je ohromný růstový potenciál a čím dříve to dokážete, tím více si budete v budoucnu děkovat. OOP není exkluzivní pro Python. V Pythonu je však můžete snadno implementovat a procvičovat. Prostřednictvím OOP se dozvíte o třídách, metodách, dědičnosti atd. A toto je vynikající technika pro psaní funkčních, modulárních a efektivních kódů.
- Další informace fyzika, pravděpodobnost a lineární algebra: Jak rostete z dětského robotika k adolescentovi, je důležité, abyste věděli také, jak robotiku v komunitě píší, čtou a mluví. Tento robotický jazyk silně využívá fyziku, pravděpodobnost a lineární algebru. Ano, tyto předměty vás nemusí bavit ve škole nebo na univerzitě, ale věřte mi, že je potřebujete, pokud jste to s robotikou myslí vážně. Počítačové vidění nemůžete dělat, aniž byste věděli o maticích. Nemůžete plánovat cestu, aniž byste věděli o fyzice. Umělou inteligenci nebo strojové učení nemůžete provádět, aniž byste věděli o pravděpodobnosti.
- Více zapojené počítačové dovednosti: Co tím myslím? Mnoho nováčků v robotice je naštvaných (taky jsem byl!), Že se musí naučit tento nový mimozemský operační systém, který má tučňáka někde vedle. Mluvím o operačním systému Linux . Je bezpodmínečně nutné, aby se někdo, kdo hledá hlouběji v robotice, seznámil s Linuxem. Mnoho knihoven, balíčků a softwaru vyvinutého pro robotiku je v prostředí Linux distribuováno velmi snadno a efektivně. Populární volba linuxového OS: Ubuntu
- Vestavěné systémy: Nyní vyvinuli jste lepší znalosti kódování, obvodů, teoretických konceptů a znalosti Linuxu, musíme je implementovat na menším počítači než na našem notebooku. Jděte do toho a vyzkoušejte koncepty úrovně zahřívání spolu s výše uvedenými koncepty na minipočítači jako je Raspberry Pi nebo BeagleBone. Připojte některé senzory, serva a kameru k jednomu z těchto minipočítačů a napište nějaký kód pro snímání, pohyb a detekci věcí!
(zdroje: YouTube, Khan Academy, Code, Coursera, MIT OCW)
Střední úroveň
- Vypracovat teoretické základy: Zde v závislosti na o jakou oblast robotiky vás zajímá, musíte se dozvědět více o teorii za ní. Další informace o robotické manipulaci s rameny (kinematika a řízení), vnímání (počítačové vidění, lineární algebra , matrices), strojové učení / umělá inteligence (pravděpodobnost, statistika, matematika). Vidíte, jak jsou některé z předchozích konceptů zásadní pro tyto základní oblasti robotiky?
- Používejte pokročilé knihovny: Nyní musíte implementovat stroj učení a / nebo algoritmy počítačového vidění na vašem robotu. Nakonec by robot měl být schopen vidět, přemýšlet a učit se, že?V Pythonu existují úžasné knihovny napsané pro implementaci algoritmů strojového učení a počítačového vidění, např. tok tenzoru a OpenCV. Podobně lze hodně AI praktikovat i v Pythonu. Samozřejmě můžete udělat totéž v C / C ++. Snažím se zde však udržovat konzistentnost.
- Seznamte se s ROS: Se znalostmi všech výše uvedených, vynikající prostředkem, který by se měl člověk naučit, je robotický operační systém (ROS). Zpočátku to může být trochu složité. ROS vám však otevírá dveře k testování pokročilých algoritmů a simulací na robotech, které ani nemáte! Chcete letět s kvadrokoptérou? Nebo navigovat robota autonomně na mapě? Co takhle přimět průmyslovou ruku k vyzvednutí předmětu? Můžete to udělat v ROS prostřednictvím jeho simulačního prostředí s názvem Gazebo.
- Další CAD: Možná vás bude zajímat vývoj a návrh složitých robotů. Začněte se učit 3D designový software , jako je Blender nebo SolidWorks, abyste si mohli navrhnout vlastní roboty.
Expertní úroveň
- Pokračujte v učení a růstu: Každý výše zmíněný koncept je nekonečný ze své vlastní ctnosti. Abyste se stali odborníkem v robotice, budete muset investovat čas a učit se dál. Uvědomíte si, že pro lepší detekci objektů / obrázků se musíte naučit více klasifikátorů nebo modelů. Nebo možná budete muset získat více informací o řídicích algoritmech, abyste mohli optimalizovat svá řešení.
- Další software / hardware: V závislosti na oblasti vašeho zájmu a specializace, budete se stále více věnovat programování, vývoji algoritmů, ROS nebo robotickému navrhování.
Nakonec rozhodně nejsem odborník, a proto k tomu nemohu moc přidat. . Mohu s jistotou říci, že ani nevím, co nevím. Je třeba si pamatovat jednu důležitou věc: začněte a buďte konzistentní =)