Skip to content

Commit bcb62c0

Browse files
committed
🔄 synced local 'docs' with remote 'docs'
1 parent fcece2c commit bcb62c0

File tree

2 files changed

+94
-0
lines changed

2 files changed

+94
-0
lines changed

docs/logs/2024-01-30.md

+68
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
# 2024-01-30
2+
3+
## 直近でやることの整理
4+
- SimpleAIのアップグレード
5+
- Skillも使えるようにしたい
6+
- Skillのパラチュンができるようにしたい
7+
- RobotCommandWrapperネイティブにできたらいいな
8+
- 機体の状態を取得できるようにしたい
9+
10+
## SimpleAIの拡張を見据えて
11+
12+
すべての機能をSkill化するのはあり。
13+
14+
### Skillとは?
15+
16+
- 入力
17+
- ID
18+
- WorldModel
19+
- パラメータ
20+
- 引き継ぎ情報(コンテキスト)
21+
- 出力
22+
- ロボットコマンド
23+
- Skillの終了判定
24+
- 引き継ぎ情報(コンテキスト)
25+
26+
### ひとまずRobotCommandをSkill化する
27+
28+
マクロを駆使して、RobotCommandをSkill化した。
29+
しかし、パラメータをうまく渡せないので、うまく噛み合わない。
30+
31+
#### そういえば
32+
33+
Skillのパラメータを共通インタフェースを渡せるようにすると型の問題などが面倒なので、
34+
各個スキルクラスでパラメータのセッターを独自定義することにしたんだった。
35+
このときは、Skillクラスをプログラム上で呼び出すことしか考えていなかったので、
36+
特に共通インタフェースを無理して作るインセンティブもなく、むしろ各々のスキルクラスで便利なように独自定義できることが強みだと思っていた。
37+
38+
#### とはいえ
39+
40+
SimpleAIなど、共通インタフェースを使ってパラメータを渡したい場合が出てきた今、そうも言っていられない。
41+
ということで、共通インタフェースを作ることにした。
42+
43+
## パラメータ融通用共通インタフェース設計
44+
45+
### 現状
46+
47+
SimpleAIでは、vector<double>を使っている。
48+
既に存在するスキルを見ても、doubleで表現できるパラメータしかない。
49+
50+
### 今後を見据えて
51+
52+
- boolは、0.0と1.0で表現することで、doubleで表現できるが、double以外も扱うなら対応したい。
53+
- intは、doubleで表現できるが、double以外も扱うなら対応したい。
54+
- stringは、対応していると何かと便利そう。
55+
56+
### ということで
57+
58+
将来を見据えると、複数の型を扱える共通インタフェースがほしい
59+
60+
std::vector<std::variant<double, bool, int, std::string>>かな
61+
そして、名前付きパラメータにしたいので、std::unordered_map<std::string, std::variant<double, bool, int, std::string>>かな
62+
63+
### 実際の実装
64+
65+
- 共通インタフェースrun()の引数に、std::unordered_map<std::string, std::variant<double, bool, int, std::string>>を追加
66+
- std::optionalにして、nulloptのときは動作させないことで、引数なしのrun()も可能にする
67+
- これで後方互換性が保たれる。
68+
- これで、関数型っぽくも振る舞えるはず。

docs/logs/2024-01-31.md

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# 2024-01-31
2+
3+
## 直近でやることの整理
4+
- SimpleAIのアップグレード
5+
- Skillも使えるようにしたい
6+
- Skillのパラチュンができるようにしたい
7+
- RobotCommandWrapperネイティブにできたらいいな
8+
- 機体の状態を取得できるようにしたい
9+
10+
## SimpleAIの拡張を見据えて
11+
12+
昨日は、インタフェースを設計して、SkillBaseクラスに対して設置するところまで行った。
13+
今日は、既存のSkillの対応と、SimpleAIでの対応を行う。
14+
15+
### 既存のSkillの対応
16+
17+
- [x] GetBallContact
18+
- [x] Idle
19+
- [x] MoveToGeometry
20+
- [x] MoveWithBall
21+
- [x] TurnAroundPoint
22+
- [x] RobotCommandベースのスキル
23+
24+
### SimpleAIのパラメータスキル対応
25+
26+
既存のUIだと無理なので、パラメータテーブルを使ってたくさんのパラメータを設定できるようにする。

0 commit comments

Comments
 (0)