Skip to content

MOGI-ROS/Kognitiv_projekt

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 96.4%
  • Shell 3.6%