# 模擬器開發

在開發機器的過程，可以寫一些模擬或輔助程式。這可以帶來一些好處：

* 不需要機器也可以觀察算法的運作行為
* 在實際測試之前找到一些Bug並解決
* 在算法加入機器以後可以輔助後續開發

我們14683A 2022\~2023試過可以用以下的方法開發模擬器:

* 使用 opencv 顯示模擬情況，用Python或c++驅動演算法
* 使用 html canvas 顯示模擬情況，用Javascript驅動演算法

## 開發建議

1. 在開始做之前，應該先思考
   1. 我要模擬的是什麼？先釐清問題是什麼在嘗試解決問題
   2. 我預期的工作流程是什麼？讓寫出來的輔助程式可以貼合自己和團隊的工作流程
   3. 要如何有效的輔助後續開發？專注於可以輔助後續開發的功能，不必鑽研無關緊要的功能
2. 步驟：顯示介面製作完成-->模擬環境開發完成-->加入機器演算法-->驗證演算法
3. 可以盡可能的參數化機器的數值，例如加速度、長寬等
4. 可以額外製作一些圖形Class，例如曲線的Class，這樣有利於之後可以快速加入新元見到模擬器裡
5. 在模擬器裡調的常數數值切勿直接複製到機器程式裡（除了座標）

## 範例

路線生成模擬器：<https://acezxn.github.io/Pathtracker-online/#/path-follow-simulator>
