Jump to content

Recommended Posts

Geschrieben (bearbeitet)

Hallo Zusammen,

kann jemand sagen warum folgender Code kein Temperaturwert fĂŒr die Kerntemperatur des IMU 2.0 Bricks zurĂŒck gibt?

#!/usr/bin/env python
# -*- coding: utf-8 -*-

HOST = "localhost"
PORT = 4223

UID = "6rGa5o"

import time

from tinkerforge.ip_connection import IPConnection
from tinkerforge.brick_imu_v2 import BrickIMUV2

Liste = ["X","X","X","X","X","X"]

def cb_quaternion(w, x, y, z):
    Liste[1] = (w/16383.0)
    Liste[2] = (x/16383.0)
    Liste[3] = (y/16383.0)
    Liste[4] = (z/16383.0)

def cb_temperature(temperature):
    Liste[5] = temperature

def main():
    ipcon = IPConnection()
    imu = BrickIMUV2(UID, ipcon)
    
    ipcon.connect(HOST, PORT)
    
    imu.register_callback(imu.CALLBACK_QUATERNION, cb_quaternion)
    imu.register_callback(imu.CALLBACK_TEMPERATURE, cb_temperature)
    
    imu.set_quaternion_period(100)
    imu.set_temperature_period(100)
    
    time.sleep(1)
    
    i = 0
    while i < 20:
        
        Liste[0] = i
        
        print("Übersicht Werte in Liste:")
        print("Wert 1:" + str(Liste[0]))
        print("Wert 2:" + str(Liste[1]))
        print("Wert 3:" + str(Liste[2]))
        print("Wert 4:" + str(Liste[3]))
        print("Wert 5:" + str(Liste[4]))
        print("Wert 6:" + str(Liste[5]))
        print("")
        i = i+1
        time.sleep(0.5)
        
    ipcon.disconnect()
    
if __name__ == "__main__":
    main()

Benutze ich cb_all_data wie in den Beispielen gezeigt, kommt der Temperaturwert mit. Möchte ich ihn einzeln haben, so wie hier in meinem Beispiel, bekomme ich ihn nicht aufgerufen.

Vielleicht hat jemand ne Idee, woran das liegen könnte?!

 

Hintergrund ist, das mein IMU regelmĂ€ĂŸig aussteigt, und ich die Vermutung habe, dass ihm ein bisschen zu warm ums Herz ist 😉

 

Das fĂŒhrt mich zu einer weiteren Frage:

GefĂŒhlt gibt es ein Performance-Unterschied zwischen:

  • Alle Werte per Callback erheben, diejenigen die ich benötige loggen

zu:

  • Nur diejenigen per Callback erheben und loggen, die ich benötige

 

liege ich da richtig? Und wenn ja, was sind so die gÀngigen Tricks und Kniffe, um ein möglichst hochfrequentes Loggen von spezifischen Werten zu realisieren ?

 

Vielen Dank an alle Tinkerforger da draussen :)

GrĂŒĂŸe Tipsy

bearbeitet von Tipsy Tinker
typo
Geschrieben
16 hours ago, Tipsy Tinker said:

Benutze ich cb_all_data wie in den Beispielen gezeigt, kommt der Temperaturwert mit. Möchte ich ihn einzeln haben, so wie hier in meinem Beispiel, bekomme ich ihn nicht aufgerufen.

Vielleicht hat jemand ne Idee, woran das liegen könnte?!

Das war ein Firmware-Bug, mit der frisch veröffentlichten 2.0.15 geht es bei mir. Hintergrund war, dass die GrĂ¶ĂŸe des Antwortpakets zu groß war (copy-paste-Fehler, es hat die GrĂ¶ĂŸe des AngularVelocityCallbacks benutzt). Die Bindings prĂŒfen die LĂ€nge von Callback-Paketen und ignorieren zu kurze und zu lange Pakete, deshalb kam bei dir nichts an.

16 hours ago, Tipsy Tinker said:

GefĂŒhlt gibt es ein Performance-Unterschied zwischen:

  • Alle Werte per Callback erheben, diejenigen die ich benötige loggen

zu:

  • Nur diejenigen per Callback erheben und loggen, die ich benötige

 

liege ich da richtig? Und wenn ja, was sind so die gÀngigen Tricks und Kniffe, um ein möglichst hochfrequentes Loggen von spezifischen Werten zu realisieren ?

Da gibt es tatsĂ€chlich Unterschiede: Die Bricks und Bricklets laufen mit einer Tickrate von 1 kHz. Pro Tick kann nur ein Paket erzeugt werden. Wenn du also Werte aus zwei Callbacks brauchst, kannst du jeden Wert nur noch mit 500 Hz auslesen. Aus Brick-Kommunikationssicht ist es also tatsĂ€chlich sinnvoller, das AllData-Callback zu benutzen und die Werte wegzuwerfen, die du nicht brauchst. Wenn du ĂŒber ein Netzwerk gehst kann das natĂŒrlich anders aussehen, aber wir reden hier immer noch von sehr kleinen Datenmengen (z.b. beim AllData-Callback 54 kB/s).

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefĂŒgt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rĂŒckgĂ€ngig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfĂŒgen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...