IMU慣性航法モジュール – 製品紹介

高精度IMU姿勢センサー - ロボティクス、ドローン、IoTアプリケーション向け高性能慣性計測ユニット
Language

当社の高精度IMU(慣性計測ユニット)姿勢センサーは、72MHzの高性能32ビットプロセッサーを搭載し、リアルタイムの姿勢計算と動的補正を実現します。データ更新周波数は最大100Hzで、高速応答と安定出力を両立。I2Cとシリアル通信の両方に対応し、マイコンやLinuxメインコントローラーと互換性があり、ROSシステムとシームレスに統合できます。

このモジュールは以下の高性能アプリケーションシーンに最適です:

  • ロボットの動作制御
  • UAVの姿勢安定化
  • スマートナビゲーションと測位
  • モーショントラッキングシステム
  • 産業オートメーション

主な特長

複数のバージョンオプション

機能 6軸 9軸 10軸
高性能32ビットプロセッサー
3軸ジャイロスコープ
3軸加速度センサー
3軸磁力計
気圧計
AHRS姿勢データフュージョンアルゴリズム
Mahonyフィルタリングアルゴリズム
アプリケーションシーンの説明 コスト重視の要件向けに設計され、高い動的応答を要求するアプリケーションの基準を満たします。 6軸ハードウェアをベースに、磁力計とAHRSアルゴリズムを統合し、データの安定性と測定精度を大幅に向上させます。 9軸ベースに気圧計を追加し、正確な高度データを提供。高精度な3D姿勢・位置センシングが必要なアプリケーションに適しています。

技術仕様

パラメータ
シリアルポートボーレート 115200bps
出力周波数 デフォルト25Hz、10Hz〜100Hzの範囲で調整可能
I2Cクロックレート 100KHz
出力内容 3軸加速度、3軸角速度、3軸オイラー角、クォータニオン、温度(9/10軸は磁力計、10軸は気圧計/高度)
起動時間 5000ms
動作温度 -40°C ~ +85°C
保管温度 -40°C ~ +100°C
耐衝撃性 20kg(基板単体)
対応デバイス Linuxメインコントローラー(PC、Raspberry Pi、Jetsonシリーズ、RDKシリーズなど)およびマイコン(STM32、MSPM0、ESP32、Pico、Arduinoなど)
動作電圧 5V or 3.3V
動作電流 11mA
製品寸法 27.4mm × 22.6mm × 12mm
製品重量 3.8g
ROS対応 ROS1 / ROS2

センサー性能パラメータ

センサー レンジ 分解能 RMSノイズ(100Hz帯域幅) 温度ドリフト 帯域幅
加速度センサー ±16g 0.0005g/LSB 1.0mg RMS ±0.15mg/°C 12.5~1600Hz
ジャイロスコープ ±2000°/s 0.061°/s/LSB 0.07°/s RMS 0.015°/s/°C 12.5~1600Hz
磁力計 ±8Gauss 0.244mGauss/LSB - - -
気圧計(10軸) 300~2000hPa - 1Pa RMS - -

ナビゲーションデータ性能

測定項目 標準値
ピッチ/ロール角度範囲(水平設置) X: ±180°, Y: ±90°
ピッチ/ロール精度 0.0055°
ヘディング/ヨー角度範囲(水平設置) Z: ±180°
ヘディング/ヨー精度 0.0055°

ピン機能の説明

ピン 機能
SDA I2Cシリアルデータライン
SCL I2Cシリアルクロックライン
GND GND(接地)
3V3 3.3V電源入力
RX シリアルポート受信
TX シリアルポート送信
5V 5V電源入力

クイックスタートガイド

1. ハードウェア接続

モジュールはI2Cとシリアルの両方の通信インターフェースに対応しています。配線は上記のピン説明表を参照してください。

注意: 電源電圧(3.3Vまたは5V)を正しく供給し、逆接続を避けてください。逆接続はモジュールに永久的な損傷を与える可能性があります。

2. ソフトウェアのインストール

まず必要なPythonライブラリをインストールします:

pip install pyserial
pip install smbus2

IMUライブラリをインストールします:

# 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. ポートマッピング設定(Linuxのみ)

デバイス再接続後にポート番号が変わらないよう、永続的なポートマッピングを設定します:

# 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

基本的な使用例

シリアル通信の例

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")

I2C通信の例

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")

公式ライブラリのサンプル実行

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

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

リソース&サポート

より詳細なドキュメント、サンプルコード、テクニカルサポートは公式リソースをご覧ください:

  • JuxiTechnology GitHub – オープンソースライブラリ、サンプルコード、ハードウェア設計ファイル
  • Lark Wiki – 完全な製品ドキュメント、ユーザーガイド、FAQ

当社のIMUモジュールはJuxi Technologyにより設計・製造されており、ロボティクスおよびIoTアプリケーション向けに信頼性の高い高性能慣性計測ソリューションを提供します。

この記事は要約です。完全な技術ドキュメントは Wiki でお読みください。

Wiki で全文を読む →

Feishu Wiki で開く