Friday, May 30, 2025

robot bekçi projesi

🎯 SİSTEMİN AMACI VE KURULUŞ GEREKÇESİ

Temel Amaç

Akıllı Mahalle Güvenlik Sistemi, geleneksel güvenlik yöntemlerinin yetersiz kaldığı durumlarda 7/24 kesintisiz koruma sağlamak üzere tasarlanmış otonom bir yapay zeka destekli güvenlik çözümüdür. İnsan faktörüne bağlı hataları minimize ederken, hızlı tepki süresi ve yüksek doğruluk oranı ile mahalle sakinlerinin güvenliğini maksimum düzeyde korumayı hedefler.

Kuruluş Gerekçeleri

  • Artan güvenlik tehditleri
  • İnsan gücü maliyetlerinin yüksekliği
  • 24/7 kesintisiz izleme ihtiyacı
  • Hızlı müdahale gerekliliği
  • Teknolojik altyapı imkanları
  • Veri analizi ve raporlama ihtiyacı

What’s Done Well:

  1. UI Clarity and Visual Hierarchy:

    • The use of icons (from Lucide) alongside headers adds excellent visual affordance.

    • Color-coded Badge components for performance stats (e.g., “%95 Doğruluk”) increase readability.

    • Dark theme with green-blue gradients gives a cyber-security ambiance, consistent with the app's goal.

  2. Separation of Concerns:

    • The content is clearly broken into semantic sections: Purpose, Capabilities, and Strengths.

    • Modular layout using Card components and CardHeader/CardContent is maintainable and readable.

PROJE TASARIM:

"akıllı mahalle güvenlik robotu", yani bir tür otonom güvenlik robotu olarak tam gelişebilir. Bu sistem, belirli bir bölgeyi hava ve kara tehditlerine karşı koruyacak, sensörlerle donatılmış, otomatik olarak uyanan, çevresini izleyen ve gerektiğinde müdahale eden bir yapay zeka destekli güvenlik çözümü olabilir.

SİSTEMİN GENEL AMACI (HEDEF)

Bir mahalleyi veya sitenin dış çevresini, havadan (dron, kuş, küçük uçak) ve karadan (insan, araç, hayvan, gaz, yangın) gelen tehditlere karşı otonom bir robot sistemle korumak.

Aşağıda bu sistemin ana bileşenlerini ve temel işleyiş planlama, sensörler hiçbiri henüz bağlı değil:


🚨 1. GEREKEN SENSÖRLER

a. Görüntüleme ve İzleme Sensörleri

  • Kızılötesi Kamera (IR) – Gece görüşü ve ısı tespiti için.

  • Termal Kamera – Canlı varlıkları ve motorlu araçları tespit eder.

  • Geniş açılı Kamera (HD) – Genel gözetleme için.

  • Gaz sensörü (yangın, gaz kaçağı algısı)

  • 360° LIDAR (Işıkla mesafe ölçüm) – Çevresel haritalama ve engel algılama.

b. Hava Tehdidi Tespiti için

  • Radar Sensörü (Kısa ve orta menzil) – Drone ve hava araçlarını algılar.

  • Ses Sensörü (Akustik Algılama) – Düşük irtifa uçuşları, patlama veya silah sesi tespiti için.

c. Yüzey ve Hareket Sensörleri

  • PIR (Pasif Infrared) Sensör – Hareket algılaması.

  • Basınç Sensörü (Toprak altı) – Gizli geçişleri tespit eder.

  • İvmeölçer ve Jiroskop – Kendi dengesi ve hareket takibi için.

d. Çevresel Sensörler

  • Gaz Sensörü (CO, CO₂, gaz kaçağı) – Yangın, kimyasal saldırı tespiti.

  • Sıcaklık, nem, rüzgar sensörleri – Durum analizi ve karar desteği.


🧠 2. GEREKEN YAZILIM VE ALGORİTMALAR

a. Yazılım Katmanları

  • Algılama Katmanı (Perception Layer): Sensörlerden gelen veriyi işleyen katman.

  • Karar Katmanı (Decision Layer): AI/ML algoritmaları ile tehdit analizi ve aksiyon.

  • Kontrol Katmanı (Control Layer): Motorlar, ışıklar, alarm sistemleri gibi aktüatörleri kontrol eder.

b. Yapay Zeka ve Görüntü İşleme Algoritmaları

  • YOLOv5 veya YOLOv8 – Gerçek zamanlı görüntü tanıma.

  • OpenCV + TensorFlow/PyTorch – Görüntü işleme ve makine öğrenmesi.

  • Kalman filtresi veya SLAM – Konum takibi ve harita oluşturma.

  • Anomali Tespiti (Anomaly Detection) – Normal olmayan davranışları belirleme.

