crane_tactics¶
概要¶
Craneシステムの**戦略タクティックプラグインコレクション**として、様々な試合状況に対応した戦略実装を提供するパッケージです。crane_planner_plugins(旧称)から改称・統合されました。ファクトリパターンにより、攻撃・守備・特殊状況の戦略を柔軟に組み合わせ、動的な戦術実行を実現します。
主要機能¶
- ファクトリベースの生成:
TacticFactoryによる動的戦略生成 - 多様な戦略実装: 20種類以上の専門タクティック
- 状況適応制御: 試合状況に応じた戦略自動選択
- ロボット協調: マルチロボット戦術の統合実行
- リアルタイム計画: 高速な戦術決定と実行
アーキテクチャ上の役割¶
Craneシステムの**戦術戦略層**として、crane_tactic_coordinatorからの指示を受けて具体的な戦術を実行し、crane_robot_skillsに個別ロボット行動を指示します。
タクティックプラグイン一覧¶
守備系タクティック¶
- GoalieSkillTactic: ゴールキーパー専用戦略
- ゴールライン防御
- ボール軌道予測対応
- クリアランス判断
- DefenderTactic: ディフェンダー戦略
- エリア守備
- マーク対応
- インターセプト
- TotalDefenseTactic: 統合守備戦略
攻撃系タクティック¶
- AttackerSkillTactic: アタッカー戦略
- 得点機会創出
- パス・ドリブル選択
- ポジション取り
- SubAttackerSkillTactic: アタッカー支援
特殊状況タクティック¶
- SimpleKickOffSkillTactic: キックオフ戦略
- OurPenaltyKickTactic: 自チームペナルティキック
- TheirPenaltyKickTactic: 敵チームペナルティキック
- BallPlacementSkillTactic: ボール配置戦略
ユーティリティタクティック¶
- SimpleAITactic: デバッグ・テスト用バイパス戦略
- 外部(Action)からの直接スキル指定
- パラメータの動的変更対応
- WaiterTactic: 待機戦略
- SimplePlacerTactic: エリア配置戦略
- BallCalibrationDataCollectorTactic: キャリブレーション用
タクティックベースアーキテクチャ¶
TacticBase基底クラス¶
class TacticBase {
public:
virtual Status calculateRobotCommand(const std::vector<RobotIdentifier>& robots) = 0;
// ...
};
タクティック生成(TacticFactory)¶
// tactic_factory.cpp
auto generatePlanner(
const std::string & tactic_name, WorldModelWrapper::SharedPtr & world_model, rclcpp::Node & node)
-> TacticBase::SharedPtr
{
// 登録済みファクトリから生成
return factory_map.at(tactic_name)(world_model, node);
}
登録マップ¶
PLANNER_ENTRY("attacker_skill", AttackerSkillTactic),
PLANNER_ENTRY("goalie_skill", GoalieSkillTactic),
PLANNER_ENTRY("defender", DefenderTactic),
// ...
依存関係¶
コア依存¶
- crane_robot_skills: 個別ロボット行動の実行
- crane_msg_wrappers: メッセージラッパー
- crane_geometry: 幾何学計算ライブラリ
- crane_physics: 物理計算・ボールモデル
使用方法¶
Session Controllerからの利用¶
crane_tactic_coordinator の設定ファイルで名前を指定します。
# YAML設定による自動選択
robots:
- id: 0
role: "goalie"
tactic: "goalie_skill"
- id: 1
role: "attacker"
tactic: "attacker_skill"
- id: [2,3,4]
role: "defender"
tactic: "defender"
最近の開発状況¶
2025年の主要変更¶
- パッケージ統合:
crane_tacticsをcrane_tacticsへ統合・改称 - ファクトリ化:
pluginlib依存からの脱却と静的マップによる管理への移行 - スキル連携強化:
SkillTactic系クラスによるスキルパッケージとの密結合化
関連パッケージ: crane_tactic_coordinator | crane_robot_skills | crane_game_analyzer