IMU-Trägheitsnavigationsmodul – Produkteinführung

Hochpräziser IMU-Attitudesensor – Hochleistungs-Trägheitsmessgerät für Robotik, Drohnen und IoT-Anwendungen
Language

Unser hochpräziser IMU-Attitudesensor (Inertial Measurement Unit) ist mit einem 72-MHz-Hochleistungs-32-Bit-Prozessor ausgestattet, der eine Echtzeit-Attitudeberechnung und dynamische Kompensation ermöglicht. Mit Datenaktualisierungsraten von bis zu 100 Hz verbindet er schnelle Reaktion mit stabiler Ausgabe. Er unterstützt sowohl I2C- als auch serielle Kommunikationsmodi, ist mit Mikrocontrollern und Linux-Hauptsteuerungen kompatibel und lässt sich nahtlos in ROS-Systeme integrieren.

Dieses Modul ist ideal für Hochleistungsanwendungsszenarien, darunter:

  • Roboterbewegungssteuerung
  • Attitudestabilisierung von UAVs
  • Intelligente Navigation und Positionsbestimmung
  • Bewegungserfassungssysteme
  • Industrielle Automatisierung

Hauptfunktionen

Mehrere Versionsoptionen

Funktion 6-Achsen 9-Achsen 10-Achsen
Hochleistungs-32-Bit-Prozessor
Drei-Achsen-Gyroskop
Drei-Achsen-Beschleunigungssensor
Drei-Achsen-Magnetometer
Barometer
AHRS-Attitudedatenfusionsalgorithmus
Mahony-Filteralgorithmus
Beschreibung der Anwendungsszenarien Für kostensensitive Anforderungen entwickelt, erfüllt die Standards für Anwendungen mit hoher dynamischer Antwort. Basiert auf 6-Achsen-Hardware, integriert Magnetometer und AHRS-Algorithmus und verbessert die Datenstabilität und Messgenauigkeit deutlich. Ergänzt die 9-Achsen-Basis um ein Barometer, liefert präzise Höhendaten und eignet sich für Anwendungen, die hochpräzise 3D-Attitude- und Positionserfassung erfordern.

Technische Spezifikationen

Parameter Wert
Serielle Port-Baudrate 115200bps
Ausgabefrequenz Standard 25 Hz, einstellbarer Bereich von 10 Hz bis 100 Hz
I2C-Taktfrequenz 100KHz
Ausgabeinhalt 3-Achsen-Beschleunigung, 3-Achsen-Winkelgeschwindigkeit, 3-Achsen-Eulerwinkel, Quaternion, Temperatur (Magnetometer bei 9/10-Achsen, Barometer/Höhe bei 10-Achsen)
Startzeit 5000ms
Betriebstemperatur -40°C ~ +85°C
Lagertemperatur -40°C ~ +100°C
Stoßfestigkeit 20 kg (nackte Platine)
Unterstützte Geräte Linux-Hauptsteuerungen (PC, Raspberry Pi, Jetson-Serie, RDK-Serie usw.) und Mikrocontroller (STM32, MSPM0, ESP32, Pico, Arduino usw.)
Betriebsspannung 5V or 3.3V
Betriebsstrom 11mA
Produktabmessungen 27.4mm × 22.6mm × 12mm
Produktgewicht 3.8g
ROS-Unterstützung ROS1 / ROS2

Sensor-Leistungsparameter

Sensor Bereich Auflösung RMS-Rauschen (100-Hz-Bandbreite) Temperaturdrift Bandbreite
Beschleunigungssensor ±16g 0.0005g/LSB 1.0mg RMS ±0.15mg/°C 12.5~1600Hz
Gyroskop ±2000°/s 0.061°/s/LSB 0.07°/s RMS 0.015°/s/°C 12.5~1600Hz
Magnetometer ±8Gauss 0.244mGauss/LSB - - -
Barometer (10-Achsen) 300~2000hPa - 1Pa RMS - -

Leistung der Navigationsdaten

Messgröße Typischer Wert
Pitch-/Roll-Winkelbereich (waagerechte Platzierung) X: ±180°, Y: ±90°
Pitch-/Roll-Genauigkeit 0.0055°
Kurs-/Gierwinkelbereich (waagerechte Platzierung) Z: ±180°
Kurs-/Gier-Genauigkeit 0.0055°

Pin-Funktionsbeschreibung

Pin Funktion
SDA I2C-Serielle Datenleitung
SCL I2C-Serielle Taktleitung
GND Masse
3V3 3,3-V-Stromeingang
RX Serieller Port – Empfang
TX Serieller Port – Senden
5V 5-V-Stromeingang

Schnellstartanleitung

1. Hardware-Verbindung

Das Modul unterstützt sowohl I2C- als auch serielle Kommunikationsschnittstellen. Beachten Sie für die Verdrahtung die obige Pin-Beschreibungstabelle.

