基於TORCS的自動駕駛學習總結(一)
技術標籤:TORCS自動駕駛強化學習自動駕駛模擬器windowspython
0.寫在最前面
我目前大四,EE轉CS,強化學習方向,啥都不會的菜雞,只有一點C語言和彙編的基礎,也就會一點if else了。準備拿DQN跑個自動駕駛模擬作為自己的畢設,就當過渡了,然而今年突然要對本科畢業論文抽查,搞得我有點緊張,一步一步學吧。
模擬平臺打算用airsim或者torcs兩者中的一個,airsim太大了,我電腦不咋地,暫時放棄,先整個torcs試試。
至於程式,先學學python,網上的DQN、DDPG程式多得是,gym有torcs的庫,也有airsim的庫,這幾天先把git上的torcs
1.TORCS的安裝
我使用的是windows10系統,到TORCS官網下載的安裝包,目前更新到1.3.7,用手機熱點下的,300多MB,下了兩三個小時。
下載完正常解壓就行了,解壓後有個wtorcs.exe檔案,雙擊就可以運行了,沒啥特殊的。
2.PYTHON的安裝
我官網下的python3.8,之前買的RL的書,跟著書上例程用cmd pip install了很多包,並且自己嘗試著把因為庫函式版本不同而產生的bug糾正了一下,我用的pycharm作為編輯器,我用不明白jupyter,到現在我去找github上的程式碼,都是複製貼上。
3.gmy_torcs與TORCS的通訊
在這我遇到了很多坑,下面一個一個說。
3.1git上的例程落後於我裝的gym_torcs
首先example_experiment.py中的
from gym_torcs import TorcsEnv
from sample_agent import Agent
要改成
```javascript
from gym_torcs import sample_agent
from gym_torcs import torcs_env
你可以到C:\Users\XXXX\AppData\Local\Programs\Python\Python38\Lib\site-packages\gym_torcs
後面同樣的道理,也要改。
env = TorcsEnv(vision=vision, throttle=False)
agent = Agent(1) # steering only
改成
env = torcs_env.TorcsEnv(vision=vision, throttle=False)
agent = sample_agent.Agent(1) # steering only
現在,解決了第一個問題。
3.2subprocess未定義和cannot find Files
這個問題,真的是太頭疼了,總之在解決完Q1後,又繼續報錯,我把賭注壓在了這個subprocess未定義上,點了一下對應的錯誤,跳轉到了某個.py中,我忘了具體是哪個,我還特意在其他的gym_torcs目錄下的庫裡搜了一下,有subprocess這個函式,並且有subprocess.py這個東西,應該是python自帶的,我不是很清楚。所以我靈機一動,在那個報錯的庫前面加了一個
import subprocess
然後,完美解決這個問題!
3.3Waiting for server on 3101…
這時候執行程式,先Waiting for server on 3101…,然後Count Down : 54321-1,不斷報錯。
我憑直覺認為程式本身沒問題,這應該是跟TORCS程式沒連線上才會出現這個錯誤,所以我開始找TORCS和程式的介面。
之前看到CSDN上一位大佬的文章,安裝他的操作,人家就有Initializing Driver scr_server1,我就沒有我顯示什麼什麼cannot open XXXX.dll,我查了一下,我的TORCS的drivers目錄裡確實沒有scr_server.dll這個東西,我以為是版本的問題,我又下載了一個1.3.4版本的TORCS,但是嗎,依然沒有scr_server,直到我找到了這篇文章,裡面說有個patch要下載,我就照做了,可以依然報錯,並且沒法執行TORCS,無法定位程式輸入點XXX於動態連結庫XXX,我以為是dll檔案缺失,就按照這篇文章去安裝scr_server.dll檔案(這個檔案我在那個patch裡找到的),
cmd regsvr32 c:\windows\system32\scr_server.dll
繼續報錯
我在這卡了一會兒,不知道該咋整,但是辦法總比苦難多,繼續求助萬能的網友,直到我找到了這篇文章,我看到了希望,原來是要把那個patch解壓到TORCS的安裝目錄下,全部替換,到此再次執行wtorcs.exe,成功了!我按照博主的方法,執行snakeoil3_gym.py,結果還是一樣,接著報錯,server3101…但是令人驚喜的是,TORCS>race>practice>configure race裡面找到了scr_server1,於是我點了accept>NEW RACE
TORCS的視窗顯示,waiting for port 3001,到這裡,我盲猜是snakeoil3_gym.py裡面的port 設定的是3101,我進去改成3001就行了,到這裡,我的環境徹底配置好了。
4.總結
能搭建好這個環境,真是多虧了各路神仙網友,我也打算記錄一下我遇到的問題,接下來會繼續記錄我的菜雞入門之路,希望這個假期能把第一個DQN程式跑通!最後,感謝BJX的鼓勵,否則我真的想放棄TORCS回去用airsim了,後續也會更新一下我搭建airsim模擬環境的過程。