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)
- ボールモデルの計算
- 等減速度直線運動を仮定したボール軌道の計算
- TDPにちゃんとしたボールモデルがあったりするので将来的には実装したい
スキル作るにあたってやること¶
スキルクラスを実装する¶
- 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のペアを登録する