Projekt 53: iBeacon Indoor Lokalisierung: Unterschied zwischen den Versionen
(39 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
Zeile 48: | Zeile 48: | ||
Die Software Matlab, mit welches die Lokalisierung programmiert wurde, unterstützt die Bluetooth-Low-Energy Technologie noch nicht. Um dennoch Daten von dem TI Sensortag zu empfangen und zu bearbeiten, muss dies über eine Schnittstelle geschehen. Dafür bietet die Fa. TI den USB Dongle CC 2540 an. Diese muss man allerdings auf die Aufgabe vorbereiten, weil alleine durch "Plug & Play" bekommt der Dongle keinen Port und ist somit unbrauchbar für Matlab. | Die Software Matlab, mit welches die Lokalisierung programmiert wurde, unterstützt die Bluetooth-Low-Energy Technologie noch nicht. Um dennoch Daten von dem TI Sensortag zu empfangen und zu bearbeiten, muss dies über eine Schnittstelle geschehen. Dafür bietet die Fa. TI den USB Dongle CC 2540 an. Diese muss man allerdings auf die Aufgabe vorbereiten, weil alleine durch "Plug & Play" bekommt der Dongle keinen Port und ist somit unbrauchbar für Matlab. | ||
Jedoch kann man nicht alleine über USB auf den Chip des USB Dongle (CC 2540) zugreifen. Dafür ist ein sog. Debugger notwendig. [http://www.ti.com/tool/CC-DEBUGGER] | Jedoch kann man nicht alleine über USB auf den Chip des USB Dongle ([http://www.ti.com/tool/cc2540emk-usb?keyMatch=CC2540EMK-usb&tisearch=Search-EN-Everything CC 2540]) zugreifen. Dafür ist ein sog. Debugger notwendig. [http://www.ti.com/tool/CC-DEBUGGER] | ||
[[Datei:Debugger_rot_gruen.png|200px|thumb|right|Debugger vor und nach Installation des Treibers]] | [[Datei:Debugger_rot_gruen.png|200px|thumb|right|Debugger vor und nach Installation des Treibers]] | ||
[[Datei:SmartRF_Flash_Programmer.png|200px|thumb|right|SmartRF Flash Programmer]] | [[Datei:SmartRF_Flash_Programmer.png|200px|thumb|right|SmartRF Flash Programmer]] | ||
Zeile 77: | Zeile 77: | ||
Zum Start des Projektes wurde ein entsprechendes PAP erstellt. Dieser hat dem Projekt den Leitfaden vorgegeben und die Implementierung unterstützt. | Zum Start des Projektes wurde ein entsprechendes PAP erstellt. Dieser hat dem Projekt den Leitfaden vorgegeben und die Implementierung unterstützt. | ||
Für das Empfangen der Messwerte des Sensortags, musste Matlab entsprechend vorbereitet werden. Dafür muss die MAC-Adresse des Sensortags bekannt sein. Die einzelnen Messwerte werden über definierte GATT-Adressen gesendet. Die entsprechende GATT-Tabelle erhält man mit Hilfe einer Software (TI Device Monitor, siehe http://processors.wiki.ti.com/index.php/BLE_Device_Monitor_User_Guide). In der Matlab Datei "initializeSensortag.m" ist alles kommentiert und kann für nachfolgende Projekte als Unterstützung genutzt werden | Für das Empfangen der Messwerte des Sensortags, musste Matlab entsprechend vorbereitet werden. Dafür muss die MAC-Adresse des Sensortags bekannt sein. Die einzelnen Messwerte werden über definierte GATT-Adressen gesendet. Die entsprechende GATT-Tabelle erhält man mit Hilfe einer Software (TI BLE Device Monitor, siehe http://processors.wiki.ti.com/index.php/BLE_Device_Monitor_User_Guide). In der Matlab Datei "initializeSensortag.m" ist alles kommentiert und kann für nachfolgende Projekte als Unterstützung genutzt werden. | ||
Die rohen Messwerte werden als hex-Zahlen gesendet, die in das dezimale Zahlensystem umgewandelt werden. Da "wer misst, misst mist", müssen die Messwerte gefiltert werden. Hierfür wurde das Kalman-Filter verwendet. Dieser eignet sich für dynamische Systeme sehr gut, da im Kalman-Filter ein physikalisches Modell hinterlegt wird und somit die Realität gut bestimmt werden kann. | |||
=== Theorie zur Lokalisierung mittels Beschleunigungsdaten === | === Theorie zur Lokalisierung mittels Beschleunigungsdaten === | ||
Zeile 100: | Zeile 99: | ||
[[Datei:gatt_ble.png|200px|thumb|left|GATT-Tabelle des Sensortag]] | [[Datei:gatt_ble.png|200px|thumb|left|GATT-Tabelle des Sensortag]] | ||
In der Abbildung ist zu erkennen, dass nach der Konfiguration unter dem Handle 57 (0x39) die Bewegungsdaten abgefragt werden können. | In der Abbildung ist zu erkennen, dass, nach der Konfiguration, unter dem Handle 57 (0x39) die Bewegungsdaten abgefragt werden können. | ||
Wird dem Handle 58 (0x3A) ''01:00'' übergeben, schickt der Sensortag die Daten automatisch in dem unter Handle 62 (0x3E) festgelegten Intervall. | Wird dem Handle 58 (0x3A) ''01:00'' übergeben, schickt der Sensortag die Daten automatisch in dem unter Handle 62 (0x3E) festgelegten Intervall. | ||
Zeile 109: | Zeile 108: | ||
Anschließend können die Daten jeweils von der seriellen Schnittstelle in Matlab abgerufen werden: | Anschließend können die Daten jeweils von der seriellen Schnittstelle in Matlab abgerufen werden: | ||
<source line lang="matlab" style="font-size:medium"> | <source line lang="matlab" style="font-size:medium"> | ||
rawAcclZ = hex2dec([result_accl(2,:), result_accl(1,:)]); | rawAcclZ = hex2dec([result_accl(2,:), result_accl(1,:)]); %Hex- in Dezimalwert umrechnen | ||
rawAcclZ = typecast(uint16(rawAcclZ), 'int16'); | rawAcclZ = typecast(uint16(rawAcclZ), 'int16'); %Als unsigned gespeicherten signed Wert zurückcasten | ||
acclZCon = double(rawAcclZ)/double(32768/8) * 9.81; | acclZCon = double(rawAcclZ)/double(32768/8) * 9.81; %Mit der Auflösung die Beschleunigung in m/s^2 berechnen | ||
</source> | </source> | ||
Zeile 117: | Zeile 116: | ||
Zum Ausführen der Software müssen einige Schritte beachtet werden. | Zum Ausführen der Software müssen einige Schritte beachtet werden. | ||
Anpassungen im Quellcode: | Anpassungen im Quellcode: | ||
# ''startIndoorLocalisation.m'' - Line | # ''startIndoorLocalisation.m'' - Line 34: Anpassung des COM-Ports (Dieser kann mit dem MATLAB-Befehl ''instrfind'' ausgelesen werden) | ||
# ''initializeSensortag.m'' - Line | # ''initializeSensortag.m'' - Line 36: Anpassung der MAC-Adresse bei Verwendung eines anderen Sensortags | ||
Anschließend kann zum Starten die Funktion ''startIndoorLocalisation.m'' ausgeführt werden. | Anschließend kann zum Starten die Funktion ''startIndoorLocalisation.m'' ausgeführt werden. | ||
Hier muss die Ausgabe in der Konsole beachtet werden. | Hier muss die Ausgabe in der Konsole beachtet werden. | ||
Bei Auftreten von Fehlern muss das Programm mit ''Ctrl + C'' in der Konsole abgebrochen und anschließend neu gestartet werden. | Bei Auftreten von Fehlern muss das Programm mit ''Ctrl + C'' in der Konsole abgebrochen und anschließend neu gestartet werden. | ||
Nach der Initialisierung öffnet sich ein Diagramm zur Darstellung der | Nach der Initialisierung öffnet sich ein Diagramm zur Darstellung der gemessenen und geschätzten Daten. | ||
=== Fehler === | === Fehler === | ||
Folgende Fehlerquellen, die die Genauigkeit beeinflussen, konnten identifiziert werden: | Folgende Fehlerquellen, die die Genauigkeit beeinflussen, konnten identifiziert werden: | ||
* Messrauschen des Drehratensensors | * Messrauschen des Drehratensensors (ca. 0,03 °/s) | ||
* Messrauschen des Beschleunigungssensors | * Messrauschen des Beschleunigungssensors (ca. 0,08 m/s^2) | ||
* | * Unvollständige Datensätze des Sensortag | ||
**In Ruhe: Abweichung der Beschleunigung von 0,3 m/s^2 innerhalb von 30 Sekunden | |||
**Nach einer Bewegung um 50cm: Abweichung der Beschleunigung von bis zu 2,5 m/s^2 innerhalb von 30 Sekunden | |||
Während das Messrauschen noch zu berücksichtigen ist, besteht bei den unvollständigen Datensätzen keine Möglichkeit zur Korrektur. | |||
=== Hinweise === | === Hinweise === | ||
Zeile 139: | Zeile 142: | ||
Die Schwierigkeiten die mit der Lokalisierung aus Beschleunigungsdaten einhergehen konnten wir in unserem Projekt nicht überwinden. | Die Schwierigkeiten die mit der Lokalisierung aus Beschleunigungsdaten einhergehen konnten wir in unserem Projekt nicht überwinden. | ||
Die Beschleunigungsdaten sind stark verrauscht und werden durch ungenaue Drehratenmessungen und | Die Beschleunigungsdaten sind stark verrauscht und werden durch ungenaue Drehratenmessungen und nicht vollständige Daten des Sensortags noch weiter beeinflusst. | ||
Durch die doppelte Integration, um den Weg bestimmen zu können, wächst die Unsicherheit innerhalb kürzester Zeit soweit an, dass die Daten unbrauchbar werden. | Durch die doppelte Integration, um den Weg bestimmen zu können, wächst die Unsicherheit innerhalb kürzester Zeit soweit an, dass die Daten unbrauchbar werden. | ||
Für diese Lösung bietet sich zwar die Filterung der Messwerte per Kalman-Filter an, jedoch müssen hierfür die Fehler deutlich verringert werden und auch genauer bestimmt werden um sie im Systemmodell mit einzubeziehen. | Für diese Lösung bietet sich zwar die Filterung der Messwerte per Kalman-Filter an, jedoch müssen hierfür die Fehler deutlich verringert werden und auch genauer bestimmt werden um sie im Systemmodell mit einzubeziehen. | ||
Zeile 147: | Zeile 150: | ||
Was lief gut? | Was lief gut? | ||
* Implementierung des Kalman-Filters war Problemlos und zeitnah durchgeführt | * Implementierung des Kalman-Filters war Problemlos und zeitnah durchgeführt | ||
* Wir konnten uns mit wenig Informationen über die Schnittstelle und wenig Dokumentation in ein für uns unbekanntes Thema einarbeiten | |||
Was lief nicht so gut? | Was lief nicht so gut? | ||
* Fehlende Kabel zum Flashen des USB-Dongles + Lange Lieferzeiten => Frühzeitig über alternativen Weg gedanken machen | * Fehlende Kabel zum Flashen des USB-Dongles + Lange Lieferzeiten => Frühzeitig über alternativen Weg gedanken machen | ||
* Es wurde davon ausgegangen, dass jeder Sensortag die gleichen Daten liefert: | * Es wurde davon ausgegangen, dass jeder Sensortag die gleichen Daten liefert: Es gibt unterschiedliche GATT-Tabellen für unterschiedliche Versionen=> Firmwareversionen müssen immer geprüft werden | ||
* Implementierung der Positionsabschätzung Schritt für Schritt, also jeweils eine Achse. Erst nach erfolgreicher Umsetzung der einzelnen Achsen zusammenfassen | * Implementierung der Positionsabschätzung Schritt für Schritt, also jeweils eine Achse. Erst nach erfolgreicher Umsetzung der einzelnen Achsen zusammenfassen | ||
=== Fazit === | === Fazit === | ||
'''Allgemein''' | '''Allgemein''' | ||
Die Sensortag-Plattform bietet viele Sensoren auf kleinsten Raum für geringes Geld. | Die Sensortag-Plattform bietet viele Sensoren auf kleinsten Raum für geringes Geld. | ||
Diese Flexibilität geht leider auf Kosten der Genauigkeit. | Diese Flexibilität geht leider auf Kosten der Genauigkeit. | ||
Auch die verwendete Demo-Firmware, die auf dem Sensortag verwendet wird,ist nicht für die Lokalisierung optimiert. | Auch die verwendete Demo-Firmware, die auf dem Sensortag verwendet wird, ist nicht für die Lokalisierung optimiert. | ||
'''Unser Vorschlag für ein Nachfolgeprojekt lautet:''' | |||
Für den Sensortag wird eine neue Software programmiert. | Für den Sensortag wird eine neue Software programmiert. | ||
Diese kümmert sich lediglich um die Aufnahme und Vorverarbeitung der Bewegungsdaten. | Diese kümmert sich lediglich um die Aufnahme und Vorverarbeitung der Bewegungsdaten. | ||
Hier können schon erste Optimierungen vorgenommen werden. Idealerweise auch das Herausrechnen der Erdbeschleunigung. | Hier können schon erste Optimierungen vorgenommen werden. Idealerweise auch das Herausrechnen der Erdbeschleunigung. | ||
Dadurch ist auch sichergestellt, dass die Daten vollständig sind. | |||
Die Verbindung zum Datenverarbeiteten Computer wird dann nicht über den USB-Dongle von Texas Instrument aufgebaut, sondern über die BLE Schnittstelle des Computers. | Die Verbindung zum Datenverarbeiteten Computer wird dann nicht über den USB-Dongle von Texas Instrument aufgebaut, sondern über die BLE Schnittstelle des Computers. | ||
Ein zwischen Layer (z.B. in C geschrieben) sorgt für die Kommunikation zwischen BLE und Matlab. | Ein zwischen Layer (z.B. in C geschrieben) sorgt für die Kommunikation zwischen BLE und Matlab. | ||
Hier können dann die Daten | Hier können dann die Daten ausgewertet werden. | ||
== Projektunterlagen == | == Projektunterlagen == | ||
Alle Dateien, vorallem Matlab Codes, sind unter dem nachfolgenden Link zu finden: | |||
[https://svn.hshl.de/svn/Elektrotechnik_Fachpraktikum/trunk/Projekte/53_iBeacon_Indoor_Lokalisierung/ SVN: iBeacon Indoor Lokalisierung] | |||
[[Datei:53_iBeacon_Indoor_Lokalisierung.zip]] | |||
== YouTube Video == | == YouTube Video == | ||
[https://youtu.be/cWS1-PElVfA/ Youtube-Video] | |||
== Getting started == | |||
*[http://www.ti.com/lit/ml/swru410a/swru410a.pdf CC2650 SensorTag Quick Start Guide (Rev. A)] | |||
*[http://www.ti.com/tool/cc2650stk#3 SimpleLink™ Bluetooth low energy/Multi-standard SensorTag] | |||
*[http://processors.wiki.ti.com/index.php/CC2650_SensorTag_User%27s_Guide CC2650 SensorTag User's Guide] | |||
*[https://www.youtube.com/watch?v=8MS6oauuJiU YouTube: TI SensorTag 2 CC2650 Connection] | |||
== Weblinks == | == Weblinks == | ||
*[http://www.ti.com/ww/en/wireless_connectivity/sensortag/tearDown.html TI Sensor Tag] | *[http://www.ti.com/ww/en/wireless_connectivity/sensortag/tearDown.html TI Sensor Tag] | ||
*https://github.com/sid5291/SensorTag-Matlab | |||
* [https://www.professional-system.de/basics/ibeacons-die-technologie-dahinter/ iBeacons – die Technologie dahinter] | |||
* [https://www.youtube.com/watch?v=lwnmx-5mBLM What is iBeacon: An Animated Guide] | |||
* [https://www.youtube.com/watch?v=dMWEl6GBGqk Locating users inside a room with iBeacons] | |||
* [http://www.cwins.wpi.edu/publications/Thesis/MS%20Thesis/Yang%20Yang.pdf Application Performance Evaluation for iBeacon In-Room Localization Technology] | |||
* [https://www.youtube.com/watch?v=TvtrU9lCKmQ YouTube: TI SimpleLink™ Bluetooth® Smart SensorTag with iBeacon technology] | |||
* [http://www.ti.com/tool/tidc-cc2650stk-sensortag?keyMatch=sensortag&tisearch=Search-EN-Everything SimpleLink™ multi-standard CC2650 SensorTag™ kit reference design] | |||
* [https://www.youtube.com/watch?v=CWvRJdF7oVE RSSI-based Accurate Indoor Localization Scheme for Wireless Sensor Networks] | |||
== Tools == | |||
* [http://dev.ti.com/tirex/content/simplelink_cc2640r2_sdk_1_30_00_25/docs/blestack/btool_user_guide/BTool_Users_Guide/index.html BTool user Guide] | |||
*[http://www.ti.com/lit/zip/swrc258 BLE Device Monitor (v2.9.0) (Rev. Q)] | |||
== Literatur == | == Literatur == | ||
<references /> | <references /> | ||
*[[Media:BA Anton Anders sml.pdf| Anders, A.: ''Indoor-Positionsbestimmung mit Hilfe von Bluetooth-Low-Energy-Beacons und Pedestrian Dead Reckoning''. Uni Magdeburg: Bachelorarbeit, 2016]] | |||
<!-- Fügen Sie diesen Footer hinzu. --> | <!-- Fügen Sie diesen Footer hinzu. --> | ||
--- | ---- | ||
→ zurück zur Übersicht: [[:Kategorie:Projekte_AET_BSE_WS2018|WS 18/19: Angewandte Elektrotechnik (BSE)]] | → zurück zur Übersicht: [[:Kategorie:Projekte_AET_BSE_WS2018|WS 18/19: Angewandte Elektrotechnik (BSE)]] |
Aktuelle Version vom 8. März 2019, 20:51 Uhr
Autoren: Bozer, Ranzinger
Betreuer: Prof. Schneider
→ zurück zur Übersicht: WS 18/19: Angewandte Elektrotechnik (BSE)
Aufgabe
Die Aufgabe besteht darin, die Daten von einem Sensortag (CC2650) der Fa. Texas Instruments auszulesen und zu lokalisieren.
Als Motivation dient dabei die Schwäche der GPS-Lokalisierung auszunutzen und diese zur Stärke in stark abgeschirmten Orten (wie Beispielsweise in Tunneln oder teilweise in Einkaufszentren) zu machen.
Erwartungen an die Projektlösung
- Recherchieren Sie Verfahren zur Indoor Navigation
- Machen Sie sich mit iBeacon vertraut und nutzen Sie dieses Verfahren zur Lokalisierung
- Lokalisieren Sie ein dynamisches Fahrzeug während der Fahrt und bestimmen Sie die Genauigkeit Ihres Systems.
- Nutzen Sie als Referenz unser TopCon Lasertracker-System (alternativ: Verwendung eines Gliedermaßstabs)
- Machen Sie ein spektakuläres Videos, welche die Funktion visualisiert und Ihre Ergebnisse denen von des Referenzsystems gegenüberstellt.
- Test und wiss. Dokumentation
- Live Vorführung während der Abschlusspräsentation
Einleitung
Das Projekt Indoor Lokalisierung wurde von Tolga Bozer und Lukas Ranzinger im Rahmen der Veranstaltung Angewandte Elektrotechnik im Masterstudiengang BSE durchgeführt.
Bevor der Sensortag detailliert und die Problemlösung vorgestellt wird, sollte der Leser eine kleine Motivation für die Thematik bekommen.
Die Indoor-Lokalisierung findet in vielen Bereichen Anwendung und ist eines der wesentlichen Bausteine für die Industrie 4.0-Lösungen. Die Lösungsansätze für diesen Baustein sind sehr breit gefächtert und beinhalten Technologien wie hochfrequenten Mobilfunkstandard 5G, Ultraschall oder Bluetooth-Low-Energy Techniken. [1]
Der Sensortag CC2650 verwendet für die Kommunikation Bluetooth Low Energy (BLE). Dabei agiert die 4. Generation der Bluetooth-Kommunikation wie ihre Vorgänger im 2,4 GHz Bandbreite. Allerdings liegt der wesentliche Unterschied im Stromverbrauch. Mit einer Knopfzelle (bspw. CR 2032) können Geräte teilweise jahrelang (bis zu 5 Jahren) betrieben werden und sind somit kostengünstigere alternative zu dem "normalen" Bluetooth. Dies liegt vorallem daran, dass die Verbindung nur wenige Millisekunden (beim Bluetooth ~100 Millisekunden) aufrecht erhalten wird, da die Datengeschwindigkeit bei 1 Mb/s liegt und die Daten "nur" in geringen Mengen periodisch transferiert werden [2].
Die Lokalisierung kann über die Berechnung der Entfernung zum Empfänger geschehen. Jedoch haben die "Beacons" mit BLE keinen konstanten Abstrahlungsfeld und die Signale werden durch organische Körper, Metallen usw. abgeschirmt[1]. Die Genauigkeit in der Lokalisierung leidet zwar darunter, jedoch kann man mit verschiedenen Ansätzen diesen entgegenwirken.
Für die Lokalisierung mittels des Sensortag bietet sich jedoch die Verwendung der unterschiedlichen Sensoren an. Neben verschiedenen Sensoren zur Aufnahme von Umgebungsgrößen wie die Temperatur und die Luftfeuchtigkeit, bietet der Sensortag auch Bewegungsdaten die für dieses Projekt verwendet werden.
Projekt
Projektplan
Flashen des USB Dongle
Die Software Matlab, mit welches die Lokalisierung programmiert wurde, unterstützt die Bluetooth-Low-Energy Technologie noch nicht. Um dennoch Daten von dem TI Sensortag zu empfangen und zu bearbeiten, muss dies über eine Schnittstelle geschehen. Dafür bietet die Fa. TI den USB Dongle CC 2540 an. Diese muss man allerdings auf die Aufgabe vorbereiten, weil alleine durch "Plug & Play" bekommt der Dongle keinen Port und ist somit unbrauchbar für Matlab.
Jedoch kann man nicht alleine über USB auf den Chip des USB Dongle (CC 2540) zugreifen. Dafür ist ein sog. Debugger notwendig. [1]
Es folgt nun eine Anleitung zum Flashen des USB Dongle (CC 2540):
- Software installieren
- BLE-STACK (TI) (Support for CC2540/CC2541) downloaden und ausführen (damit notwendige Treiber für den Dongle entpackt werden): http://www.ti.com/tool/BLE-STACK-ARCHIVE
- SmartRF Flash Programmer (TI): http://www.ti.com/tool/FLASH-PROGRAMMER
- Treiber für den CC Debugger: http://www.ti.com/lit/zip/swrc212
- Debugger an den Rechner per USB anschließen
- Treiber installieren
- Geräte-Manager öffnen (Windows)
- CC Debugger finden und "Treiber aktualisieren"
- "auf dem Computer nach Treibersoftware suchen"
- den heruntergeladenen Treiber (aus 1. Software) auswählen und installieren
- Den USB Dongle CC 2540 an den Debugger anschließen und den Knopf des Debugger drücken. Nach erfolgreicher Installation des Treibers, sollte nun die LED am Debugger "grün" leuchten (siehe Bild Debugger vor und nach Installation des Treibers).
- SmartRF Flash Programmer starten und überprüfen, ob der Dongle CC 2540 erkannt wird (siehe Bild SmartRF Flash Programmer).
- Falls ja, unter Flash-Image folgende Datei auswählen (Flash-Image bekommt man aus der Installation vom BLE-STACK 1a):
- CC2540_USBdongle_HostTestRelease_All.hex
- Den Rest unverändert lassen und auf „Perform actions“ klicken und flashen
- Während des Flash-Vorgangs, wechselt die LED am CC2540 die Farbe (von grün auf rot)
- Im Geräte-Manager überprüfen, ob der CC2540 USB Dongle einen seriellen Port (z.B. COM-7) zugewiesen bekommen hat.
- Herzlichen Glückwunsch, die Vorbereitungen sind abgeschlossen.
Programmablaufplan
Zum Start des Projektes wurde ein entsprechendes PAP erstellt. Dieser hat dem Projekt den Leitfaden vorgegeben und die Implementierung unterstützt. Für das Empfangen der Messwerte des Sensortags, musste Matlab entsprechend vorbereitet werden. Dafür muss die MAC-Adresse des Sensortags bekannt sein. Die einzelnen Messwerte werden über definierte GATT-Adressen gesendet. Die entsprechende GATT-Tabelle erhält man mit Hilfe einer Software (TI BLE Device Monitor, siehe http://processors.wiki.ti.com/index.php/BLE_Device_Monitor_User_Guide). In der Matlab Datei "initializeSensortag.m" ist alles kommentiert und kann für nachfolgende Projekte als Unterstützung genutzt werden.
Die rohen Messwerte werden als hex-Zahlen gesendet, die in das dezimale Zahlensystem umgewandelt werden. Da "wer misst, misst mist", müssen die Messwerte gefiltert werden. Hierfür wurde das Kalman-Filter verwendet. Dieser eignet sich für dynamische Systeme sehr gut, da im Kalman-Filter ein physikalisches Modell hinterlegt wird und somit die Realität gut bestimmt werden kann.
Theorie zur Lokalisierung mittels Beschleunigungsdaten
Inertiale Messeinheiten liefern alle Messwerte die für eine Bestimmung der Position benötigt werden. Neben Beschleunigungssensoren für alle drei Achsen, besitzen sie auch Drehratensensoren für die Lage im Raum.
Folgende Herausforderungen ergeben sich bei der Positionsbestimmung:
- Durch die doppelte Integration der Beschleunigungsdaten werden auch die Fehler mit integriert
- Um die Erdbeschleunigung von den anderen Beschleunigungen zu trennen wird eine präzise Winkelposition benötigt
Hieraus erfolgt die Erkenntnis, dass die Sensor-Daten möglichst genau sein müssen.
Wichtige Softwarekonzepte
Bluetooth Low Energy
Um mit dem Sensortag kommunizieren zu können muss man zuerst seine "Sprache" verstehen. Mittels Bluetooth Low Energy (BLE) antwortet er auf Anfragen. Hierbei sind die sogenannten GATT(Generic Attribute Profile)-Tabellen relevant. In ihnen stehen alle Services, die ein BLE-Device bereitstellt.
In der Abbildung ist zu erkennen, dass, nach der Konfiguration, unter dem Handle 57 (0x39) die Bewegungsdaten abgefragt werden können. Wird dem Handle 58 (0x3A) 01:00 übergeben, schickt der Sensortag die Daten automatisch in dem unter Handle 62 (0x3E) festgelegten Intervall.
Einlesen und Umwandeln von Beschleunigungsdaten
Um nun die Bewegungsdaten zu erhalten wird der Sensortag zuerst konfiguriert.
Anschließend können die Daten jeweils von der seriellen Schnittstelle in Matlab abgerufen werden:
rawAcclZ = hex2dec([result_accl(2,:), result_accl(1,:)]); %Hex- in Dezimalwert umrechnen
rawAcclZ = typecast(uint16(rawAcclZ), 'int16'); %Als unsigned gespeicherten signed Wert zurückcasten
acclZCon = double(rawAcclZ)/double(32768/8) * 9.81; %Mit der Auflösung die Beschleunigung in m/s^2 berechnen
Ausführen der Software
Zum Ausführen der Software müssen einige Schritte beachtet werden. Anpassungen im Quellcode:
- startIndoorLocalisation.m - Line 34: Anpassung des COM-Ports (Dieser kann mit dem MATLAB-Befehl instrfind ausgelesen werden)
- initializeSensortag.m - Line 36: Anpassung der MAC-Adresse bei Verwendung eines anderen Sensortags
Anschließend kann zum Starten die Funktion startIndoorLocalisation.m ausgeführt werden. Hier muss die Ausgabe in der Konsole beachtet werden. Bei Auftreten von Fehlern muss das Programm mit Ctrl + C in der Konsole abgebrochen und anschließend neu gestartet werden. Nach der Initialisierung öffnet sich ein Diagramm zur Darstellung der gemessenen und geschätzten Daten.
Fehler
Folgende Fehlerquellen, die die Genauigkeit beeinflussen, konnten identifiziert werden:
- Messrauschen des Drehratensensors (ca. 0,03 °/s)
- Messrauschen des Beschleunigungssensors (ca. 0,08 m/s^2)
- Unvollständige Datensätze des Sensortag
- In Ruhe: Abweichung der Beschleunigung von 0,3 m/s^2 innerhalb von 30 Sekunden
- Nach einer Bewegung um 50cm: Abweichung der Beschleunigung von bis zu 2,5 m/s^2 innerhalb von 30 Sekunden
Während das Messrauschen noch zu berücksichtigen ist, besteht bei den unvollständigen Datensätzen keine Möglichkeit zur Korrektur.
Hinweise
- Die Firmwareversionen auf den Sensortags können unterschiedlich sein (damit auch die GATT-Tabellen)
- Die Software ist für die Version 1.20 (20. Juli 2015) ausgelegt (Diese ist auf dem Sensortag mit der Mac-Adresse B0:B4:48:BD:79:05 angepasst)
Ergebnis
Die Schwierigkeiten die mit der Lokalisierung aus Beschleunigungsdaten einhergehen konnten wir in unserem Projekt nicht überwinden. Die Beschleunigungsdaten sind stark verrauscht und werden durch ungenaue Drehratenmessungen und nicht vollständige Daten des Sensortags noch weiter beeinflusst. Durch die doppelte Integration, um den Weg bestimmen zu können, wächst die Unsicherheit innerhalb kürzester Zeit soweit an, dass die Daten unbrauchbar werden. Für diese Lösung bietet sich zwar die Filterung der Messwerte per Kalman-Filter an, jedoch müssen hierfür die Fehler deutlich verringert werden und auch genauer bestimmt werden um sie im Systemmodell mit einzubeziehen.
Zusammenfassung
Lessons Learned
Was lief gut?
- Implementierung des Kalman-Filters war Problemlos und zeitnah durchgeführt
- Wir konnten uns mit wenig Informationen über die Schnittstelle und wenig Dokumentation in ein für uns unbekanntes Thema einarbeiten
Was lief nicht so gut?
- Fehlende Kabel zum Flashen des USB-Dongles + Lange Lieferzeiten => Frühzeitig über alternativen Weg gedanken machen
- Es wurde davon ausgegangen, dass jeder Sensortag die gleichen Daten liefert: Es gibt unterschiedliche GATT-Tabellen für unterschiedliche Versionen=> Firmwareversionen müssen immer geprüft werden
- Implementierung der Positionsabschätzung Schritt für Schritt, also jeweils eine Achse. Erst nach erfolgreicher Umsetzung der einzelnen Achsen zusammenfassen
Fazit
Allgemein
Die Sensortag-Plattform bietet viele Sensoren auf kleinsten Raum für geringes Geld. Diese Flexibilität geht leider auf Kosten der Genauigkeit. Auch die verwendete Demo-Firmware, die auf dem Sensortag verwendet wird, ist nicht für die Lokalisierung optimiert.
Unser Vorschlag für ein Nachfolgeprojekt lautet:
Für den Sensortag wird eine neue Software programmiert. Diese kümmert sich lediglich um die Aufnahme und Vorverarbeitung der Bewegungsdaten. Hier können schon erste Optimierungen vorgenommen werden. Idealerweise auch das Herausrechnen der Erdbeschleunigung. Dadurch ist auch sichergestellt, dass die Daten vollständig sind.
Die Verbindung zum Datenverarbeiteten Computer wird dann nicht über den USB-Dongle von Texas Instrument aufgebaut, sondern über die BLE Schnittstelle des Computers. Ein zwischen Layer (z.B. in C geschrieben) sorgt für die Kommunikation zwischen BLE und Matlab. Hier können dann die Daten ausgewertet werden.
Projektunterlagen
Alle Dateien, vorallem Matlab Codes, sind unter dem nachfolgenden Link zu finden:
SVN: iBeacon Indoor Lokalisierung
Datei:53 iBeacon Indoor Lokalisierung.zip
YouTube Video
Getting started
- CC2650 SensorTag Quick Start Guide (Rev. A)
- SimpleLink™ Bluetooth low energy/Multi-standard SensorTag
- CC2650 SensorTag User's Guide
- YouTube: TI SensorTag 2 CC2650 Connection
Weblinks
- TI Sensor Tag
- https://github.com/sid5291/SensorTag-Matlab
- iBeacons – die Technologie dahinter
- What is iBeacon: An Animated Guide
- Locating users inside a room with iBeacons
- Application Performance Evaluation for iBeacon In-Room Localization Technology
- YouTube: TI SimpleLink™ Bluetooth® Smart SensorTag with iBeacon technology
- SimpleLink™ multi-standard CC2650 SensorTag™ kit reference design
- RSSI-based Accurate Indoor Localization Scheme for Wireless Sensor Networks
Tools
Literatur
- ↑ 1,0 1,1 Indoor-Lokalisierung: Ein Schlüssel zur Industrie 4.0.Quelle: https://www.intralogistik-bw.de/indoor-lokalisierung-ein-schluessel-zur-industrie-4-0-was-ist-gerade-wo-zu-finden-i-n-zeigt-smart-practices-2/ (abgerufen am 06.12.2018)
- ↑ Bluetooth Vs. Bluetooth Low Energy: What's The Difference?.Quelle: https://www.link-labs.com/blog/bluetooth-vs-bluetooth-low-energy (abgerufen am 06.12.2018)
→ zurück zur Übersicht: WS 18/19: Angewandte Elektrotechnik (BSE)