A feladat a Budapesti Műszaki és Gazdaságtudományi Egyetem mechatronikai mérnöki MSc képzés Kognitív robotika (BMEGEMINMKR) tantárgyához készült.
Készítette:
- Docsa Bence
- Horváth Ákos
- Kincses Tamás Leó
- Nagy Bertalan
- Feladatleírás
- Előkövetelmények
- TurtleBot3
- Pálya
- Neurális hálózat
- Vizualizációs node
- Bemutató
- Modell tesztelése
A projekt megvalósítása során a következő követelményeket kellett teljesíteni:
- Vonalkövetés és színfelismerés neurális hálóval
- Saját vizualizációs node-ban megmutatni a robot által bejárt utat és a vonal színét az út során
- A robot viselkedjen eltérően a különböző színű vonalak esetén
- Ubuntu 24.04
- A projekt elkészítése során WSL 2 segítségével használtuk
- ROS 2 Jazzy
- Telepítési útmutató
- A Desktop Install-t javasoljuk, mert az tartalmazza az RViz-t is
- Telepítési útmutató
- RViz
- Gazebo Harmonic
- Telepítési útmutató
- Szükséges a Gazebo ROS integráció telepítése:
sudo apt install ros-jazzy-ros-gz
- URDF fájlok megnyitásához:
sudo apt install ros-jazzy-urdf sudo apt install ros-jazzy-urdf-launch
- A projekt során TurtleBot3-at használunk
burgerkonfigurációban- Az alábbi csomagok segítségével biztosított a kompatibilitás:
git clone -b ros2 https://github.com/MOGI-ROS/turtlebot3_msgs git clone -b mogi-ros2 https://github.com/MOGI-ROS/turtlebot3 git clone -b new_gazebo https://github.com/MOGI-ROS/turtlebot3_simulations
- Az alábbi csomagok segítségével biztosított a kompatibilitás:
- Dynamixel SDK
vagy
sudo apt install ros-dynamixel-sdk
git clone -b humble-devel https://github.com/MOGI-ROS/DynamixelSDK/
- MOGI Trajectory Server
git clone https://github.com/MOGI-ROS/mogi_trajectory_server
- Python csomagok:
tensorflow==2.18.0keras==3.7.0imutilsscikit-learnopencv-python==4.11.0.86matplotlibnumpy==1.26.4
A burger konfigurációjú TurtleBot3-at a turtlebot3_burger.urdf fájl írja le, szimulációs működését a turtlebot3_burger/model.sdf fájl tartalmazza.
A robotmodell megtekinthető RViz-ben a check_urdf.launch.py launch fájl segítségével:
ros2 launch line_follower_color_recognition check_urdf.launch.pyA projekt során használt pálya egy színes vonalat tartalmaz sötét vagy világos alapon. A vonal három szakaszból áll: piros, zöld és kék. A modellek a gazebo_models mappában találhatóak.
A pálya megtekinthető és a robottal bejárható a spawn_robot.launch.py launch fájl segítségével.
Pálya sötét alapon:
ros2 launch line_follower_color_recognition spawn_robot.launch.py world:=track_dark.sdfPálya világos alapon:
ros2 launch line_follower_color_recognition spawn_robot.launch.py world:=track_light.sdfA neurális háló tanításához szükséges képeket a save_training_images node segítségével lehet elkészíteni a saved_images mappába:
ros2 run line_follower_color_recognition_py save_training_imagesEhhez segítségül használható a line_follower node, ami képfeldolgozás segítségével automatikusan végigvezeti a robotot a pályán:
ros2 run line_follower_color_recognition_py line_followerA robot manuálisan is irányítható:
ros2 run teleop_twist_keyboard teleop_twist_keyboardA projekt során készített kétkimenetű konvolúciós neurális hálózat (CNN) két klasszifikációt végez el a roboton lévő kamera képe alapján:
- Meghatározza, hogy a robotnak mit kell tennie a vonal követése érdekében: előremenni, jobbra fordulni, balra fordulni.
- Meghatározza, hogy a robot által követett vonal aktuális szakasza milyen színű: piros, kék, zöld.
A hálózat tanítása a train_network.py Python kód segítségével történik.
python train_network.pyA tanításhoz használt képek a training_images mappában találhatóak felcímkézve. Ezek a képek a track_dark és a track_light bejárása során készültek.
A modell tanítása kihagyható, mert a network_model mappában megtalálható a tanított modell.
A neurális háló használható vonalkövetésre a line_follower_cnn node segítségével:
ros2 run line_follower_color_recognition_py line_follower_cnnA node használata során a robot a különböző színű vonalszakaszokon eltérő sebességgel megy végig. Ez a sebességkülönbség nem számottevő, csupán a különböző színek érzékeltetésére szolgál.
| Szín | Sebességszorzó |
|---|---|
| piros | 1 |
| zöld | 0,9 |
| kék | 1,1 |
A robot által megtett utat és a követett vonal színét a path_visualizer node segítségével lehet kirajzoltatni RVizben.
ros2 run line_follower_color_recognition_py path_visualizerA teljes szimuláció egyben elindítható a simulation.launch.py launch fájl használatával:
ros2 launch line_follower_color_recognition simulation.launch.pyA vonalkövető robot működés közben megtekinthető az alábbi képre kattintva:
Továbbá a projekthez elkészült egy Hungaroringet formáló pálya is (sötét alapon):
A neurális hálóval történő vonalkövetést ezen a pályán is leteszteltük. A robot sikeresen végighalad annak ellenére, hogy erről a pályáról nem használtunk képeket a neurális háló tanítása során.
A szimulációról készült felvétel megtekinthető az alábbi képre kattintva:







