Skip to content

MOGI-ROS/ros2-line-follower-color-recognition

 
 

Repository files navigation

ROS 2 projekt a Kognitív robotika tárgyra (BMEGEMINMKR)

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

Tartalomjegyzék

Feladatleírás

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

Előkövetelmények

  • Ubuntu 24.04
    • A projekt elkészítése során WSL 2 segítségével használtuk
  • ROS 2 Jazzy
  • RViz
  • Gazebo Harmonic
  • 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 burger konfigurá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
  • Dynamixel SDK
    sudo apt install ros-dynamixel-sdk
    vagy
    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.0
    • keras==3.7.0
    • imutils
    • scikit-learn
    • opencv-python==4.11.0.86
    • matplotlib
    • numpy==1.26.4

TurtleBot3

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.py

alt text

Pálya

A 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.sdf

alt text

Pálya világos alapon:

ros2 launch line_follower_color_recognition spawn_robot.launch.py world:=track_light.sdf

alt text

A 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_images

Ehhez 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_follower

A robot manuálisan is irányítható:

ros2 run teleop_twist_keyboard teleop_twist_keyboard

Neurális hálózat

A 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.py

A 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.

alt text

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_cnn

A 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

Vizualizációs node

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_visualizer

alt text

Bemutató

A teljes szimuláció egyben elindítható a simulation.launch.py launch fájl használatával:

ros2 launch line_follower_color_recognition simulation.launch.py

A vonalkövető robot működés közben megtekinthető az alábbi képre kattintva:

Modell tesztelése

Továbbá a projekthez elkészült egy Hungaroringet formáló pálya is (sötét alapon):

alt text

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:

About

ROS 2 project for Cognitive Robotics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 97.5%
  • CMake 2.5%