Up デバイスの抽象化 作成: 2026-08-24
更新: 2026-08-24

4足歩行ロボット自律型コンピュータソフトウェアROSデバイスの抽象化

    デバイスを統一された API に変換する:
      デバイス
        /dev/ttyUSB0(IMU)
        /dev/video0(カメラ)
        /dev/ttyACM0(モータ)
          ↓
      トピック
        /imu/data
        /camera/image
        /motor/status
        /motor/command

    素データは,データ本体とデータ情報の合体。
    これから,データ本体とデータ情報を取り出す。
    また,必要なら,データ本体を
        ノイズ除去
        キャリブレーション
    そして,データ本体とデータ情報を,sensor_msgs,std_msgs 等の型に組む。
    さらに,再接続処理 (→ センサーが一瞬落ちたら自動で再接続)。


    ● IMU
    デバイス:
     /dev/imu0
     /dev/ttyUSB0
      バイナリデータ
      ノイズあり
      キャリブレーション必要

    抽象化:
     プロセス : /opt/ros/humble/lib/imu_driver/imu_node
     トピック : /imu/data
      型 : sensor_msgs/Imu
       角速度・加速度の float 値
       ノイズ除去済み
       キャリブレーション済み
       時刻付き

    sensor_msgs/Imu の型:
      角速度(float)
      加速度(float)
      姿勢(四元数)
      共分散行列
      タイムスタンプ
      座標系(frame_id)


    ● カメラ
    デバイス:
     /dev/video0
      生の JPEG

    抽象化:
     プロセス : /opt/ros/humble/lib/camera_driver/camera_node
     トピック : /camera/image
      型 : sensor_msgs/Image
       時刻付き
       解像度情報付き

    sensor_msgs/Image の型:
       ?


    ● モータ
    デバイス:
     /dev/motor0
     /dev/ttyACM0
      生の PWM (pulse width modulation)
      電流値は別デバイス

    抽象化:
     プロセス : /opt/ros/humble/lib/motor_driver/motor_node
     「モータ状態」 のトピック :
       /motor/status(電流・温度・位置)
       型 : ?
     「トルク指令」 のトピック :
       /motor/command
       型 : std_msgs/Float32


    ● I2C デバイス
    デバイス:
     /dev/i2c-1