Giriş
Otonom sistemlerin geliştirilmesinde simülasyon ortamları kritik bir rol oynar. Bu yazıda, Gazebo ve ROS 2 tabanlı bir simülasyon ortamını nasıl kurduğumu, robotun nasıl modellendiğini, sensörlerin nasıl entegre edildiğini ve karar mekanizmasının nasıl çalıştığını anlatacağım.
1. Kullanılan Teknolojiler
- 🧱 Gazebo: 3D fizik tabanlı simülasyon
- ⚙️ ROS 2 Humble: Robot işletim sistemi
- 📦 SDF: Robot modeli tanımı
- 🧠 Python: Karar mekanizması kodları
2. Robot Modeli ve SDF Yapısı
Aracımızı tanımlamak için SDF (Simulation Description Format) kullandım. Aracın gövdesi, tekerlekleri ve sensörleri bu yapıda belirtildi.
<link>
: Araç gövdesi ve tekerlekler<joint>
: Dönme hareketi<sensor>
: Kamera, Lidar, IMU tanımları
<sensor name="camera" type="camera">
<camera>
<horizontal_fov>1.396</horizontal_fov>
<image>
<width>640</width>
<height>480</height>
</image>
</camera>
</sensor>
3. Diff Drive Plugin Entegrasyonu
Aracın hareket etmesi için diff_drive_controller eklendi. Sağ ve sol tekerlekler aşağıdaki şekilde tanımlandı:
left_joint = rear_left_wheel_joint
right_joint = rear_right_wheel_joint
Ayrıca TF dönüşüm zinciri için odom_frame
ve base_link
tanımları yapıldı.
4. Sensörlerin ROS 2 ile Kullanımı
Lidar, kamera ve IMU gibi sensörler ayrı node olarak ROS 2 içerisinde çalıştı. Her biri belirli topic’lere veri gönderdi:
/camera/image_raw
/scan
(Lidar)/imu/data
Bu veriler Python ile yazılan karar mekanizmasında işlendi.
5. Karar Mekanizması
decision_maker.py dosyasında; kamera görüntüsünden alınan sarı şerit, Lidar ile nesne tespiti ve IMU verisi birlikte analiz edilerek bir hareket kararı üretildi. Bu karar /cmd_vel
topic’ine gönderildi.

6. TF (Transform) Yapısı
Aracın pozisyonunun tüm bileşenler tarafından tutarlı şekilde bilinmesi için TF zinciri şu şekilde kuruldu:
map → odom → base_link
Sonuç
Gerçek bir aracı riske atmadan otonom sistem geliştirmek isteyen herkes için ROS 2 ve Gazebo büyük bir olanak sağlıyor. Bu proje sayesinde yalnızca yazılım geliştirmeyi değil, aynı zamanda sistem mimarisini de bütünsel şekilde öğrendim.