Fahradar | Embedded-Systems | Busch, Kiriakou, Koscheck, Müssig, Zissis

Fahradar

Sicher von A nach B

Embedded Systems

Markus Busch, Chris Kiriakou, Michael Koscheck, Benedikt Müssig, Leonidas Zissis

Fahradar | Embedded-Systems | Busch, Kiriakou, Koscheck, Müssig, Zissis

Gliederung

  1. Einführung & Projektziel
  2. Systemübersicht
  3. Radar
  4. Datenverarbeitung und Aufbereitung
  5. Firmware
  6. Visuelle Darstellung
  7. Haptisches Feedback
  8. Demo
  9. Fazit & Ausblick
Fahradar | Embedded-Systems | Busch, Kiriakou, Koscheck, Müssig, Zissis

Einführung & Projektziel

Fahradar | Embedded-Systems | Busch, Kiriakou, Koscheck, Müssig, Zissis

Systemübersicht

Systemübersicht

Fahradar | Embedded-Systems | Busch, Kiriakou, Koscheck, Müssig, Zissis

Radar

Fahradar | Embedded-Systems | Busch, Kiriakou, Koscheck, Müssig, Zissis

Datenverarbeitung & Aufbereitung

Fahradar | Embedded-Systems | Busch, Kiriakou, Koscheck, Müssig, Zissis

Firmware

Fahradar | Embedded-Systems | Busch, Kiriakou, Koscheck, Müssig, Zissis

Visuelle Darstellung

Fahradar | Embedded-Systems | Busch, Kiriakou, Koscheck, Müssig, Zissis

Haptisches Feedback

DRV2605L Treiber,
Titan-Haptics Carlton,
Wellengenerierung

Fahradar | Embedded-Systems | Busch, Kiriakou, Koscheck, Müssig, Zissis

DRV2605L & Titan-Haptics Carlton

DRV2605L:

  • Haptischer Feedback Treiber für LRA & ERM
  • Implementierung einer Bibliothek für Abstraktion der Low-Level-Funktionen
typedef struct {
    uint8_t addr;                    // I2C address
    i2c_inst_t *drv_i2c_instance;    // Pointer to the Pico SDK I2C instance
    enum DRV2605L_MODE mode;         // Current mode (rtp/wave sequence)
    enum CTRL_MODE ctrl;             // Control strategy (open/closed-loop)
} drv2605l_t;

bool drv2605l_init(drv2605l_t *drv);
void drv2605l_write(drv2605l_t *drv, uint8_t reg, uint8_t val);
void drv2605l_set_mode(drv2605l_t *drv, enum DRV2605L_MODE mode);
void drv2605l_stop(drv2605l_t *drv);
void drv2605l_rtp(drv2605l_t *drv, uint8_t rtp);

bool drv2605l_init(drv2605l_t *drv):

  • Kalibrierungsfunktion für Closed-Loop (Autocalibration-Routine schlägt fehl!)
  • Frequenzbereiche nicht optimal! (150Hz - 300Hz)
  • Setupfunktion für Open-Loop: fminf_{min} = 80Hz

Titan-Haptics Carlton:

  • LRA mit Beschleunigung von 5G bei 80Hz
  • Betriebsspannung: 3.6 bis 10 Vp-p
Modus Beschreibung
Impact Mechanischer Schlag auf eine Oberfläche
Traditional "Puls" haptisches Feedback, geräuschlos
  • Haptisches Feedback: (Rechteck >> Sinus)
  • Mechanorezeptoren nehmen starke Veränderungen wahr

Fahradar | Embedded-Systems | Busch, Kiriakou, Koscheck, Müssig, Zissis

Generierung Wellenformen

void generate_waveform(float x[2], float y, float speed, waveform_t *waveform_out);

Abhängikeit der Eingabeparameter:

  • Boundingbox [m][m] x \rightarrow Amplitudenfaktor jeweiliger Seite:
    • x[0]: Linke Grenze
    • x[1]: Rechte Grenze
  • Abstand [m][m] y \rightarrow Amplitude, Anzahl der Sample (20 - 40)
  • Geschwindigkeit [km/h][km/h] speed \rightarrow Steigung

Stauchen und Strecken der Sigmoid Funktion:

float speed_norm = (speed_clamped - 1.0f) / (60.0f - 1.0f);
float k = 2.0f * powf(10.0f, speed_norm * 2.0f);            // steepness 2–200
for (int i = 0; i < sample_count; ++i) {
    float time = (float)i / (sample_count - 1);             // normalize time [0, 1]
    float slope = 1.0f / (1.0f + expf(-k * (time - 0.5f))); // sigmoid function
    float left = left_factor * slope;
    float right = right_factor * slope;
    ...
}
Fahradar | Embedded-Systems | Busch, Kiriakou, Koscheck, Müssig, Zissis

Demo

Fahradar | Embedded-Systems | Busch, Kiriakou, Koscheck, Müssig, Zissis

Fazit & Ausblick

Fahradar | Embedded-Systems | Busch, Kiriakou, Koscheck, Müssig, Zissis

Quellen

  • IEEE auswirkungen von Wellen

Noch offen

Noch offen

Noch offen

Noch offen

TI AWR6843ISK - Michael

Raspberry Pi Zero W - Benedikt

Rasbperry Pi Pico 2 W - Leo

MemLCD - Markus

DRV2605L & Titan-Haptics TacHommer-Carlton - Chris

Noch offen

Noch offen

Bitte fehlende Quellen hinzufügen