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.

