Skip to content

Bebo457/SSD

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SSD — System optymalnego sterowania dronem

Projekt grupowy | Wydział Elektroniki, Telekomunikacji i Informatyki | Politechnika Gdańska
Zlecenie nr 269@KSDIR'2024 | Opiekun: dr inż. Sebastian Dziedziewicz


Dron SSD

O projekcie

SSD (System Sterowania Dronem) to dwusemestralny projekt grupowy realizowany na Politechnice Gdańskiej. Celem było zaprojektowanie i zbudowanie od podstaw autonomicznego drona zdolnego do nawigacji do punktu wskazanego przez operatora, z wykorzystaniem filtru Kalmana do estymacji pozycji oraz technologii radia programowalnego (SDR/LoRa) do komunikacji bezprzewodowej.

W ramach projektu zespół samodzielnie:

  • zaprojektował i wydrukował w 3D obudowę drona,
  • złożył i skonfigurował hardware (silniki, ESC, kontroler lotu, moduły komunikacyjne),
  • zaimplementował algorytmy sterowania i estymacji pozycji,
  • opracował realistyczną symulację w środowisku Webots,
  • zintegrował precyzyjną geolokalizację RTK GPS (dokładność centymetrowa).

👥 Zespół

Rola Osoba
Kierownik projektu Bartosz Babiński
Członek zespołu Bartłomiej Bąk
Członek zespołu Mateusz Boniecki
Członek zespołu Mikołaj Goździelewski
Członek zespołu Grzegorz Lange
Opiekun dr inż. Sebastian Dziedziewicz

Architektura systemu

Poniżej schemat komunikacji między modułami systemu:

Schemat systemu

Przepływ danych

  1. Moduł LC29HDA odbiera sygnały z satelitów GNSS.
  2. Raspberry Pi Zero W2 pobiera dane GPS po UART, łączy się z serwerem NTRIP przez 4G LTE i stosuje korekcję RTCM3 (RTK).
  3. Skorygowana pozycja trafia po SPI/UART do ESP32, który uruchamia filtr Kalmana i fuzję sensorów (IMU + GPS).
  4. ESP32 generuje sygnały sterujące do kontrolera lotu (sterownik PID), który zarządza ESC i silnikami.
  5. Operator komunikuje się z dronem bezprzewodowo przez LoRa lub SSH.

Hardware

Konstrukcja drona

Obudowa drona została zaprojektowana w CAD i wydrukowana na drukarce 3D przez członka zespołu. W trakcie projektu przeszła dwie generacje — po uszkodzeniu podczas pierwszych prób lotu zmniejszono obudowę i wymieniono śmigła z 9" na 7", co poprawiło stabilizację i zmniejszyło masę.

Komponenty

Moduł Opis
Silniki Bezszczotkowe silniki BLDC
ESC Regulatory prędkości obrotowej
Kontroler lotu + IMU Stabilizacja i pomiar orientacji
Mikrokontroler STM32F103C8T6 (BluePill)
Moduł obliczeniowy ESP32 — filtr Kalmana, fuzja sensorów
Komputer pokładowy Raspberry Pi Zero W2 — obsługa RTK i komunikacji
Moduł GPS RTK LC29HDA — precyzyjna geolokalizacja
Łączność LoRa SX1278 — komunikacja bezprzewodowa z operatorem
Internet mobilny Modem 4G LTE — połączenie z serwerem NTRIP

Schemat połączeń

Schemat połączeń

Obudowa drona


System geolokalizacji RTK

Do precyzyjnego wyznaczania pozycji drona zastosowano technologię RTK (Real-Time Kinematic), która zapewnia dokładność na poziomie centymetrów (w porównaniu do standardowego GPS z dokładnością kilku metrów).

Przepływ danych RTK:

  1. Moduł LC29HDA odbiera sygnały z satelitów GNSS.
  2. Raspberry Pi łączy się z serwerem NTRIP (przez 4G LTE) i pobiera dane korekcyjne RTCM3 ze stacji bazowej.
  3. LC29HDA oblicza pozycję RTK i przesyła wynik po UART do Raspberry Pi.
  4. Raspberry Pi przekazuje dane po SPI do ESP32.
  5. ESP32 wykorzystuje dane w filtrze Kalmana.

Raspberry Pi odpowiada ponadto za: zarządzanie internetem mobilnym, obsługę modułu RTK po RS232 oraz zdalną administrację przez SSH.


Algorytmy sterowania

Filtr Kalmana

Na ESP32 zaimplementowano rozszerzony filtr Kalmana (EKF) łączący dane z:

  • modułu IMU (przyspieszeniomierz, żyroskop),
  • modułu GPS RTK (pozycja).

