
[Proje Linki](https://github.com/rag0nn/ros2_2d_frontier_exploration)

# maze_pkg Projesi

Bu proje, TurtleBot3 robotunun özel labirent dünyalarında simülasyonunu ve otonom gezinmesini sağlamak için geliştirilmiş bir ROS 2 paketidir. Proje, robotun haritalama, keşif, yol planlama ve çeşitli kontrol algoritmalarını içeren çok sayıda ROS2 node ve launch dosyası barındırır. Gazebo ile simülasyon desteği ve harita üretimi de mevcuttur.

## Genel Özellikler

- TurtleBot3 için labirent tabanlı simülasyon ortamı
- Otonom keşif ve haritalama algoritmaları
- Lidar verisi ile harita oluşturma
- Farklı kontrol ve navigasyon stratejileri
- Çoklu robot desteği ve performans metrikleri
- Kolayca özelleştirilebilir konfigürasyon dosyaları

## ROS2 Node'ları ve Görevleri

Aşağıda, pakette bulunan başlıca node'lar ve işlevleri listelenmiştir:

- **cartographer.py**: Lidar verisiyle harita oluşturur.
- **explorer.py**: Otonom keşif algoritmasını uygular, robotun bilinmeyen alanları gezmesini sağlar.
- **metric_calculator.py**: Keşif ve navigasyon performans metriklerini hesaplar.
- **nav_pose_goal.py**: Robotun hedef pozisyonuna gitmesini sağlar.
- **nav_pose_initial_pub.py**: Başlangıç pozisyonunu yayınlar.
- **nav_pose_path_compute.py**: Yol planlama ve yolun yayınlanmasını sağlar.
- **twist_bridge_cmd_vel_stamped.py**: Hız komutlarını uygun formata dönüştürür.
- **wall_fallower.py**: Duvar takip algoritması ile robotun haritada gezinmesini sağlar.

### Yardımcı Node'lar (explorer_tools/)

Bu algoritmalar explorer bazı işlevlerini yerine getiren alt modüllerdir.

- **frontiers.py**: Keşif için frontier (sınır) noktalarını belirler.
- **navigation.py**: Navigasyon yardımcı fonksiyonları.

## Launch Dosyaları ve Görevleri

Her bir launch dosyasının işlevi aşağıda özetlenmiştir:

- **maze_world_with_tb3.py**: Labirent dünyasında TurtleBot3 ile simülasyonu başlatır.
- **maze_world.launch.py**: Sadece labirent dünyasını başlatır (robotsuz).
- **multi_explorer.launch.py**: Çoklu robotla keşif simülasyonunu başlatır.
- **multi_metrics.launch.py**: Çoklu robotla metrik toplama simülasyonunu başlatır.
- **multi_nav2_tb3_simulation.launch.py**: Çoklu TurtleBot3 ile Nav2 tabanlı simülasyonu başlatır.
- **nav2_tb3_simulation.launch.py**: Tek TurtleBot3 ile Nav2 tabanlı simülasyonu başlatır.
- **nav2.launch.py**: Nav2 navigasyon stack'ini başlatır.
- **spawn_tb3.launch.py**: TurtleBot3 robotunu simülasyon ortamına ekler.

## Kurulum

1. Gerekli bağımlılıkları yükleyin:
	 ```bash
	 pip install numpy opencv-python
	 ```
2. Workspace'i derleyin:
	 ```bash
	 cd ~/Desktop/ene_ws
	 source /opt/ros/jazzy/setup.bash
	 colcon build
	 source install/setup.bash
	 ```

## Kullanım

- TurtleBot3 modelini tanımlayın:
	```bash
	export TURTLEBOT3_MODEL=burger
	```
- Simülasyonu başlatmak için:
	```bash
	ros2 launch maze_pkg maze_world_with_tb3.py
	```
- Sadece haritayı başlatmak için:
	```bash
	ros2 launch maze_pkg maze_world.launch.py
	```
- Duvar takip algoritması ile robotu kontrol etmek için:
	```bash
	ros2 run maze_pkg wall_fallower
	```
- Lidar ile haritalama yapmak için:
	```bash
	ros2 run maze_pkg cartographer
	```

## Konfigürasyon

Harita ve robot parametreleri `config/` klasöründeki YAML dosyalarından ayarlanabilir.