Achtung: Stellen Sie die korrekte Versorgungsspannung (3,3 V oder 5 V) sicher und vermeiden Sie Verpolung, da dies zu dauerhaften Schäden am Modul führen kann.

2. Software-Installation

Installieren Sie zuerst die erforderlichen Python-Bibliotheken:

pip install pyserial
pip install smbus2

Installieren Sie die IMU-Bibliothek:

# Clone and enter the library directory
git clone https://github.com/Juxi-Technology/ICM42670P-High-Precision-IMU-Module.git
cd ../IMU_ROS2/IMU_Library

# Install the library
pip install -e .

3. Port-Zuordnungskonfiguration (nur Linux)

Um Portnummernänderungen nach dem erneuten Anschließen des Geräts zu vermeiden, konfigurieren Sie eine dauerhafte Port-Zuordnung:

# Create and edit the udev rules file
sudo gedit /etc/udev/rules.d/99-serial-imu.rules

# If gedit command is not found, install it first
sudo apt install gedit

# Add the following mapping content
KERNEL=="ttyUSB*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0777", SYMLINK+="imu-serial"

# Save and exit the editor, then run these commands to activate the rules
sudo udevadm trigger
sudo service udev reload
sudo service udev restart

# Verify the configuration
ll /dev/imu-serial

# Expected output example:
lrwxrwxrwx 1 root root 7 Jan 22 10:00 /dev/imu-serial -> ttyUSB0

Grundlegende Verwendungsbeispiele

Beispiel für serielle Kommunikation

import serial
import json

# Configure serial port
ser = serial.Serial('/dev/ttyUSB0', 115200, timeout=1)

try:
    while True:
        line = ser.readline().decode('utf-8').strip()
        if line:
            # Parse IMU data
            data = json.loads(line)
            print(f"Acceleration: X={data['acc_x']:.2f}g, Y={data['acc_y']:.2f}g, Z={data['acc_z']:.2f}g")
            print(f"Gyroscope: X={data['gyro_x']:.2f}°/s, Y={data['gyro_y']:.2f}°/s, Z={data['gyro_z']:.2f}°/s")
            print(f"Euler Angles: Roll={data['roll']:.2f}°, Pitch={data['pitch']:.2f}°, Yaw={data['yaw']:.2f}°")
            print("-" * 50)
            
except KeyboardInterrupt:
    ser.close()
    print("Serial connection closed")

Beispiel für I2C-Kommunikation

import smbus2
import time

# I2C configuration
I2C_BUS = 1
IMU_ADDR = 0x68

bus = smbus2.SMBus(I2C_BUS)

def read_imu_data():
    # Read 14 bytes of data from IMU
    data = bus.read_i2c_block_data(IMU_ADDR, 0x3B, 14)
    
    # Convert raw data to meaningful values
    acc_x = (data[0] << 8 | data[1]) / 16384.0
    acc_y = (data[2] << 8 | data[3]) / 16384.0
    acc_z = (data[4] << 8 | data[5]) / 16384.0
    gyro_x = (data[8] << 8 | data[9]) / 131.0
    gyro_y = (data[10] << 8 | data[11]) / 131.0
    gyro_z = (data[12] << 8 | data[13]) / 131.0
    
    return acc_x, acc_y, acc_z, gyro_x, gyro_y, gyro_z

try:
    while True:
        acc_x, acc_y, acc_z, gyro_x, gyro_y, gyro_z = read_imu_data()
        print(f"Acc: X={acc_x:.2f}g, Y={acc_y:.2f}g, Z={acc_z:.2f}g")
        print(f"Gyro: X={gyro_x:.2f}°/s, Y={gyro_y:.2f}°/s, Z={gyro_z:.2f}°/s")
        time.sleep(0.1)
        
except KeyboardInterrupt:
    bus.close()
    print("I2C connection closed")

Ausführen der offiziellen Bibliotheksbeispiele

# Serial communication example
python3 IMU_Serial_Library.py --port /dev/ttyUSB0 --rate 50

# I2C communication example
python3 IMU_I2C_Library.py --port 1 --debug

Ressourcen & Support

Ausführlichere Dokumentation, Beispielcodes und technischen Support finden Sie in unseren offiziellen Ressourcen:

  • JuxiTechnology GitHub – Open-Source-Bibliotheken, Beispielcodes und Hardware-Design-Dateien
  • Lark Wiki – Vollständige Produktdokumentation, Benutzerhandbücher und FAQ

Unsere IMU-Module werden von Juxi Technology entwickelt und hergestellt und bieten zuverlässige Hochleistungs-Trägheitsmesslösungen für Robotik- und IoT-Anwendungen.

Dieser Artikel ist eine Zusammenfassung. Lesen Sie die vollständige technische Dokumentation im Wiki.

Vollständigen Artikel im Wiki lesen →

Im Feishu-Wiki öffnen