Software- und Treiber-Setup
Installieren Sie das Paxini SDK, streamen Sie Druckdaten in Python, visualisieren Sie Kontakt-Heatmaps, fügen Sie eine optionale ROS2-Integration hinzu und synchronisieren Sie mit Ihrem Roboterarm für vollständige Datenerfassungspipelines.
Installieren Sie das Paxini SDK
Der Paxini Gen3 kommuniziert über USB HID – es sind keine Kernel-Module oder Herstellertreiber erforderlich. Das Python SDK umschließt das Low-Level-HID-Protokoll und stellt eine saubere Streaming-API bereit.
Überprüfen Sie die Installation:
Den Sensor erkennen
Schließen Sie den Gen3-Sensor über USB-C an Ihren Computer an. Verwenden Sie das Geräteerkennungsdienstprogramm des SDK, um zu bestätigen, dass es erkannt wurde:
Für Multisensor-Setups (z. B. fünf Finger an einem USB-Hub):
sudo python -m paxini.install_udev einmal, um den Maßstab zu installieren, dann den Sensor abziehen und wieder einstecken.
Python-Streaming-API
Die Kern-API ist ein Callback-basierter Stream. Jeder Rahmen liefert eine Taktiler Rahmen Objekt, das das vollständige Druckarray und die Metadaten enthält.
Alle öffentlichen API-Methoden:
| Methode / Eigenschaft | Beschreibung | Rückgaben |
|---|---|---|
| sensor.start() | Beginnen Sie mit dem Streaming. nicht blockierend | Keiner |
| sensor.stop() | Stoppen Sie den Stream sauber | Keiner |
| sensor.stream() | Generator, der TactileFrame-Objekte mit konfigurierten Hz liefert | Generator[TactileFrame] |
| sensor.latest() | Gibt den aktuellsten Frame ohne Blockierung zurück | Taktiler Rahmen |
| sensor.set_rate(hz) | Abtastrate einstellen (50–500 Hz für USB-C, 50–200 Hz für BLE) | Keiner |
| sensor.kalibrieren() | Nullpunktkalibrierung gegenüber der aktuellen Ruhelast | Keiner |
| sensor.seriell | Zeichenfolge mit der Seriennummer des Geräts | str |
| Sensorvariante | „Fingerspitze“ | „Finger-Pad“ | „Palme“ | str |
Taktiles Datenformat
Jede Taktiler Rahmen enthält:
| Feld | Typ | Beschreibung |
|---|---|---|
| Frame.timestamp_ns | int | Nanosekunden-Zeitstempel (monoton, Host-Uhr) |
| Frame.Pressure_Map | np.ndarray (H, W) float32 | Druck in kPa pro Taxel. Die Form variiert je nach Variante: Fingerspitze ist 8×8, Handfläche ist 16×12. |
| frame.contact_mask | np.ndarray (H, W) bool | Wahr, wenn der Druck den Kontaktschwellenwert überschreitet (Standard: 5 kPa) |
| frame.contact_area_mm2 | schweben | Summe der aktiven Taxelflächen in mm² |
| Frame.total_force_n | schweben | Integrierte Normalkraft über alle Taxel, in Newton |
| frame.contact_centroid | (schweben, schweben) | (Zeile, Spalte) Schwerpunkt der Kontaktregion in Taxelkoordinaten |
| frame.in_contact | bool | True, wenn total_force_n den Kontaktschwellenwert überschreitet (Standard: 0,05 N) |
| Frame.seq | int | Monoton steigende Frame-Sequenznummer |
Live-Heatmap-Visualisierung
Das SDK liefert einen betriebsbereiten Live-Visualizer. Führen Sie es direkt über die Befehlszeile aus:
Oder betten Sie es mit in Ihr eigenes Skript ein paxini.viz Modul:
ROS2-Schnittstelle
Die ROS2-Brücke veröffentlicht a sensor_msgs/Image (Druckkarte) und ein Brauch paxini_msgs/TactileFrame Thema pro Sensor. Erfordert ROS2 Humble oder Jazzy.
Bei Multisensor-Setups veröffentlicht jedes Gerät seine Seriennummer. Sie können Themen in Ihrer Startdatei mithilfe der standardmäßigen ROS2-Neuzuordnung neu zuordnen.
Roboterarmintegration
Um Paxini-Daten mit dem Gelenkstatus des Roboterarms zu synchronisieren, verwenden Sie die paxini.sync Modul. Es versieht alle Sensorframes mit einem Zeitstempel mit einer gemeinsamen Uhr und stellt eine blockierende API bereit, die synchronisierte Paare (arm_state, tactile_frame) liefert:
MultiSourceSync Die Klasse übernimmt die Interpolation, wenn sich Arm- und Sensorraten unterscheiden.
Top 3 Probleme
Der Sensor wird nicht erkannt. Überprüfen Sie die Reihenfolge: (1) Versuchen Sie es mit einem anderen USB-C-Kabel – einige Kabel dienen nur zum Aufladen und übertragen keine Daten. (2) Unter Linux ausführen sudo python -m paxini.install_udev Ziehen Sie dann den Sensor ab bzw. stecken Sie ihn wieder ein. (3) Stellen Sie sicher, dass die Sensor-LED dauerhaft leuchtet (nicht blinkt). Blinken bedeutet, dass sie sich im Firmware-Aktualisierungsmodus befindet. Halten Sie die Reset-Taste 5 Sekunden lang gedrückt, um den Vorgang zu beenden.
Der Sensor muss kalibriert werden oder der Schwellenwert ist zu hoch eingestellt. Laufen sensor.calibrate() bei unbelastetem Sensor (kein Kontakt). Wenn das Problem weiterhin besteht, prüfen Sie, ob die Sensorvariante zu Ihrer Halterung passt – ein an einer Fingerspitze installierter Handflächensensor zeigt aufgrund der größeren Taxelfläche sehr niedrige Druckwerte an. Bestätigen Sie auch die Firmware-Version 1.2+ mit python -m paxini.discover.
Die Armschnittstellenuhr und der Sensorzeitstempel weichen um mehr als ab max_dt_ms. Dies wird normalerweise dadurch verursacht, dass das Arm-SDK einen veralteten Gelenkzustand zurückgibt (z. B. mit einer niedrigeren Rate gepuffert). Zunahme max_dt_ms Stellen Sie den Computer als ersten Test auf 10,0 ein und untersuchen Sie dann, warum die Aktualisierungsrate des Armzustands niedriger als erwartet ist. Stellen Sie bei USB-Armen sicher, dass die USB-Abfragerate nicht durch die Energieverwaltung gedrosselt wird (sudo powertop unter Linux).
Stecken Sie immer noch fest? Beitrag im Forum-Fragen-Thread mit Ihrem Betriebssystem, SDK-Version (paxini.__version__) und die genaue Fehlerausgabe.