コンテンツにスキップ

モード切替

このページでわかること

practice(練習)と competition(競技)の 2 つのモードの違い、切替方法、launch.env による起動パラメータのカスタマイズ方法がわかります。

2 つのモード

モード 電源 ON 時の動作 用途
practice(既定) ROS 2 を自動起動しない 整備・練習・設定変更時
competition ROS 2 を自動起動する 競技本番・フィールドテスト

作業・整備中は practice モードで

competition モードのまま電源を入れると即座にモーターが制御状態になります。 ハードウェアの作業中は必ず practice モードに戻してください。


モードの確認

cat /etc/questix_robot/mode

モードの切替

# 競技モード(電源 ON で自動起動)
echo competition | sudo tee /etc/questix_robot/mode

# 練習モード(自動起動をスキップ)
echo practice | sudo tee /etc/questix_robot/mode

切替は即時反映されます(サービスの再起動は不要)。次回電源投入時から新しいモードで動作します。

Robot Manager から切替

Robot Manager Web UI がインストールされている場合、ブラウザ(:8888)からボタン操作でモードを切り替えられます。


起動フロー

flowchart TD
    A[電源 ON\nquestix_robot.service が起動] --> B[questix_robot_launcher.sh]
    B --> C{/etc/questix_robot/mode を読む}
    C -->|"competition"| D[launch.env を読み込む]
    D --> E[ROS 2 を起動]
    C -->|"practice / その他"| F[スキップして終了]

launch.env による起動パラメータの変更

/etc/questix_robot/launch.env を編集すると、自動起動時の構成を変更できます。

sudo nano /etc/questix_robot/launch.env

設定項目

# ROS 2 のバージョンとワークスペース
ROS_DISTRO=jazzy
ROBOT_WS=/home/ubuntu/robot_ws

# ROS_DOMAIN_ID(複数台運用時は機体ごとに変更)
ROS_DOMAIN_ID=42

# 起動するコンポーネント
ENABLE_LIDAR=true      # YDLiDAR を起動するか
ENABLE_SHOT=true       # 発射コンポーネントを起動するか
ENABLE_DRIVE=true      # 走行コンポーネントを起動するか
ENABLE_GPIO_REF=false  # GPIO 参照系を起動するか
ENABLE_RVIZ=false      # RViz を起動するか

# コントローラ種別
CONTROLLER_TYPE=uart   # uart または dualshock

反映タイミング

launch.env の変更はサービス再起動(または次回電源 ON)から有効になります。 手動で反映するには sudo systemctl restart questix_robot.service を実行します。


複数台運用での ROS_DOMAIN_ID

同一ネットワーク上で複数台のロボットを動かす場合、ROS_DOMAIN_ID が重複するとトピックが混線します。台ごとに異なる値を設定してください。

# robot-01 の場合
echo "ROS_DOMAIN_ID=41" | sudo tee -a /etc/questix_robot/launch.env

# robot-02 の場合
echo "ROS_DOMAIN_ID=42" | sudo tee -a /etc/questix_robot/launch.env

サービス操作

# 状態確認
systemctl status questix_robot.service

# 手動で起動(competition モードのときだけ ROS 2 が起動する)
sudo systemctl start questix_robot.service

# 停止
sudo systemctl stop questix_robot.service

# 再起動(launch.env 変更後など)
sudo systemctl restart questix_robot.service

# ログをリアルタイムで表示
journalctl -u questix_robot.service -f