Skip to content

Latest commit

 

History

History
91 lines (70 loc) · 5.1 KB

File metadata and controls

91 lines (70 loc) · 5.1 KB

Kognitiv_projekt

ROS2/Gazebo projekt SLAM közbeni emberdetektáláshoz. A gazebo_mapper_py csomag TurtleBot3 szimulációt indít, Cartographerrel térképez, YOLOv8-cal detektál a kamera képén, majd az RViz-re teszi ki a találatokat, ami így megjelenik a térképen.

Tartalomjegyzék

  1. Résztvevők
  2. Új gépen inditás
  3. Gazebo világ
  4. Neurális háló
  5. Irányítás
  6. Perception node és működés
  7. Fontos topicok
  8. Megjegyzés
  9. Videó

Résztvevők

Ladányi Péter, Kaszás Péter, Pafféri Péter,Szakács Levente, Hegedűs László

Új gépen inditás

ROS2 Jazzy környezetben:

sudo apt update
sudo apt install -y \
  python3-colcon-common-extensions \
  python3-rosdep \
  python3-pip \
  ros-jazzy-turtlebot3-gazebo \
  ros-jazzy-turtlebot3-cartographer \
  ros-jazzy-cartographer-ros


git clone https://github.com/ladanyipeter/Kognitiv_projekt.git
source /opt/ros/jazzy/setup.bash
sudo rosdep init 2>/dev/null || true
rosdep update
rosdep install --from-paths src --ignore-src -r -y
python3 -m pip install --user --break-system-packages --force-reinstall -r requirements.txt
bash scripts/install_gazebo_models.sh
colcon build
source install/setup.bash
ros2 launch gazebo_mapper_py simulation.launch.py

Gazebo világ

Egy egyedi, L-alakú házat építettünk fel Gazebo-ban, amihez a szükséges modelleket az AWS robomaker small house world github repo-ból töltöttük le. A szükséges modellek letöltése után a falak elhelyezésével 4 külön szobát alakítottunk ki, amelyek a következők:

  • Nappali és konyha egy helyiségben, amelyeket a konyhapult és szekrények választanak el. A konyhában étkezőasztal székekkel, pult és hűtő található, valamint egy ember a konyhapult mellett. A nappaliban egy dohányzóasztal és körülötte székek találhatóak.
  • Beltéri edzőterem külön szobában, fekvenyomó paddal és súlyzókkal, valamint egy ember.
  • Hálószoba ággyal, éjjeliszekrénnyel és egy TV-vel.
  • Az utolsó szoba pedig egy még berendezésre váró szoba az újonnan épült házban, itt kartondobozok találhatók, valamint egy ember aki éppen ezekből pakol ki. Ebben a szobában ezen kívül csak egy szekrény található.

Neurális háló

A kamerakép feldolgozásához az Ultralitycs YOLOv8n modelljét használtuk. Egyszerű predict módban, és az ember osztályt tartottuk meg a detektálásokból, és ezt jelenítettük meg a kameraképen és a map-en is.

Irányítás

Nincs automatizált mozgása, irányítani egy másik terminálban nyitott távirányítóval lehet:

ros2 run teleop_twist_keyboard teleop_twist_keyboard 

Perception node és működés

A saját node, ami az objektumok észlelésért felel. Feliratkozik a kameraképre és a LIDAR szenzor jelére. A kameraképet megjeleníti egy külön ablakban, neurális háló (yolov8 nano) segítségével elemzi, és ha embert talál, akkor azt kiemeli, és elküldi (publish) az rviznek. A detektálás egy szöginformációt is tartalmaz, amelyet a LIDAR adataival összekapcsolva meghatározható az ember pozíciója a térképen. A cartographer csomag segítségével feltérképezhetjük a helyszínt, és így már bejelölhetjük rajta az embereket.

map

A rendszerben klaszterezést is alkalmaztunk a LIDAR adatok feldolgozására. Erre azért volt szükség, mert önmagában a kamera alapú emberdetektálás nem mindig adott pontos pozíciót a térképen. Előfordult például, hogy a kamera már felismerte az embert, de a LIDAR még nem látta megfelelően, ezért a rendszer az embert hibásan a falra vagy egy sarokra helyezte a map-en.

A klaszterezés másik fontos szerepe az volt, hogy a LIDAR gyakran külön objektumként érzékelte az ember két lábát. Emiatt a rendszer ugyanazt az embert két külön ponton jelenítette meg a térképen. A klaszterezés segítségével a közeli LIDAR pontokat össze tudtuk kapcsolni, így stabilabb és pontosabb emberpozíciót kaptunk. A megoldás a LIDAR sugarakat csoportosítja, majd a megfelelő méretű és egymáshoz közeli klaszterekből határozza meg az ember helyét.

Fontos topicok

  • Kamera: /image_raw/compressed
  • LIDAR: /scan
  • Térkép: /map
  • Detektált objektumok RVizhez: /detected_objects_markers

Megjegyzés

A projekt nem használ gépfüggő abszolút útvonalakat a Gazebo világfájlokban. A Gazebo modellek a ~/gazebo_models mappába kerülnek, amit a launch fájl automatikusan hozzáad a Gazebo keresési útvonalaihoz. A rosdep miatt ha minden jól megy semmit sem kell pluszban manuálisan telepíteni.

Videó

A szimulációról videót is készítettünk működés közben, ami az alábbi linken érhető el: https://drive.google.com/file/d/1F7muy9zZ0dy0EOCNPHec-l6IjMH29DoC/view?usp=sharing