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アプリケーション向けに信頼性の高い高性能慣性計測ソリューションを提供します。