Fuzja sensorów pozwala na dokładniejszą i odporną na szumy estymację stanu drona (pozycja, prędkość, orientacja).

Regulator PID

Sterowanie silnikami opiera się na klasycznym regulatorze PID, którego nastawy dobrano przy pomocy symulacji.

Tryby sterowania

Tryb Opis
Ręczny Operator steruje dronem przez joystick/LoRa
Punkt–punkt Dron autonomicznie nawiguje do wskazanego punktu GPS

Symulacja (Webots)

Ze względu na trudności z bezpośrednim testowaniem na fizycznym dronie, zespół opracował realistyczną symulację w środowisku Webots.

Symulator Webots

Symulacja uwzględnia:

  • rzeczywiste parametry fizyczne drona (masa, momenty bezwładności),
  • charakterystykę ciągu silników (zmierzoną eksperymentalnie — krzywa prąd–ciąg),
  • odpowiednie nastawy regulatorów PID,
  • dwa tryby sterowania: ręczny oraz punkt-do-punktu,
  • filtr Kalmana estymujący pozycję drona w obecności szumu pomiarowego.

Pomiary charakterystyki silników

Aby uzyskać realistyczny model silników, zespół przeprowadził pomiary ciągu w zależności od prędkości obrotowej i dopasował krzywą do danych pomiarowych.

Charakterystyka silników

Wyniki symulacji

Poniżej wyniki testów symulacyjnych porównujące trajektorie drona z filtrem Kalmana i bez, w warunkach bez szumu i z szumem pomiarowym:

Wyniki symulacji

Wnioski:

  • Filtr Kalmana istotnie poprawia śledzenie trajektorii w warunkach szumu.
  • Bez szumu różnica jest minimalna — filtr nie pogarsza jakości sterowania.
  • Regulator PID z filtrem Kalmana stabilnie utrzymuje zadaną wysokość i pozycję X/Y.

Struktura repozytorium

SSD/
├── simulation/          # Kod symulacji Webots
│   ├── controllers/     # Kontrolery sterowania (C)
│   ├── worlds/          # Pliki świata symulacji
│   └── protos/          # Modele 3D drona
├── esp32/               # Firmware ESP32 (filtr Kalmana, LoRa)
├── rpi/                 # Skrypty Raspberry Pi (RTK, GPS, 4G)
├── docs/                # Dokumentacja projektowa
│   ├── DTP.pdf          # Dokumentacja techniczna produktu
│   ├── RTK.pdf          # Dokumentacja systemu RTK GPS
│   ├── RK.pdf           # Dokumentacja regulatora
│   ├── HiSW.pdf         # Historia i specyfikacja wymagań
│   ├── Optymalizacja.pdf# Dokumentacja optymalizacji
│   └── images/          # Zdjęcia i diagramy
└── README.md

Uruchomienie symulacji

Wymagania

  • Webots R2023 lub nowszy
  • Kompilator C (gcc)
  • Python 3.8+ (opcjonalnie, do skryptów pomocniczych)

Kroki

# 1. Sklonuj repozytorium
git clone https://github.com/Bebo457/SSD.git
cd SSD

# 2. Otwórz symulację w Webots
# File → Open World → simulation/worlds/drone_world.wbt

Tryb sterowania i parametry (nastawy PID, włączenie/wyłączenie filtru Kalmana) można konfigurować w plikach nagłówkowych kontrolerów.


📊 Wyniki i podsumowanie

Element Status
Samodzielna konstrukcja drona (druk 3D) ✅ Zrealizowane
Konfiguracja kontrolera lotu ✅ Zrealizowane
Komunikacja LoRa (ESP32 ↔ Laptop) ✅ Zrealizowane
Integracja RTK GPS (LC29HDA + NTRIP) ✅ Zrealizowane
Filtr Kalmana na ESP32 ✅ Zrealizowane
Symulacja w Webots ✅ Zrealizowane
Loty autonomiczne na fizycznym dronie 🔄 W trakcie / częściowo

🛠️ Technologie i narzędzia

C Python Webots ESP32 Raspberry Pi LoRa RTK GPS


Dokumentacja

Pełna dokumentacja projektowa dostępna w katalogu docs/:

  • DTP — Dokumentacja techniczna produktu
  • RTK — Dokumentacja systemu geolokalizacji RTK GPS
  • RK — Dokumentacja regulatora (PID, Kalman)
  • HiSW — Historia i specyfikacja wymagań sprzętowych
  • Optymalizacja — Dokumentacja procesu optymalizacji parametrów

Projekt grupowy realizowany w ramach przedmiotu Projekt Grupowy, WETI PG, semestr 2024/2025

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors