依頼128 報告(2026-11-09) ■ やったこと 1. pi05/count_by_position.py の TEACH_FILES に 2 行を足した(位置 1: drag_v2_20261109_094222.json は 144348 の次、位置 3: drag_v2_20261109_123000.json は 231249 の次。元の行は残した) 2. pi05/test_count_by_position.py に test_same_position_two_files を 1 件足した(元の記録と教え直した記録が teach/ に両方あっても位置 1・3 になる。位置が違う 2 つなら「分からない」のまま) 補足: 既存の test_teach_file_mapping は一時フォルダ名が t{位置} だったため、同じ位置が 2 つになると同じフォルダを 2 回作って落ちる。フォルダ名をファイル名で分ける 1 行だけ直した(確かめる中身は同じ) 3. 2026-11-09 の run を読むだけで確かめた(KIOXIA は書いていない。実機は動かしていない) 4. 2 ファイルを指定して git add・commit ■ git diff diff --git a/pi05/count_by_position.py b/pi05/count_by_position.py index 08c9299..488c828 100644 --- a/pi05/count_by_position.py +++ b/pi05/count_by_position.py @@ -64,8 +64,10 @@ DEFAULT_TARGET = 10 # LOG352 の README の表 (runs/experiments/record_teach_demo/20261019_LOG352/README.md) TEACH_FILES = { "drag_v2_20221013_144348.json": 1, + "drag_v2_20261109_094222.json": 1, # 位置 1 を教え直した記録 (DEEP_DEMOS 2-1・LOG463) "drag_v2_20221013_230205.json": 2, "drag_v2_20221013_231249.json": 3, + "drag_v2_20261109_123000.json": 3, # 位置 3 を教え直した記録 (DEEP_DEMOS 2-1・2026-11-09) "drag_v2_20221013_232345.json": 4, "drag_v2_20221013_233323.json": 5, } diff --git a/pi05/test_count_by_position.py b/pi05/test_count_by_position.py index 852e35b..e7dce75 100644 --- a/pi05/test_count_by_position.py +++ b/pi05/test_count_by_position.py @@ -89,7 +89,7 @@ class TestPosition(unittest.TestCase): def test_teach_file_mapping(self): for f, pos in cbp.TEACH_FILES.items(): - d = self.root / f"t{pos}" + d = self.root / f"t{pos}_{Path(f).stem}" # 同じ位置のファイルが 2 つあるので名前で分ける write_teach_run(d, f) self.assertEqual(cbp.teach_position(d)[0], pos) write_teach_run(self.root / "none", None) @@ -98,6 +98,22 @@ class TestPosition(unittest.TestCase): self.assertEqual(cbp.teach_position(self.root / "other")[0], cbp.UNKNOWN) self.assertEqual(cbp.teach_position(self.root / "missing")[0], cbp.UNKNOWN) + def test_same_position_two_files(self): + # 位置 1・3 は教え直した記録と元の記録の 2 つ. 両方が teach/ にあっても集合で 1 つになり位置 1・3 + for pos, (old, new) in {1: ("drag_v2_20221013_144348.json", "drag_v2_20261109_094222.json"), + 3: ("drag_v2_20221013_231249.json", "drag_v2_20261109_123000.json")}.items(): + self.assertEqual(cbp.TEACH_FILES[old], pos) + self.assertEqual(cbp.TEACH_FILES[new], pos) + d = self.root / f"both{pos}" + write_teach_run(d, old) + (d / "teach" / new).write_text("{}") + self.assertEqual(cbp.teach_position(d), (pos, f"teach/{old}")) + # 違う位置の 2 つなら「分からない」のまま + d = self.root / "mixed" + write_teach_run(d, "drag_v2_20261109_094222.json") + (d / "teach" / "drag_v2_20261109_123000.json").write_text("{}") + self.assertEqual(cbp.teach_position(d)[0], cbp.UNKNOWN) + def test_nearest_and_line(self): for pos, mm in cbp.TEACH_REF_MM.items(): self.assertEqual(cbp.nearest_position(mm)[0], pos) ■ テストの結果(python3 pi05/test_count_by_position.py -v) test_count_merged (__main__.TestCount.test_count_merged) ... ok test_merge_readme_table_and_same_data (__main__.TestCount.test_merge_readme_table_and_same_data) ... ok test_merge_survives_count_error (__main__.TestCount.test_merge_survives_count_error) ... ok test_block_from_video (__main__.TestPosition.test_block_from_video) ... ok test_block_not_found (__main__.TestPosition.test_block_not_found) ... ok test_nearest_and_line (__main__.TestPosition.test_nearest_and_line) ... ok test_same_position_two_files (__main__.TestPosition.test_same_position_two_files) ... ok test_teach_file_mapping (__main__.TestPosition.test_teach_file_mapping) ... ok ---------------------------------------------------------------------- Ran 8 tests in 1.358s OK ■ 3 の表(run | teach/ のファイル | 出た位置 | runs_table.csv の位置) run_0001_20261109_093045 | drag_v2_20221013_144348.json | 1 | 1 run_0001_20261109_094839 | drag_v2_20261109_094222.json | 1 | 1 run_0001_20261109_095308 | drag_v2_20261109_094222.json | 1 | 1 run_0001_20261109_095452 | drag_v2_20261109_094222.json | 1 | 1 run_0001_20261109_095630 | drag_v2_20261109_094222.json | 1 | 1 run_0001_20261109_095810 | drag_v2_20261109_094222.json | 1 | 1 run_0001_20261109_095948 | drag_v2_20261109_094222.json | 1 | 1 run_0001_20261109_100126 | drag_v2_20261109_094222.json | 1 | 1 run_0001_20261109_100307 | drag_v2_20261109_094222.json | 1 | 1 run_0001_20261109_100444 | drag_v2_20261109_094222.json | 1 | 1 run_0001_20261109_100716 | drag_v2_20261109_094222.json | 1 | 1 run_0001_20261109_100852 | drag_v2_20261109_094222.json | 1 | 1 run_0001_20261109_101023 | drag_v2_20261109_094222.json | 1 | 1 run_0001_20261109_101157 | drag_v2_20261109_094222.json | 1 | 1 run_0001_20261109_101434 | drag_v2_20261109_094222.json | 1 | 1 run_0001_20261109_101615 | drag_v2_20261109_094222.json | 1 | 1 run_0001_20261109_102109 | drag_v2_20221013_230205.json | 2 | 2 run_0001_20261109_102248 | drag_v2_20221013_230205.json | 2 | 2 run_0001_20261109_102431 | drag_v2_20221013_230205.json | 2 | 2 run_0001_20261109_102715 | drag_v2_20261109_094222.json | 1 | 1 run_0001_20261109_102903 | drag_v2_20261109_094222.json | 1 | 1 run_0001_20261109_103049 | drag_v2_20261109_094222.json | 1 | 1 run_0001_20261109_103504 | drag_v2_20221013_230205.json | 2 | 2 run_0001_20261109_103804 | drag_v2_20221013_230205.json | 2 | 2 run_0001_20261109_103943 | drag_v2_20221013_230205.json | 2 | 2 run_0001_20261109_104110 | drag_v2_20221013_230205.json | 2 | 2 run_0001_20261109_104517 | drag_v2_20221013_230205.json | 2 | 2 run_0001_20261109_120818 | drag_v2_20221013_231249.json | 3 | (表になし) run_0001_20261109_121128 | drag_v2_20221013_231249.json | 3 | (表になし) run_0001_20261109_121224 | drag_v2_20221013_231249.json | 3 | (表になし) run_0001_20261109_121320 | drag_v2_20221013_231249.json | 3 | (表になし) run_0001_20261109_121416 | drag_v2_20221013_231249.json | 3 | (表になし) run_0001_20261109_121511 | drag_v2_20221013_231249.json | 3 | (表になし) run_0001_20261109_121605 | drag_v2_20221013_231249.json | 3 | (表になし) run_0001_20261109_121659 | drag_v2_20221013_231249.json | 3 | (表になし) run_0001_20261109_121815 | drag_v2_20221013_231249.json | 3 | (表になし) run_0001_20261109_123655 | drag_v2_20261109_123000.json | 3 | (表になし) run_0001_20261109_123756 | drag_v2_20261109_123000.json | 3 | (表になし) run_0001_20261109_123848 | drag_v2_20261109_123000.json | 3 | (表になし) run_0001_20261109_123940 | drag_v2_20261109_123000.json | 3 | (表になし) run_0001_20261109_124032 | drag_v2_20261109_123000.json | 3 | (表になし) run_0001_20261109_124117 | drag_v2_20261109_123000.json | 3 | (表になし) run_0001_20261109_124207 | drag_v2_20261109_123000.json | 3 | (表になし) run_0001_20261109_124256 | drag_v2_20261109_123000.json | 3 | (表になし) run_0001_20261109_124438 | drag_v2_20261109_123000.json | 3 | (表になし) run_0001_20261109_124530 | drag_v2_20261109_123000.json | 3 | (表になし) run_0001_20261109_124817 | drag_v2_20261109_123000.json | 3 | (表になし) run_0001_20261109_124920 | drag_v2_20261109_123000.json | 3 | (表になし) 位置ごとの本数(48 本): 位置1 19 本, 位置2 8 本, 位置3 21 本 /分からない 0 本 11:00 までの本(runs_table.csv にある 27 本): 出た位置と表の位置が合う 27/27。表の teach 列と teach/ のファイル名も 27/27 で一致 12:00 以降の本(21 本, 表になし): 120818〜121815 の 9 本は drag_v2_20221013_231249.json → 位置 3、123655〜124920 の 12 本は drag_v2_20261109_123000.json → 位置 3。teach/ のファイル名どおり 内訳: 位置 1 は元の記録 1 本(093045, 表では「外す」)+教え直した記録 18 本。位置 3 は元の記録 9 本+教え直した記録 12 本 ■ commit 8d9a4de ■ 決めてほしいこと なし 判定:合格