Skip to content

2024-08-16

パッケージ巡礼

3rdparty/closest_point_vendor

Boost.Geometryの拡張機能。最近傍点を求めるために使っている。 ビルドにはインターネット接続が必要。

3rdparty/matplotlib_cpp_17_vendor

matplotlibのC++ラッパー。無印のmatplotlib-cppとは別物で高機能。 今は使っていないが、軽いデバッグに便利

consai_ros2/robocup_ssl_msgs

https://github.com/SSL-Roots/consai_ros2

SSL公式のprotoメッセージをROS2で使えるようにしたもの。 GameEvent関連は移植されていない。

consai_ros2/robocup_ssl_comm

  • game_controller
  • grsim
    • ロボットコマンドを送信したり、ボールやロボット位置の配置指示
  • robot_status
    • grsim上のロボット状態を受信
  • vision

consai2_examples/consai_vision_tracker

EKFでVisionデータをフィルタリングして、使いやすいようにするパッケージ

crane_world_model_publisher

SSL関連のデータをすべて集めたトピックである/world_modelを配信するパッケージ これをすることで、他のノードは/world_modelだけを購読すればよくなる

utility/crane_msg_wrappers

world_model_wrapperは、world_modelの情報を使って、よく使う幾何学計算をまとめたもの

utility/crane_basics

基礎的な幾何学計算などを集めたパッケージ

  • ボールの接触時間を計算するための時系列計算を行う機能(ball_contact)
  • WorldModelWrapperのための構造体(robot_info, ball_info)
  • Boost.GeometryでEigenのPosition型をネイティブに扱えるようにするための設定(eigen_adapter)
  • PID制御器(pid_controller)
  • 基礎的な幾何学計算(geometry_operations)
    • 角度の正規化など角度の不連続性を無視して計算できる関数など
  • 区間計算(interval)
    • Boostに類似機能があるのでそっちに移行してもいいかも
  • 最適割当問題のソルバー(position_assignments)
    • ハンガリアン法を実装している
    • 複数ロボットの割当を行うときに使っている(defense_plannerなど)
    • 最適割当ではないような場面も見るのでバグがあるかも?
  • 移動時間計算(travel_time)
    • 台形加速を考慮したロボットの移動時間を計算する
    • テストも実装してある(test/test.cpp)
  • ボールモデルの計算

スキル作るにあたってやること

スキルクラスを実装する

  • update関数
  • print関数

SimpleAIに登録する

  • crane_robot_skills/skills.hppに作ったスキルのヘッダファイルを追加
  • crane_simple_ai/crane_commander.cppでスキルを登録
    • setUpSkillDictionary関数で登録

対応するPlannerを作る

実際の動きに組み込むためには、Plannerを作る必要がある。

  • crane_planner_pluginsに作る
  • Skill単体のPlannerはskill_planner.hppに実装することが多い

Plannerの登録

crane_planner_plugins/planners.hppに文字列とPlannerのペアを登録する

SimpleAIとgrSim