コンテンツにスキップ

ROS 2 パッケージ

このページでわかること

QUESTiX を構成する ROS 2 パッケージの役割と、操縦からモーター駆動までのデータフローがわかります。

QUESTiX を構成する主要な ROS 2 パッケージと役割の一覧です。

パッケージ 種別 役割
motor_control_lib C++ ライブラリ 走行・発射で共有するモーター制御インターフェース
motor_control_lib_simple C++ ライブラリ 簡易版モーター制御ライブラリ
motor_control_interfaces msg / srv ROS 2 インターフェース定義
motor_control_app C++ ノード 走行 (drive_component)・発射 (shot_component)・単体 DDT モーター制御
esc_motor_control_cpp C++ ノード ESC 制御(pigpio / lgpio バックエンド)
esc_motor_control_python Python ESC 制御(Python 実装)
joy_controller C++ ノード Joy 入力を走行コマンド・サーボ指令に変換
uart_joy_driver C++ コンポーネント UART 接続コントローラを読み取り sensor_msgs/Joy を配信
joy_gate C++ コンポーネント 操作可否に応じて Joy メッセージをゲーティング
gpio_reader C++ コンポーネント GPIO ピンを読み取り Bool トピックを配信(Pi 5 / gpiochip4)
operation_manager C++ ノード GPIO 状態から /gpio/controllable を判定・配信
questix_launcher launch パッケージ 統合起動の入口(XML launch)
description_launch URDF / xacro ロボットモデル(URDF・メッシュ・RViz・state publisher)

データフロー(操縦 → 駆動)

flowchart LR
    CTRL["コントローラ"] --> UJD["uart_joy_driver / joy"]
    UJD -->|/joy| JG["joy_gate"]
    GR["gpio_reader"] --> OM["operation_manager"]
    OM -->|/gpio/controllable| JG
    JG -->|ゲートされた /joy| JC["joy_controller"]
    JC -->|/cmd_vel| DRV["drive_component"]
    JC --> SHOT["shot_component"]
    DRV --> DDT["DDT モーター (RS-485)"]
    SHOT --> SERVO["サーボ (/dev/servo)"]
    JC --> ESC["esc_motor_control"]
    ESC --> ROLLER["ローラーモーター (PWM)"]

安全に関わるノード

  • joy_gateoperation_manager の判定 (/gpio/controllable) に基づき、操作不可のときは Joy 入力を遮断します。
  • operation_manager — GPIO 更新が timeout_seconds を超えて途絶えると操作不可と判定します。
  • esc_motor_controlsafety_timeout を超えてコマンドが来ないと安全停止します。

詳細は各ハードウェアページ(ESC / コントローラ / センサ・LiDAR)を参照してください。