HumansXドキュメントセンター 公式サイトへ ↗

姿勢センサーのデータ取得実験

実験の目的:

  1. 姿勢センサー、すなわち ESP32-S3(ジャイロスコープ)モジュールのインターフェースを理解し、基本データを取得できるようにします。

機能要件

ターミナルにジャイロスコープのデータを出力できること。

ハードウェアの準備

ディスプレイ × 1、Bluetooth キーボード・マウス × 1、メインコンソール × 1、装着型ジャイロスコープモジュール × 1

回路接続:

ハードウェアモジュール

ヒント:ハードウェアモジュールの使用説明

ハードウェアシステムの全体組立

組み込み AI 開発ボード RDK_X5

電子モジュールの紹介

物理配線

装着型ジャイロスコープモジュールを手首に固定します。

ソフトウェアの実装

ソースコードとライブラリのダウンロード

ソースコードのリンク:(HumansX サポートより提供)

プログラムコード

コードの構成:

コード 機能
get_itu_rawdata.py ハンドヘルドジャイロスコープモジュールのデータを取得するサンプルプログラム
custom_font.py フォントと出力メッセージの設定

具体的なコード:

get_itu_rawdata.py がメインプログラムです。プロジェクトの完全なコードは(ソースコードのリンク)からダウンロードしてください。

"""
--------------------------------------------------------------------------------
功能:通过socket获取手持陀螺仪模块数据(打印出来的数据为蓝色字体)
细节:打印出来的数据为陀螺仪的原始数据,包括acc_x,acc_y,acc_z,gyro_x,gyro_y,gyro_z
日期:2025-06-03
--------------------------------------------------------------------------------
"""
#需要用到的库
import socket
import json
import time
from src.arm_control import custom_font

#加载自定义字体库-------------------------------------------------
msg = custom_font.CustomFont()
print(msg.color_text(msg.compony_msg, color="cyan", bold=True))

#配置陀螺仪网络接口参数-----------------------------------------------
HOST = '0.0.0.0'  #监听所有网卡
PORT = 9000       #端口号,与Arduino端保持一致
print(f"[INFO] 启动Socket服务端, 监听端口 {PORT} ...")
print(msg.color_text(msg.imu_load_success, color="cyan", bold=True))
time.sleep(1)

#-------------------------------------------------------------------
"""
------------------------------------------------------------
通过socket监听esp32模块发送的陀螺仪数据, 并将数据在终端打印出来
------------------------------------------------------------
"""
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    s.bind((HOST, PORT))
    s.listen(1)
    print("[INFO] 等待Arduino客户端连接...")
    conn, addr = s.accept()
    with conn:
        print(f"[INFO] 已连接: {addr}")
        buffer = b''
        while True:
            data = conn.recv(1024)
            if not data:
                print("[WARN] 客户端断开连接")
                break
            buffer += data
            while b'\n' in buffer:
                line, buffer = buffer.split(b'\n', 1)
                try:
                    # 解码陀螺仪数据
                    sensor_data = json.loads(line.decode('utf-8'))
                    #打印陀螺仪原始数据, 天蓝色字体,白色背景,字体加粗
                    print(msg.color_text(sensor_data, color="cyan", bg_color="white", bold=True))

                except Exception as e:
                    print(f"[ERROR] 解码失败: {e}")

操作手順:

  1. 回路接続:本ドキュメントの回路接続のピン説明に従って配線を完了してください。

ターミナルからリモート接続します。ターミナルに次のコマンドを入力して Enter を押します

ssh sunrise@192.168.8.111
sunrise

パスワードを入力して Enter を押すとログインが完了します。

  1. 指定のディレクトリに移動してターミナルを開き、次のように入力します:
cd ~/Desktop/Arm_Experiment/module_control_servo

上記で開いたターミナルで次のように入力し、ジャイロデータ取得プログラムを実行します:

python get_imu_rawdata.py
  1. ターミナルの出力を観察し、姿勢センサーのデータを確認します。

テスト時の操作コマンドは下図のとおりです:

実験結果:

ターミナルの出力データは次のとおりです。accel は加速度データ、gyro は角速度データを表します。

インターフェースドキュメント

さらに詳しくは、以下の API インターフェースドキュメントを参照して二次開発や最適化を行うことができます。

ロボット本体インターフェースの全体紹介

お問い合わせ

資料のダウンロード・技術サポートについては、HumansX株式会社までお問い合わせください。