c. Durumsal Farkındalık ve Otomatik Uyanma

  • Sensörlerden gelen hareket, ses veya IR sinyaliyle tetiklenerek sistem uyanır (edge computing).

  • Belirli saatlerde devriye, şüpheli durumda aktif hale geçme.


🔋 3. OTOMATİK UYANIŞ SİSTEMİ (TRIGGER MEKANİZMASI)

  • Uyku modu: Enerji tasarrufu için sistem bekleme modundadır.

  • Aktivasyon kriterleri:

    • Hareket algılandığında (PIR + Kamera)

    • Ses seviyesi eşik değeri geçtiğinde

    • IR veya termal değişiklik algılandığında

    • Belirli zaman diliminde devriye zamanı geldiğinde


🛠️ 4. ASGARİ GEREKEN DONANIM

Donanım/SensörMinimum AdetYerleşim Yeri
IR Kamera4+Köşe noktalar veya kule üstü
Termal Kamera2+Giriş noktalarına
LIDAR1-2Robot gövdesi ve çevre kule
PIR Sensör6+Duvar/çit hattı boyunca
Radar Sensör2Yüksek kule veya çatılarda
Ses Sensörü4+Merkezi ve periferik yerler
Merkezi kontrol ünitesi (AI)1Güvenli kontrol odasında


🧭 5. ARAZİDE KONUMLANDIRMA VE BEKLEME STRATEJİSİ

  • Bekleme noktaları:

    • Yüksek görüş alanına sahip kule/çatı.

    • Giriş çıkışlara bakan konumlar.

    • Kör noktalara yönelik sabit robotik gözlem noktaları.

  • Patrol güzergahları:

    • Çevresel LIDAR haritasına göre optimize edilir.

    • Rastgele (random walk) + belirli aralıklarla hedef kontrol noktası algoritması.

  • Haritalama:

    • SLAM ile alanın 3D haritası çıkarılır.

    • Tehdit geldiğinde kaçış/engel durumu analiz edilir.


🔒 6. SİSTEMİN GENEL İŞLEYİŞİ


1. Bekleme modunda sensörler aktif ama ana sistem pasif. 2. Hareket, ses veya IR tetiklemesi → sistem uyanır. 3. Kamera ile hedef tanıma → tehdit analizi yapılır. 4. Gerekirse alarm, ışık, siren ve ilgili güvenlik birimi uyarılır. 5. Tehdit ortadan kalkarsa tekrar pasif moda geçer.

🔧 7. OLASI KODLAMA DİLİ VE DONANIM PLATFORMU

  • Kodlama dilleri: Python (OpenCV, TensorFlow, PyTorch), C++ (donanım optimizasyonu için).

  • Platform:

    • Jetson Nano / Jetson Xavier (AI işleme)

    • Raspberry Pi 5 (hafif sürüm)

    • Arduino/ESP32 (düşük seviyeli sensör kontrolü)

    • ROS 2 (Robot Operating System)

8. İletişim & Otomasyon Sistemi

İletişim YoluAmaç
MQTTSensörlerden veri akışı
WebSocketDashboard anlık veri
GSM/4G/5Gİnternete çıkış ve uzaktan izleme
OTA (Update)Robotlara uzaktan yazılım güncellemesi





mahalle güvenlik robotu için donanım bağlantı şeması

Komple Mimari


[Robot Donanımı] --MQTT--> [Node.js Backend] --WebSocket--> [React Frontend]

1. Backend (Node.js + MQTT + WebSocket)

js

// server.js const mqtt = require('mqtt'); const WebSocket = require('ws'); const MQTT_BROKER = 'mqtt://broker.hivemq.com'; const SENSOR_TOPIC = 'mahalle/sensor'; const mqttClient = mqtt.connect(MQTT_BROKER); const wss = new WebSocket.Server({ port: 8080 }); let latestSensorData = ''; mqttClient.on('connect', () => { console.log('MQTT broker connected'); mqttClient.subscribe(SENSOR_TOPIC); }); mqttClient.on('message', (topic, message) => { if (topic === SENSOR_TOPIC) { latestSensorData = message.toString(); // WebSocket ile tüm bağlı istemcilere gönder wss.clients.forEach(client => { if (client.readyState === WebSocket.OPEN) { client.send(latestSensorData); } }); } }); wss.on('connection', ws => { console.log('WebSocket client connected'); ws.send(latestSensorData || 'Waiting for sensor data...'); });

2. Frontend (React.js — WebSocket ile gerçek zamanlı veri gösterimi)

jsx

