BWP-WS19-02/Dokumentation/SensorenKartierung: Unterschied zwischen den Versionen

Aus Verteilte Systeme - Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde geleert.)
Markierung: Geleert
 
(5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
=Teamstruktur=
 
Phase 1:
 
* Jan (Manager)
 
* Jonas (Tester)
 
* Mario (Dokumentation)
 
 
Phase 2:
 
* Jan (Tester)
 
* Jonas (Dokumentation)
 
* Mario (Manager)
 
 
Phase 3:
 
* Jan (Dokumentation)
 
* Jonas (Manager)
 
* Mario (Tester)
 
 
=Arbeitspakete=
 
Die Arbeitspakete des Teams werden als [https://zenon.cs.hs-rm.de/wahlprojekt_explorativer_roboter/bwp_ws19/issues GitLab Issues] unter dem Tag Sensor gepflegt.
 
 
 
 
 
 
=VL53L0X Time-Of-Flight Distance Sensor=
 
Der VL53L0X Time of Flight (ToF) Laser Distanzsensor kann Distanzen bis zu einer Entfernung von 2m genau bestimmen. Angesprochen wird der Sensor über I2C, was sich jedoch bei der Verwendung mehrerer Sensor als ziemlich schwierig erwies.
 
Dabei traten vorlegende Probleme auf:
 
 
Die I2C-Adresse des VL53L0X kann über I2C Programmiert werden, jedoch kann der Sensor sich diese Adresse diese Adresse nicht dauerhaft merken. Bei Neustart des Roboters verlieren somit alle Sensoren ihre gesetzte I2C-Adresse und nehmen die Standard Adresse 0x29 an, was zu Chaoss auf dem I2C-Bus führt. Die Sensoren haben einen XSHUT-Pin, über den sie sich ausschalten lassen und den GPIO1-Pin, über den man Interrupts an den Sensor senden kann. Der Hersteller der Sensoren gibt an, dass man die Sensoren über diese Pins alle ausschalten, anschließend nacheinander wieder einschalten und dann über den GPIO1-Pin interrupten soll, um dann die I2C-Addressen setzen zu können. Dies hat in der Praxis auch gut funktioniert, jedoch gab es dann das Problem, dass zu jedem Sensor zwei zusätzliche GPIO-Pins auf unserem Feather-Board belegt werden würden. Da wir 6 ToF-Sensoren geplant hatten, wären das insgesamt 12 zusätzliche GIOP-Pins die belegt worden wären.
 
 
Als Abhilfe dafür haben wir zwei PCF8574N 8 Bit I2C GPIO Portexpander verwendet, einer der Portexpander wird für alle XSHUT-Pins und der andere wird für alle GPIO1-Pins der Sensoren verwendet. Dadurch lassen sich alle ToF-Sensoren nacheinander über I2C starten und ihre I2C-Adresse neu setzen.
 
 
Zephyr hat eine eigene Sensor-API, die das Handling und die Integration von Sensoren in das System vereinfachen soll. Es gibt auch bereist implementierte Treiber für unseren ToF-Sensor, jedoch wird in diesem Treiber nicht berücksichtigt, dass man auch mehrere dieser Sensoren mit unterschiedlichen I2C-Adressen initialisieren und verwenden können soll.
 
Hierfür wurde der ToF-Sensoren Init-Prozess, um das nacheinander Starten der ToF-Sensoren und das Vergeben der I2C-Adressen erweitert. Des weiteren wurden noch einige Funktionen zum vereinfachten Abfragen der Sensorwerte bereitgestellt und eine Mailbox eingerichtet, die Permanent alle Sensorwerte bereitgestellt.
 
 
>>>Hier Bild des Testaufbaus<<<
 
 
Die ToF-Sensoren sollen wie folgt auf ITS-E angebracht werden:
 
 
>>>Hier ITS-E Bild einfügen<<<
 
 
=Zephyr Scientific Library (zscilib)=
 
Für die Berechnungen, die für den Kalman Filter benötigt werden, wurde eine zusätzliche Library in das Projekt eingebunden. Es handelt sich dabei um die [https://github.com/zscilib/zscilib Zephyr Scientific Library (zscilib)].
 
Die Library wurde mit folgenden Schritten eingebunden:
 
 
1. In the manifest/remotes section add:
 
<pre>
 
remotes:
 
- name: zscilib
 
url-base: https://github.com/zscilib
 
</pre>
 
 
2. In the manifest/projects section add:
 
<pre>
 
- name: zscilib
 
remote: zscilib
 
path: modules/lib/zscilib
 
revision: master
 
</pre>
 
 
3. Save the file, and run <code>west update</code> from the project root to retrieve the latest version of zscilib from Github, or whatever revision was specified above.
 
 
4. Folgende Parameter wurden in der .conf ergänzt:
 
<pre>
 
CONFIG_FLOAT=y
 
CONFIG_FP_SHARING=y
 
CONFIG_NEWLIB_LIBC=y
 
CONFIG_NEWLIB_LIBC_FLOAT_PRINTF=y
 
CONFIG_ZSL=y
 
CONFIG_ZSL_PLATFORM_OPT=2
 
CONFIG_ZSL_SINGLE_PRECISION=y
 
CONFIG_ZSL_VECTOR_INLINE=n
 
CONFIG_ZSL_MATRIX_INLINE=n
 
CONFIG_ZSL_BOUNDS_CHECKS=y
 
</pre>
 
 
=Quellen=
 
[https://cdn-learn.adafruit.com/downloads/pdf/adafruit-bno055-absolute-orientation-sensor.pdf?timestamp=1573732933 Adafruit Learning Systems]
 
 
[https://cdn-shop.adafruit.com/datasheets/BST_BNO055_DS000_12.pdf BNO055 Datasheet]
 
 
[https://github.com/zscilib/zscilib Zephyr Scientific Library (zscilib)]
 

Aktuelle Version vom 18. Februar 2020, 17:18 Uhr