V5用PIDターン制御(V5-PIDCODE-99719Z)

Library

概要

このリポジトリ「V5-PIDCODE-99719Z」は、VEX V5環境向けに作られたPID制御を用いた旋回(ターン)補助のコードを収めています。主目的は「経験の浅いコーダーが自律動作で正確な旋回とスコアリングを行えるようにする」ことで、センサ(主にジャイロ/IMU)から角度を読み取り、PIDループでモータ出力を補正して目標角度へ高精度に到達させます。短い構成(README.md と pidturn.py)で導入が容易、VEX Pythonプロジェクトへの組み込みや調整がしやすい点が特徴です。

GitHub

リポジトリの統計情報

  • スター数: 8
  • フォーク数: 0
  • ウォッチャー数: 8
  • コミット数: 5
  • ファイル数: 2
  • メインの言語: Python

主な特徴

  • VEX V5向けのPIDベースの旋回制御を提供(簡易導入)
  • 少数ファイルで可搬性が高く、既存プロジェクトへ統合しやすい
  • 経験の浅いユーザーでも使えるように調整手順や基本がREADMEに記載
  • 旋回精度向上により自律競技でのスコア安定化を支援

技術的なポイント

このプロジェクトの中核はPID制御を用いてロボットを目標の角度まで正確に回す点にあります。典型的な実装では現在角度(ジャイロ/IMU読み取り)と目標角度の誤差を算出し、比例(P)、積分(I)、微分(D)の各項で出力を決定してモータに反映します。P項で主に誤差を修正、I項で定常偏差を取り除き、D項で振動やオーバーシュートを抑制します。実運用ではサンプリング周期とループ周波数の安定化、積分 windup(積分蓄積による過補正)対策(積分上限や誤差閾値での蓄積停止)、出力の飽和(モータコマンドの上限・下限)やデッドバンド補正が重要です。

またジャイロのドリフトやノイズ対策として移動平均や低域フィルタ、微分項のノイズ増幅を抑えるためのラプラスフィルタや差分の平滑化が有効です。PIDゲインのチューニングは段階的に行うのが基本で、まずPを増やして応答を確認、次にDで振動抑制、最後に小さなIで定常誤差を解消します。実装側ではタイムアウトや最大許容誤差を設定して永久ループを防ぎ、ログ出力やデバッグ用の角度・出力履歴を出すとチューニングが容易になります。VEX Python環境ではモータ制御命令とセンサ読み取りのラップタイムに注意し、制御周期に合わせてスリープ(遅延)を適切に挟むことが安定性向上に寄与します。本リポジトリはシンプルな構造のため、これらの改善(フィルタ、アンチワインドアップ、出力リミッタ、PID自動チューニング支援など)を追加して発展させやすい点も利点です。

プロジェクトの構成

主要なファイルとディレクトリ:

  • README.md: file
  • pidturn.py: file

使い方のヒント

  • まず静止状態でジャイロのゼロキャリブレーションを行う
  • 小さめのPから始め、オーバーシュートする場合はDを増やす
  • Iは最小限にし、積分上限を設定する
  • 実戦では目標角度±許容範囲(例±1〜3度)で完了と判定する
  • 競技用自律ルーチンに組み込む際はタイムアウトと安全停止を必ず実装する

まとめ

短く単機能だが実戦的で学習しやすいV5向けPID旋回ライブラリ。

リポジトリ情報:

READMEの抜粋:

V5-PIDCODE-99719Z

This code gives inexperienced coders a better chance at autonomous with precise turns and accurate scoring for their event with a PID. Programmers in VEX can now focus on other aspects of their code rather than spending too much time on mitigating drift and inaccurate turns …