Skip to content
seigot edited this page Nov 7, 2021 · 27 revisions

概要

p-robotics-hub/burger_war_devが提供するロボコン競技に向けて開発した、本リポジトリの内容について記載する。
本ページの目次は以下の通り。

  • 前提条件
  • 全体設計
  • 基本機能
  • 特に工夫しているポイント
  • 自動評価
  • 今後の課題

前提条件

本リポジトリに実装している機能は以下を前提としている。

  • ubuntu18.04/ROS melodic環境であること。
  • rulebook記載のルール下で勝利する事を目的としていること。

これらの前提が変更になった場合、変更内容に応じたバージョンアップが必要となる。

全体設計

  • 起動処理
  • 走行
  • 敵機検出
  • 安定化

詳細

  • 起動処理

    • 初期化
    • ゲーム状態の管理
  • 走行

    • 自律走行アルゴリズム
    • パラメータ
    • 地図
    • ルート
  • 敵機検出

    • LIDARによる敵検出(obstacle detector)
    • お見合い対策
    • 画像処理
  • 安定化

    • 衝突回避
    • 走行ルート選択効率化
  • memo

■入力
tf: 自己位置
enemy_position: 敵っぽいものの座標情報(LIDARから点群を取得して、そこから敵位置)
scan: LIDARの点群(前方の障害物衝突回避の為)

■出力
move base

  1. LIDAR,障害物のコストマップ
  2. コストマップから経路を引く global plannerはこちら/open source
  3. どんな速度、角速度を出すか local plannerはこちら/

rqt_graph

rqt_graph

基本機能

  • seigoRun2.py

    • いわゆるmain node。戦略を司る。
    • Subscribe topic (IN)
      • /tf: 座標情報
      • /scan: Lidar
      • /move_base/status: move_baseを使った移動が完了したかどうかの情報
      • /enemy_position: 敵位置
    • Publish topic (OUT)
      • /move_base/goal: 移動先座標を指定(BASIC状態)
      • /move_base/cancel: move_baseを使った移動をcancelする(DEFENCE/ATTACK/ESCAPE状態)
      • /cmd_vel: 移動量を直接指定(DEFENCE/ATTACK/ESCAPE状態)
    • 状態遷移
      • BASIC: 敵を見つけていない場合、もしくは遠い場合。
      • DEFENCE: 敵が近くにいて、得点が勝っている場合。
      • ATTACK: 敵が近くにいて、得点が負けている場合。
      • ESCAPE: 敵が近くにいて、得点が負けている場合。
      • ATTACKかESCAPEかはrosparam(enable_escape_approach)で決める
  • following_planner

    • move_baseのlocal planner pluginとして実装されている
    • defaultで使用されるOSSのlocal plannerは、大きく迂回してしまう課題があったため、 global plannerが生成する経路に比較的忠実に沿って動くlocal plannerを自作した
  • enemy_detector

    • obstacle_trackerが検出した障害物から、既知の障害物を除いて敵っぽい物体を選別
    • Subscribe topic (IN)
      • /obstacles: obstacle_tracker nodeが検出した障害物
    • Publish topic (OUT)
      • /enemy_position: 敵の位置情報
  • 基本機能 T.B.D

  • 特に工夫しているポイント T.B.D

  • 自動評価 T.B.D

Clone this wiki locally