Tanıtım videosu yakında eklenecek

Otonom Sürüş Simülasyonu

Seviye: 9/10
Otonom Sürüş Simülasyonu
Hızlı Başlangıç
  1. UDUSimp programını indirip kurun ve hesabınızla giriş yapın.
  2. Bir çalışma alanı (workspace) klasörü seçin; kütüphaneler ve başlangıç kodları c_… / py_… klasörlerine iner.
  3. Simülasyonu başlatın, kodunuzu çalışma alanında yazıp çalıştırın.

Fonksiyon Listesi

FonksiyonAçıklama
sim_connect() Simülasyona Bağlan
sim_disconnect() Simülasyon Bağlantısını Kes
drive(int yon) Aracı Sür
steer(int aci) Direksiyon Kontrolü
int d = lidar_read(int aci) Lidar Sensörü Oku
int v = drive_read() Sürüş Durumu Oku
int s = steer_read() Direksiyon Açısı Oku
int c = collision_read() Çarpışma Sensörü Oku

Simülasyonun Amacı

C, C++ ve Python gibi programlama dillerinin başlangıç eğitimi genellikle konsol uygulamaları üzerinden anlatılmaktadır. Dolayısıyla, geliştirilen kodun çıktıları konsol üzerinden gösterilmektedir. Bu durum öğrencinin program akışını hayal edememe ve davranışını tam olarak anlayamamasına neden olur.

Bu simülasyonun amacı öğrencinin geliştirdiği kodun nasıl çalıştığını simüle edebileceği bir ortam sağlamaktır. Gerçekçiliği arttırmak için lidar sensörleri, sürüş motoru, direksiyon ve çarpışma sensörü ayrı ayrı kontrol edilebilir ve her sensörün çıkış değeri okunabilir.

UDUSimp programını indirip kurduktan sonra istediğiniz simülasyonu çalıştırıp tercih ettiğiniz bir editörü kullanarak kod geliştirmeye başlayabilirsiniz. Tavsiye edilen editör: Visual Studio Code.

Otonom sürüş simülasyonunun zorluk derecesi 10 üzerinde 9 olarak değerlendirilmiştir.

Genel Bilgi

1 – Özellikler
• İleri / Geri / Dur sürüş motoru
• Açıya bağlı direksiyon kontrolü (−60° / +60°)
• 360° Lidar mesafe sensörü *
• Çarpışma sensörü *
• Sürüş durumu göstergesi *
• Direksiyon açısı göstergesi *

2 – Görev ve Tanım
Günlük hayatta kullanılan otonom araçları ve çalışma mantığını inceleyin. Aracın sensörlerden gelen verileri kullanarak engellerden kaçınması, parkurda ilerlemesi ve hedefe ulaşması için gereken kodu geliştirin.
Örnek senaryolar:
1- Önündeki engel 50 birimden yakına gelirse aracı durdurması
2- Sağ tarafta boşluk varsa sağa dönmesi, yoksa sola dönmesi
3- Çarpışma anında motoru durdurup operatöre haber vermesi
Gerekir.

Not: Lidar verileri simülasyonun her adımında (yaklaşık 30 ms) güncellenir; karar mantığını her döngüde yeniden okuma yaparak kurun. Tek seferlik okuma ile hareket kararı vermek hatalı sonuçlara yol açabilir.

Simülasyona Bağlan

sim_connect()

Simülasyon ile kod ortamı arasında bağlantı kurar.

#include "otonom.h"
int main() {
    sim_connect();
    return 0;
}
from otonom import *

sim_connect()

Simülasyon Bağlantısını Kes

sim_disconnect()

Simülasyon ile kod ortamı arasındaki bağlantıyı sonlandırır.

#include "otonom.h"
int main() {
    sim_connect();
    sim_disconnect();
    return 0;
}
from otonom import *

sim_connect()
sim_disconnect()

Aracı Sür

drive(int yon)

Aracın motorunu çalıştırır.
1. parametre:
DRIVE_FORWARD (1) = İleri
DRIVE_BACKWARD (-1) = Geri
DRIVE_STOP (0) = Dur

