RaspberryPi

  • Robustheit der Interaktion: Entwicklung funktionsstabiler und fehlerrobuster Prozessabläufe unter Anwendung multimodaler sensomotorischer Systeme; erwartungskonforme Aktionen und Reaktionen der Roboter; Fähigkeit der Robotersysteme zum Dauerbetrieb mit praxistauglichen Ausführgeschwindigkeiten; Nutzung von in der Umgebung installierten Sensorsystemen (z. B. im Smart Home); verlässliche Wiedererlangung der Funktionsfähigkeit nach Fehlerfällen
  • Personensicherheit von Robotern: Ermöglichung einer direkten, unmittelbaren Interaktion mit dem Menschen unter Berücksichtigung von Sicherheitsaspekten; Gewährleistung der körperlichen Schadenfreiheit auch bei hohen Ausführgeschwindigkeiten; Vorhersehbarkeit der Roboterbewegungen durch Nutzende; Entwicklung von Sicherheitskonzepten einschließlich Risikobeurteilung
  • Übertragbarkeit der Grundfertigkeiten: Entwicklung flexibler modularer Interaktionsfertigkeiten; konzeptionelle Integrierbarkeit in komplexe Interaktionsszenarien von verschiedenen Robotersystemen (als Elemente eines Baukastensystems); Möglichkeiten zur Fernwartbarkeit und internetbasierten Lernfähigkeit; Konzeption von Service-Modellen; Demonstrierbarkeit und Transferierbarkeit der interaktiven Grundfertigkeiten

Autonome mobile Roboter

Als Programmiersprache habe ich mich für C++ mit dem Framework QT entschieden. Zum Ansprechen der General Purpose Input Outputs (GPIO) nutze ich die pigpio-Bibliothek. Diese bringt einen Daemon mit, welcher es mir erlaubt, meine von mir erstellten Programme als normaler User auszuführen, da nur der Daemon als root gestartet werden muß, um letztendlich die GPIO-Pins anzusprechen.

 

The name I²C is short hand for a standard Inter-IC (integrated circuit) bus. I²C is a simple protocol with low-bandwidth and short-distance for data transfer. Most I²C devices operate at speeds up to 400Kbps. The I²C is easy to use for linking multiple devices together since it has a built-in addressing scheme. The I²C bus is a two wire serial bidirectional interface consisting of SCL (clock) and SDA (data). Both the wires are connected to the device supply via pull-up resistors. The I²C protocol defines any device that sends data onto the bus as a transmitter and the receiving device as the receiver. The device controlling the transfer is a master and the device being controlled is the slave. The transmitting device pulls down the SDA line to transmit a “0” and releases it to transmit a “1”. The master always initiates the data transfer, only when the bus is not busy, and provides the clock for both transmit and receive operations. The serial communication over the I²C interface is conducted by sending the most significant bit (MSB) of each byte of data first.

Anschluß und Programmierung.

Amazon-Link

 

 2-Achs-Schwenkkopf mit Servo-Motoren ansteuern.

Amazon-Link

Mini-SG90 Micro Servo Motor.

Zum Zwecke der Übung habe ich die Kamera darauf montiert.

Rotation & Beschleunigung mit dem  Gyroskop MPU6050 messen.

Damit ist dann sowas möglich.

 

Amazon-Link

Dokumentation

Register-Map

Sensor Fusion Algorithm

 

meine Treiber-Software auf Gitlab.

 

Rein intuitiv habe ich etwas gegen das sogenannte "Polling". Deshalb möchte ich den INT-Pin benutzen.

Nun habe ich den Echtzeit-Chip angeschlossen und gemerkt, das der die gleiche I2C- Adresse benutzt und nicht umgestellt werden kann. Daher benutze ich den Trick, mit dem ich auch mehrere MPU-6050 an einem Gerät betreiben kann:

HMC5883L.

Amazon-Link

Dokumentation

 

meine Treiber-Software auf Gitlab.

Using an MPU9250 and the Invensense motion driver (6.1), I'm able to put compass data in the fifo while DMP is enabled, without hacks on the original DMP firmware.
I achieved this result by changing the original fifo reset function: the slave 1 fifo bit must be enabled before activating the fifo and dmp features in user control register.
The resulting saved record is: 8 byte of compass data (compass status1 + 6 bytes of true data + compass status 2) followed by the original DMP record.

Another way: the slave 1 fifo bit can be enabled after the FIFO and DMP enabling (for example: elsewhere in the user code), but a proper fifo purge is required to discard the incomplete records and gain the correct sync against the FIFO.

These solutions work on my device using 200 hz DMP sample rate + 100Hz compass sample rate (every compass sample is repeated two times in FIFO, gestures enabled and quaternion disabled), but them are totally undocumented and more testing is needed, so, I would like to know if anyone use similar solutions and if there are know issues.

 

https://www.instructables.com/id/Configure-read-data-calibrate-the-HMC5883L-digital/

 

16-Kanal PCA9685 Servomotortreiber für PWM Motorsteuerung über I2C

Amazon-Link

Dokumentation

 

Mit diesem Modul lassen sich Robotik-Projekte mit vielen beweglichen Teilen oder PWM gesteuerter LEDs konstruieren! Mit nur 2 Pins lassen sich dank der I2C-Schnittstelle 16 PWM-Outputs steuern, welche auf bis zu 62 Breakouts erweiterbar sind, für insgesamt 992 PWM-Ouputs. Ideal zur Verwendung mit einem Microcontroller wie z. B. Arduino oder Raspberry Pi.

Details:

  • 16 PWM-Outputs
  • PWM-Steuerung bis 1.6 KHz
  • 5V kompatibel
  • 6 Pins zum Adressieren von bis zu 62 Modulen an einem einzigen I2C-Bus
  • 12-bit Auflösung für jeden Output
  • 330 Ohm Widerstände an jedem Pin um LEDs einfach anzusteuern

Unterkategorien

MPU-6050, ein 3-Achsen Gyroscop und Beschleunigungssensor-Modul.

The MPU6050 combines a 3-axis gyroscope and a 3-axis accelerometer on the same silicon die together with an onboard Digital Motion Processor(DMP) which processes complex 6-axis MotionFusion algorithms

der schnelle Einstieg: Rotation & Beschleunigung mit dem Gyroskop MPU6050 messen.

Was folgt, ist der lange Weg, der professionelle, IMHO.

Der APDS-9960 bietet erweiterte Gestenerkennung, Annäherungserkennung, ALS (Digital Ambient Light Sense) und RGBC (Color Sense). Das schlanke modulare Paket (L 3,94 × B 2,36 × H 1,35 mm) umfasst eine IR-LED und einen werkskalibrierten LED-Treiber, um die Kompatibilität mit vorhandenen Footprints zu gewährleisten.