// App.jsx import React, { useState, useEffect } from 'react'; function App() { const [sensorData, setSensorData] = useState('Bekleniyor...'); useEffect(() => { const ws = new WebSocket('ws://localhost:8080'); ws.onopen = () => { console.log('WebSocket bağlantısı açıldı'); }; ws.onmessage = (event) => { setSensorData(event.data); }; ws.onclose = () => { console.log('WebSocket bağlantısı kapandı'); }; return () => { ws.close(); }; }, []); return ( <div style={{ padding: 20, fontFamily: 'Arial, sans-serif' }}> <h2>Mahalle Güvenlik Robotu Durum Paneli</h2> <pre style={{ backgroundColor: '#f0f0f0', padding: 15, borderRadius: 5, fontSize: 16, }} > {sensorData} </pre> </div> ); } export default App;

3. Arduino (ESP32) - Basit Sensör Verisi Gönderimi

cpp

#include <WiFi.h> #include <PubSubClient.h> const char* ssid = "YOUR_WIFI"; const char* password = "YOUR_PASS"; const char* mqtt_server = "broker.hivemq.com"; WiFiClient espClient; PubSubClient client(espClient); const int pirPin = 2; const int mq2Pin = A0; void setup_wifi() { delay(10); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); } } void reconnect() { while (!client.connected()) { if (client.connect("ESP32Client")) { // Bağlandı } else { delay(5000); } } } void setup() { pinMode(pirPin, INPUT); pinMode(mq2Pin, INPUT); setup_wifi(); client.setServer(mqtt_server, 1883); } void loop() { if (!client.connected()) { reconnect(); } client.loop(); int pirState = digitalRead(pirPin); int gasLevel = analogRead(mq2Pin); String payload = "PIR:" + String(pirState) + ",GAS:" + String(gasLevel); client.publish("mahalle/sensor", payload.c_str()); delay(1000); }

Özet

  • Arduino ESP32 WiFi üzerinden MQTT broker’a sensör verisini gönderiyor.

  • Node.js backend MQTT’den veriyi alıp WebSocket ile frontend’e aktarıyor.

  • React frontend WebSocket ile gerçek zamanlı veriyi gösteriyor.

Mahalle güvenlik robotunda YOLOv8 kullanarak tehdit algılama için temel bir AI model eğitimi ve kullanımı örneği vereyim. YOLOv8, ultrafast ve yüksek doğruluklu nesne algılama modeli olarak PyTorch tabanlıdır.


1. Ortam Hazırlığı

Öncelikle ultralytics YOLOv8 kütüphanesini kur:

bash

pip install ultralytics

2. Veri Seti Hazırlığı

  • Mahallede algılanmasını istediğin nesneler (örneğin, insan, araç, kuş, drone vs.) için görüntüler ve etiketi içeren YOLO formatında bir veri seti hazırla.

  • Veri yapısı tipik olarak şöyle olur:

bash

/dataset /images /train /val /labels /train /val

Her görüntü için aynı ada sahip .txt dosyasında nesnenin sınıfı ve normalize edilmiş bbox koordinatları bulunur:

arduino

class x_center y_center width height

3. YOLOv8 Model Eğitimi

Python betiği örneği:

python

from ultralytics import YOLO # YOLOv8 modelini indir (örneğin small model) model = YOLO('yolov8s.pt') # Eğitimi başlat (dataset yolunu ve parametreleri belirt) model.train(data='dataset.yaml', epochs=50, imgsz=640, batch=16)

dataset.yaml içeriği örneği:

yaml

train: ./dataset/images/train val: ./dataset/images/val names: 0: person 1: car 2: drone 3: bird

4. Eğitilen Modeli Kullanarak Algılama

python

from ultralytics import YOLO import cv2 # Eğitilen model dosyasını yükle model = YOLO('runs/train/your_model/weights/best.pt') cap = cv2.VideoCapture(0) # Kameradan görüntü al while True: ret, frame = cap.read() if not ret: break results = model(frame)[0] # Sonuçları çizdir annotated_frame = results.plot() cv2.imshow('YOLOv8 Algılama', annotated_frame) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows()

5. Jetson Nano için İpuçları

  • TensorRT veya OpenCV DNN ile hızlandırma yapılabilir.

  • Kameradan gelen görüntüye gerçek zamanlı algılama entegre edilir.

  • Gerektiğinde model küçük versiyonla (yolov8n) çalıştırılarak performans artırılır.


Özet:

  • Veri setini hazırla ve YOLO formatına uygun etiketle.

  • ultralytics YOLOv8 kütüphanesi ile modelini eğit.

  • Jetson Nano’da kameradan görüntü alarak tahmin yap.

  • Algılama sonuçlarını gerçek zamanlı göster ve sensörlerle entegre et.

Pages