• 沒有找到結果。

TORCS 平台上的 human imitation 研究

第二章 TORCS 介紹與文獻縱覽

2.3 TORCS 平台上的 human imitation 研究

近年來有一些在 TORCS 平台上做 human imitation 相關的研究,使用人類玩 家玩過 TORCS 的遊戲紀錄,學習人類的行為。 TORCS 本身並沒有記錄遊戲過 程的功能,所以必須更改 TORCS 的程式碼,在不影響遊戲進行的條件下增加收 集玩家行為資料的功能。在前面說的 client 部分是由電腦的 AI driver 決定控制指 令,但是在 TORCS 遊戲裡內建了一個 human client,將決定控制命令的程式連 接到電腦的各種輸入設備,如滑鼠、鍵盤、遊戲手把、方向盤等,讓人類玩家可 以做為一個 client 參加遊戲。因為 TORCS 的 server-client 架構特性,每經過 0.02 秒的間隔 server 和 client 會互相傳遞一次訊號,這可以視為玩家對遊戲環境產生 一次反應。想要收集到這些反應的資料,可以把記錄資料的程式加到每次 server-client 互動時會執行的部分,將當時 server 傳送的環境資料和 client 傳送的 控制指令記錄下來,這樣可以在遊戲中每 0.02 秒得到一組玩家行為資料。

AI 的運算處理步驟,會使用到某些學習演算法,利用玩家的遊戲紀錄去訓 練 AI 的判斷模型,達到模擬人類行為的目的.

3.輸出控制指令做為 output:

Output 輸出方式可以分為兩種:直接式和間接式的控制指令。直接式的 output 是 AI 運算直接去算出控制的指令,算出加油門、煞車、轉向等數值。間接式的

車 AI 駕駛程式,不計較 AI 的速度成績。

Output 則使用直接控制的方法,輸出加油門、煞車、轉向、排檔指令。

在[9]的實驗結果之中,模擬人類玩家的結果並不好,製造出來的 AI 不能夠 完整的跑完整個賽道,模擬第三組資料(不超出跑道範圍的 AI)時結果比較穩定。

圖 2-2 車輪的路徑資料與賽車偏移角度關 係圖 圖片來源[10]

圖 2-3 由估計 segment 組成的賽道模 型 圖片來源[10]

圖 2-4 TORCS 中一個賽道的形狀 圖片來源[10]

圖 2-5 模擬圖的賽道模型 圖片來源[10]

在 TORCS 競賽的規則中,每次會有之前未開放的新跑道當作比賽項目,增 加比賽的公平性。而在比賽前允許參賽者在新跑道上試跑 100000 個 game tick,

相當於大約 30 分鐘的時間,參賽者可以藉此調整自己賽車 AI 的參數。因為在

TORCS 競賽之中對環境偵測的限制,只能得到車子附近的環境資料,[10]的研 究中提出了一種在比賽中建立出整個跑道模型的方法。先使用一個較單純穩定的 AI 順利的開過賽道一圈,然後每 0.02 秒紀錄一次車輪的移動距離,根據左右車 輪的移動距離差計算行進的偏向角度(圖 2-2),和計算行進的路線,以每 4 公尺 為一個單位算出一個 segment,由多個 segment,組成一個完整的賽道模型(圖 2-3),

因為是估計出來的賽道,所以跟實際的賽道形狀會有些誤差,見圖 2-4 和圖 2-5。

在[10]之中使用這個模擬賽道模型做為 human imitation 的環境, input 的部 分取用下列參數:

1. 賽車前方 50 個 segment 的偏向角度 2. 賽車後方 15 個 segment 的偏向角度 3. 跑道寬度

4. 下一個轉彎的方向(0 為左轉,1 為右轉,0.5 為直線前進) 5. 現在的轉彎方向(0 為左轉,1 為右轉,0.5 為直線前進)

在訓練 AI 的方法上使用類神經網路,使用間接式的控制,算出目標速度和 目標位置,再用其他數學公式,計算賽車朝向目標前進應該用的控制指令數值。

實驗的部分用製作出來的 AI 和模擬的人類記錄做比較,AI 比人類玩家大約慢了 20%~45%,他們認為 AI 最大的問題是在於當賽車超出跑道邊界時沒辦法像人類 一樣,做出適當的回復跑道中心處理方法。

圖 2-6 Rangefinder sensor 圖片來源[11]

圖 2-7 Lookahead sensor 圖片來源[11]

在[11]之中有兩組 input 的偵測賽道環境方法,第一種是 rangefinder sensor(圖 2-3),也就是在 TORCS 競賽中可以使用的距離探測器,第二種是 lookahead sensor(圖 2-4), 把賽車位置前方的賽道取一段固定的長度,分割成許多等長的 segment,算出每個 segment 的彎曲程度(0 代表直線段,正數代表右轉,負數代 表左轉),將它串起來之後就得到一組 input 向量,例如上圖中的 lookahead sensor

可以得到[0,60,90,90,60,0,0,0]的結果。

AI 判斷的方式也分為兩種:第一種使用 k-nearest neighbor,接收到 input 之後,從 玩家記錄中找出環境最相似的 k 組資料,然後將他們的反應行為取平均值,當作 output 的輸出結果。另一種則是使用類神經網路的方式訓練 AI。最後使用間接 式的方法,輸出目標速度和目標位置(和跑道中心線的距離)做為 output。

這篇研究將製作出來的賽車 AI 放到 TORCS 賽道中做測試,以固定時間之 內能夠跑的距離當作評分標準,並且和 inferno bot 做比較,inferno bot 是 TORCS 內建的 AI 程式中最快的一個,它可以使用完整賽道資料做最佳化駕駛。

rangefinder sensor 的實驗結果不好,lookahead sensor 在某些場地可以做到比 inferno bot 慢 20%~30%的成績。

另外這篇 paper 還有對 lookahead 的偵測距離做研究,分別用 8 段 segment 和兩倍距離的 16 段 segment 做 input 取樣,比較製作出來的 AI 程式成績,結果 發現取樣較多的 16 段 segment 這一組造成了 overfitting 的效果,使用某個跑道訓 練出來的 AI,在同一個跑道上跑時 16 段 segment 的效果較好,但是拿到其他跑 道上測試時 8 段 segment 的效果會比較好。

相關文件