Skip to content

Commit

Permalink
🔄 synced local 'docs/ai' with remote 'docs'
Browse files Browse the repository at this point in the history
  • Loading branch information
HansRobo committed Aug 16, 2024
1 parent c8122e8 commit 9e25ce6
Show file tree
Hide file tree
Showing 3 changed files with 107 additions and 0 deletions.
1 change: 1 addition & 0 deletions docs/ai/diagram.md
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@ graph TD
GC -. UDP .-> GCC
GCC -- /referee --> PS
PS -- /play_situation --> SC
PS -- /play_situation --> WP
SC -- /control_targets --> LP
LP -- /robot_commands --> SS
SS -. UDP .-> Robots
Expand Down
94 changes: 94 additions & 0 deletions docs/ai/logs/2024-08-16.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
# 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)
- <https://hans-robo.hatenablog.com/entry/2019/09/26/010359>
- PID制御器(pid_controller)
- 基礎的な幾何学計算(geometry_operations)
- 角度の正規化など角度の不連続性を無視して計算できる関数など
- 区間計算(interval)
- Boostに類似機能があるのでそっちに移行してもいいかも
- 最適割当問題のソルバー(position_assignments)
- ハンガリアン法を実装している
- 複数ロボットの割当を行うときに使っている(defense_plannerなど)
- 最適割当ではないような場面も見るのでバグがあるかも?
- <https://github.com/ibis-ssl/crane/issues/224>
- 移動時間計算(travel_time)
- 台形加速を考慮したロボットの移動時間を計算する
- テストも実装してある(test/test.cpp)
- ボールモデルの計算
- 等減速度直線運動を仮定したボール軌道の計算
- TDPにちゃんとしたボールモデルがあったりするので将来的には実装したい
- <https://github.com/ibis-ssl/crane/issues/434>

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

### スキルクラスを実装する

- 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
12 changes: 12 additions & 0 deletions docs/ai/network.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,18 @@
sudo ip link set multicast on lo
```

### マルチキャストアドレスとデバイスの対応の確認

```bash
netstat -g
```

### マルチキャストアドレスへのルートの追加

```bash
sudo ip route add <address> dev <device>
```

## インターネット接続とロボット接続の共存

ロボットのアドレスに対して静的ルーティングを設定する
Expand Down

0 comments on commit 9e25ce6

Please sign in to comment.