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, nem arj.

  • 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):

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




sze-info.github.io/arj