Start
A tananyag elérhetősége megváltozott új link: https://sze-info.github.io/ajr/. A régi link még egy ideig elérhető, de nem frissül. A tantágy nevének rövidítése alapján tehát a link vége
ajr
, nemarj
.
- Tantárgy neve magyarul: Autonóm járművek és robotok programozása
- Tantárgy neve angolul: Autonomous vehicles and robots software engineering
- Neptun tárgykód:
GKNB_AUTM078
A tantárgy célja
A tárgy sikeres teljesítése után a hallgatók átfogó képet kapnak az önvezető (autonóm) járművek szoftver moduljairól és további lényeges összetevőiről.
C++ és python nyelven egyszerűbb ehhez kapcsolódó szoftvermodulokat tudnak fejleszteni. Ezen túlmenően a hallgatók képesek a megfelelő kód alkalmazására, valamint annak funkcióinak értelmezésére és továbbfejlesztésére ROS 2 keretrendszerben.
A tárgy összeállítása során olyan nemzetközileg is elismert egyetemek tananyagát vettük alapul, mint az MIT, ETH Zürich, TU München, Univerisity of Virginia vagy a Stanford University. A megfelelő licenc betarása mellett bizonyos tanangyag részeket át is vettünk, másokat inspirációként használtunk, erről részletesen itt lehet olvasni. 2023-ban a tantárgy az ROS 2 Humble verzióját használja, ez a disztribúció 2027 májusáig támogatott.
A tantárgy teljesítése például következő autóipari / autonóm járműves cégeknél előnyt jelenthet (ABC sorrendben):
- AiMotive Kft. (Budapest)
- AVL Hungary Kft. (Budapest, Érd, Kecskemét)
- Bosch: Robert Bosch Kft. (Budapest, Győr, Zalaegerszeg)
- Continental Autonomous Mobility Hungary Kft. (Budapest, Győr, Debrecen)
- Járműipari Kutatóközpont, SZE (Győr)
A tárgyban bemutatott ismeretekre alapozva diplomamunka, szakdolgozat, projektmunka, TDK dolgozat is készíthető, illetve van lehetőség a kötelező szakmai gyakorlat teljesítésére is.
Oktatók | . | ||
---|---|---|---|
Dr. Horváth Ernő Tárgyfelelős github.com/horverno | Dr. Ballagi Áron Tematika, nem oktat github.com/aronball | ||
Krecht Rudolf Szimuláció, robotika github.com/rudolfkrecht | Unger Miklós Környezetérzékelés github.com/umiklos | ||
Ignéczi Gergő Szabályozástechnika github.com/gfigneczi1 | Markó Norbert AI, neurális hálók github.com/norbertmarko |
2023/24 őszi félévében az A2
-es teremben, illetve a C100
-as gépteremben tartunk órákat.
Elmélet
Óra | Dátum | Tananyag |
---|---|---|
1 | szept. 6. | Bevezetés: A tantárgy felépítése. Robotikai és önvezető járműves ismeretek. Érzékelés, észlelés, tervezés, szabályozás, aktuálás. |
2 | szept. 13. | ROS2 koncepciók: Egyetemi robotok és járművek ismertetése. ROS 2 alapismeretek. |
3 | szept. 20. | Érzékelés: Kamera, LIDAR, GNSS (GPS), IMU, CAN szenzorok működése, jelfeldolgozása, főbb ROS 2 topicok, ROS 2 időkezelés. |
4 | szept. 27. | Féléves beadandó: féléves beadandó ismertetése, osztályzási szempontok, ötletek, kérdések-válaszok |
5 | okt. 4. | Transzformációk: Merev test mozgása, mátrix szorzás ismétlése, homogén koordináták szemléltetése rövid progamkódokkal, quaternion (kvaterniók) fogalma. |
6 | okt. 11. | Észlelés: objektumfelismerés, objektumklasszifikáció, objektum követés és predikció, SLAM és LOAM. |
7 | okt. 25. | Szimuláció: ROS 2 kompatibilis szimulátorok áttekintése (pl Gazebo, Carla, SVL, OSSDC SIM, AirSim, AWSIM, CoppeliaSim, MVSim) |
8 | nov. 8. | Tervezés: Globális tervezés, lokális tervezés. Lokális tervezés: keresztirányú és hosszirányú tervezés. |
9 | nov. 15. | Szabályozás: Járműirányítási megoldások (inverz-modellek, prediktív modellek, zárhurkú modellek). |
10 | nov. 22. | Mesterséges intelligencia: Neurális hálózatok járműves és robotikai fókusszal. |
Gyakorlat
Óra | Dátum | Tananyag |
---|---|---|
1 | szept. 6. | Bevezetés + Linux + Géptermi ismeretek: WSL2 használata Windows operációs rendszeren. Géptermi alapismeretek. Linux parancsok, amelyek szükségesek lehetnek a későbbiekben. |
2 | szept. 13. | Telepítés+ Fejlesztőkörnyezet beállítása + ROS2 kommunikáció: Első ROS 2 node-ok, ROS parancsok használata, build és source. |
3 | szept. 20. | Érzékelés gyakorlat: Szenzor adatok jellemzőbb formátumai: sensor_msgs/PointCloud2 , sensor_msgs/Image , geometry_msgs/Pose , stb. Bag .mcap fájlok kezelése, lejátszása. Egyszerű pacakge készítése, amely pozíció adatokra iratkozik fel. |
4 | szept. 27. | Verziókezelés, Git, Copilot, vs code, ROS 2 launch: Copilot használata ROS 2 fejlesztéshez, Template repo ismertetése, használata, launch fájlok írása python nyelven |
5 | okt. 4. | Transzformációk gyakorlat: Node létrehozása, amely transzformációkat hirdet. Markerek megjelenítése, launch önálló feladat. |
6 | okt. 11. | Észlelés gyakorlat: egyszerű LIDAR szűrés, X, Y és Z koordináták szerint. |
7 | okt. 25. | Szimuláció bevezetés: Gazebo Fortress és ROS 2, szimuláció gyakorlat: saját robotszimuláció létrehozása. |
8 | nov. 8. | Tervezés gyakorlat: Polinom alapú lokális tervező megvalósításás. Nav2 használata szimulátorral. |
9 | nov. 15. | Szabályozás gyakorlat: PID hangolás. Trajektóriakövetés Gazebo szimulátorral. Saját fejlesztésű szabályzó és jármű modell. |
10 | nov. 22. | Mesterséges intelligencia gyakorlat: Neurális hálózatok gyakrolat. |
Érdemjegy
- Aláírás: Kis beadandó teljesítése (egyszerű otthoni programozási feladat)
- 1 (elégtelen): ZH átlag 0% felett
- 2 (elégséges): ZH átlag 60% felett
- 3 (közepes): ZH átlag 85% felett
- 4 (jó): Nagy féléves beadandó a megadott irányelvek mentén, nagyobb hibákkal teljesítve
- 5 (jeles): Nagy féléves beadandó a megadott irányelvek mentén, csak néhány kisebb hibával teljesítve
Érintett témakörök (nem a feldolgozás szerinti sorrendben)
- Bevezetés: Önvezető / autonóm járművek bevezetése: az aktuális helyzet, múlt és jövő. Szenzorok, aktuátorok kommunikációs technológiák. (LIDAR, radar, aktív és passzív kamera, GPS, odometria, IMU, CAN) Foxglove studio és saját mérések szemlétetésképp
- Szoftverrendszer: Önvezető / autonóm járművek szoftverei: érzékelés, észlelés, tervezés, követés. Szimulációs technológiák, felhasználói felületek. Keretrendszerek: ROS/ROS2/MATLAB/LabVIEW szererepe, valós idejű rendszerek (FPGA, real-time operációs rendszerek).
- Érzékelés: SLAM, objektumdetekció, objektumkövetés és előrejelzés. Padkadetekció, sávdetekció, úthibadetekció, jármű és gyalogosdetekció/követés stb. Mesterséges intelligencia (különösen neurális hálózatok) és hagyományos (pl C++ nyelven készült) algoritmusok előnyei hátrányai, fúziója.
- Technológiai ismeretek: Linux, Git: Linux ismeretek: Terminal kezelése, Git kezelése, VS code, ROS telepítése
- Technológiai ismeretek: ROS 2 alapok: topicok és üzenetek, MCAP (Rosbag) visszajátszása, Topicok kezelése, Topic tartalmának elérése pythonból, rviz, rqt_plot, MCAP (Rosbag) készítés. ROS 2 ökoszisztéma és fejlesztés ROS 2 node-ok készítése pythonban és C++-ban: ROS 2 node-ok, rqt_graph, Publisher / Subscriber node pythonban, Publisher / Subscriber node C++-ban. Első egyeztetés az egyéni projektfeladatról.
- ROS 2 programozás:ROS szenzoradatok feldolgozása C++ node-al: ROS node-ok írása,
visualization_msgs
, LIDAR szenzoradatok:sensor_msgs/PointCloud2
,sensor_msgs/LaserScan
, stb. - Szimuláció és szabályzás: Szimuláció: ROS node-ok használata szimulációhoz (gazebo) F1/10, rviz, egyéni projektfeladatok véglegesítése. Tervezés blokk: trajektória tervezők típusai, kinematikai kihívások, Szabályzás blokk: járműmodellezés, szabályzók bemutatása, jármű- és aktuátorszintű szabályzás, a mozgás megvalósítása (fékrendszerek, kormányrendszerek…stb)
- Kitekintés, doktori kutatások, egyetemi hallgatói csapatok: Nissan Leaf, Lexus és Szenergy önvezető projektek, bemutatása, kiragadott kódrészletekkel Érzékelés: pontfelhő kezelés vagy objektum detektálás kamera alapon Észlelés / tervezés: útvonalmeghatározás, szabad terület meghatározás, trajektória tervezés Szabályzás: zárthurkú modellezett jármű, szabályzó építése (pl PID vagy pure pursuit)
- Mesterséges intelligencia: Önvezető / autonóm járművek szoftverei, összefoglalás, kitekintés neurális hálózatok (mesterséges intelligencia, AI)
- Technológiai ismeretek: ROS 2 használata, újdonságai ROS-hez képest
- Projektmunka: Egyéni projektfeladat bemutatása