Örnek:
drive(DRIVE_FORWARD) → araç ileri gider
drive(DRIVE_BACKWARD) → araç geri gider
drive(DRIVE_STOP) → araç durur

#include "otonom.h"
int main() {
    sim_connect();
    drive(DRIVE_FORWARD);  // ileri
    drive(DRIVE_BACKWARD); // geri
    drive(DRIVE_STOP);     // dur
    return 0;
}
from otonom import *

sim_connect()
drive(DRIVE_FORWARD)   # ileri
drive(DRIVE_BACKWARD)  # geri
drive(DRIVE_STOP)      # dur

Direksiyon Kontrolü

steer(int aci)

Aracın direksiyonunu istenen açıya çevirir.
1. parametre: derece cinsinden açı
0 = düz git
+x = sola dön (örn: 48 = 48° sola)
-x = sağa dön (örn: -30 = 30° sağa)

Örnek:
steer(0) → düz
steer(48) → 48° sola
steer(-30) → 30° sağa

Açı -60 ile +60 arasında sınırlanır (daha büyük değerler 60 kabul edilir).

#include "otonom.h"
int main() {
    sim_connect();
    steer(0);    // duz
    steer(48);   // sola
    steer(-30);  // saga
    return 0;
}
from otonom import *

sim_connect()
steer(0)    # duz
steer(48)   # sola
steer(-30)  # saga

Lidar Sensörü Oku

int d = lidar_read(int aci)

Belirtilen açıdaki lidar ışınının ölçtüğü mesafeyi okur.
1. parametre: açı (0-360 derece, araca göre, saat yönünün tersine)
0 = aracın sağı
90 = aracın önü
180 = aracın solu
270 = aracın arkası
Çözünürlük 2 derecedir (tek sayılı açı bir önceki çift açıyı okur).
Dönen değer: 1-100 arası mesafe, 0 = menzilde engel yok

Örnek:
lidar_read(90) → öndeki engelin mesafesi
lidar_read(0) → sağdaki engelin mesafesi
lidar_read(180) → soldaki engelin mesafesi

#include "otonom.h"
int main() {
    sim_connect();
    int d = lidar_read(90);  // on
    if(d > 0 && d < 50)      // 0 = engel yok
        drive(DRIVE_STOP);   // engel yakin, dur
    return 0;
}
from otonom import *

sim_connect()
d = lidar_read(90)  # on
if 0 < d < 50:      # 0 = engel yok
    drive(DRIVE_STOP)  # engel yakin, dur

Sürüş Durumu Oku

int v = drive_read()

Aracın anlık sürüş durumunu okur.
Dönen değer:
0 → araç duruyor
1 → ileri gidiyor
-1 → geri gidiyor

#include "otonom.h"
int main() {
    sim_connect();
    int v = drive_read();
    if(v == 1)
        printf("Arac ileri gidiyor");
    return 0;
}
from otonom import *

sim_connect()
v = drive_read()
if v == 1:
    print("Arac ileri gidiyor")

Direksiyon Açısı Oku

int s = steer_read()

Direksiyonun anlık açısını okur (derece).
Dönen değer:
0 → düz
+x → sola dönük (örn: 48 = 48° sola)
-x → sağa dönük (örn: -30 = 30° sağa)

#include "otonom.h"
int main() {
    sim_connect();
    int s = steer_read();
    if(s > 0)
        printf("Direksiyon sola donuk");
    return 0;
}
from otonom import *

sim_connect()
s = steer_read()
if s > 0:
    print("Direksiyon sola donuk")

Çarpışma Sensörü Oku

int c = collision_read()

Aracın çarpışıp çarpışmadığını okur.
Dönen değer 1 → araç çarptı
Dönen değer 0 → çarpışma yok

#include "otonom.h"
int main() {
    sim_connect();
    int c = collision_read();
    if(c == 1) {
        drive(DRIVE_STOP);
        printf("Carpisma! Dur.");
    }
    return 0;
}
from otonom import *

sim_connect()
c = collision_read()
if c == 1:
    drive(DRIVE_STOP)
    print("Carpisma! Dur.")