Planar Franka benzeri 3-DoF kol için güvenli pekiştirmeli öğrenme iskeleti: PPO tabanlı politika + CBF ve MPC güvenlik kalkanları (shield). Eğitim, değerlendirme, benchmark, grafik üretimi ve rapor görselleri tek adımda veya ayrı ayrı çalıştırılabilir. Tüm deneyler sanal ortamda (MuJoCo veya kinematik) çalışır.
✅ Durum: v1.0.0 — Eğitim/değerlirme/benchmark betikleri, grafik üretimi ve rapor toplayıcı hazır ✅ Testler:
pytestile 4 test geçiyor ✅ Docker: Başsız (headless) kullanım için hazır imaj
English | Türkçe
- Kurulum
- Hızlı Başlangıç
- Eğitim
- Değerlendirme
- Benchmark
- Grafikler ve Rapor
- Testler
- Deneyleri Uçtan Uca Tek Komutla Yeniden Üretme
- Docker ile Çalıştırma
- Proje Yapısı
- Atıf
- Lisans
- Sorun Giderme (FAQ)
Windows (CMD) örnekleri verilmiştir. Python 3.9 önerilir.
- Depoyu klonla ve dizine geç:
git clone https://github.com/<kullanici>/<repo-adi>.git
cd <repo-adi>- (Önerilir) Sanal ortam:
python -m venv .venv
.venv\Scripts\activate- Bağımlılıklar:
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install pytest ruffNot:
torchaudio/torchvisionzorunlu değildir. Proje torch==2.2.2 ile test edilmiştir.
Eğitimi atlayıp mevcut politikayla (repo içindeki runs/latest.pt) hızlı üretim:
python scripts\reproduce_all.py --skip-trainTüm çıktı ve görseller runs/ klasörüne, rapor görselleri runs/report/ altına kaydedilir.
Temel ayarlar experiments/base.yaml içindedir. Örnek eğitim (20000 adım):
python scripts\train.py --cfg experiments\base.yaml --steps 20000Eğitim sonunda politika runs/latest.pt olarak kaydedilir ve eğitim metrikleri runs/ altına yazılır.
Eğer
ppo.pyiçin minimal arayüzü kullanıyorsanıztrain.pydosyasındaagent.act()yerineagent.mu(o)+ örnekleme kullanımı yapılır.
Mevcut politikayla kısa değerlendirme (5 bölüm):
python scripts\evaluate.py --cfg experiments\base.yaml --policy runs\latest.pt --episodes 5Çıktıda bölüm başına toplam ödül, ihlal bilgisi ve STL-robustness özetleri yazdırılır.
Korumasız (no_shield), CBF ve MPC kalkanlarıyla kıyas:
python scripts\benchmark.py --cfg experiments\base.yaml --policy runs\latest.pt --episodes 8Özet .csv dosyaları:
- Bölüm-bazında:
runs/benchmark.csv - Toplam özet:
runs/benchmark_summary.csv
Grafikleri üretmek için:
python scripts\plot_benchmark.pyEğitim/değerlendirme eğrileri:
python scripts\plot_metrics.pyRapor dosyalarını tek klasörde topla:
python scripts\make_report_assets.pyGörseller
runs/veruns/report/altına kaydedilir.
Hızlı doğrulama:
pytest -qŞu an 4 test geçiyor.
Eğitimi de içeren uçtan uca tekrar üretim:
python scripts\reproduce_all.py --steps 20000Sadece mevcut politikayla hızlı üretim:
python scripts\reproduce_all.py --skip-trainWindows’ta Docker Desktop kurulu ve çalışır olmalı.
İmajı oluştur:
docker build -t safirl .Yerel runs/ klasörünü container’a bağlayıp raporları üret:
docker run --rm -it -v %CD%\runs:/app/runs safirlContainer içinde betikler sırasıyla
evaluate → benchmark → plotçalıştırır ve çıktılar host’takiruns/klasörüne düşer.
.
├─ assets/
│ └─ franka/franka.xml
├─ envs/
│ ├─ __init__.py
│ ├─ franka_kinematic_env.py
│ └─ franka_mujoco_env.py
├─ rl/
│ ├─ __init__.py
│ └─ ppo.py
├─ shield/
│ ├─ __init__.py
│ ├─ cbf_qp.py
│ └─ mpc_shield.py
├─ specs/
│ ├─ __init__.py
│ └─ specs.py
├─ verify/
│ ├─ __init__.py
│ └─ robustness.py
├─ scripts/
│ ├─ train.py
│ ├─ evaluate.py
│ ├─ benchmark.py
│ ├─ plot_metrics.py
│ ├─ plot_benchmark.py
│ ├─ make_report_assets.py
│ ├─ apply_best_safety.py
│ └─ codesign.py
├─ tests/
│ ├─ test_kinematics.py
│ ├─ test_specs.py
│ └─ test_shields.py
├─ runs/ (çıktı; git’e dahil ETME)
├─ requirements.txt
├─ Dockerfile
├─ README.md
└─ .github/workflows/ci.yml
Bu depoyu akademik çalışmalarda kullanırsanız aşağıdaki bibtex benzeri atıfı ekleyebilirsiniz:
@software{SafirlCodev2025,
author = {Nihan <soyad>},
title = {SafeRL for Franka (MuJoCo) — Shielded PPO with CBF/MPC},
year = {2025},
url = {https://github.com/<kullanici>/<repo-adi>}
}
Bu proje MIT Lisansı ile lisanslanmıştır. Ayrıntılar için LICENSE dosyasına bakınız.
Docker build sırasında libgl1-mesa-glx bulunamadı
Debian trixie tabanlı imajlarda paket adı değişiklik gösterebilir. Bu repo Dockerfile’ında GL/X bağımlılıkları güncellenmiştir. Yine de sorun yaşarsanız şu minimal set işinizi görür: libgl1 libxrender1 libxext6 libxi6 libxxf86vm1 libxrandr2 libxcb1.
PPOAgent ile act hatası
Bu repoda minimal arayüz kullanılıyor: mu(obs) deterministik ortalama eylem verir, eğitimde örnekleme torch.distributions.Normal(mu, std) üzerinden yapılır. Scriptler buna göre günceldir.
MuJoCo XML bulunamadı
assets/franka/franka.xml yolunu denetleyin. OneDrive masaüstü yol sorunları için kodda path fallback bulunmaktadır; yine de dosyanın var olduğundan emin olun.
Torchaudio/Torchvision uyumsuzluk uyarıları
Bu paketler zorunlu değil; torch==2.2.2 ile proje test edilmiştir. Uyarılar göz ardı edilebilir.