1. 程式人生 > 其它 >基於TORCS的自動駕駛學習總結(一)

基於TORCS的自動駕駛學習總結(一)

技術標籤:TORCS自動駕駛強化學習自動駕駛模擬器windowspython

0.寫在最前面

  我目前大四,EE轉CS,強化學習方向,啥都不會的菜雞,只有一點C語言和彙編的基礎,也就會一點if else了。準備拿DQN跑個自動駕駛模擬作為自己的畢設,就當過渡了,然而今年突然要對本科畢業論文抽查,搞得我有點緊張,一步一步學吧。
  模擬平臺打算用airsim或者torcs兩者中的一個,airsim太大了,我電腦不咋地,暫時放棄,先整個torcs試試。
  至於程式,先學學python,網上的DQN、DDPG程式多得是,gym有torcs的庫,也有airsim的庫,這幾天先把git上的torcs

例程跑跑跑,網上大多數是基於Linux系統的配置方法,github上也推薦Linux,或許以後我也得用Linux,以下是我這幾天搭建環境(win10)過程中遇到的大大小小的問題,簡單整理了一下,希望能跟各位大佬交流交流。

1.TORCS的安裝

  我使用的是windows10系統,到TORCS官網下載的安裝包,目前更新到1.3.7,用手機熱點下的,300多MB,下了兩三個小時。
  下載完正常解壓就行了,解壓後有個wtorcs.exe檔案,雙擊就可以運行了,沒啥特殊的。

2.PYTHON的安裝

  我官網下的python3.8,之前買的RL的書,跟著書上例程用cmd pip install了很多包,並且自己嘗試著把因為庫函式版本不同而產生的bug糾正了一下,我用的pycharm作為編輯器,我用不明白jupyter,到現在我去找github上的程式碼,都是複製貼上。

  在這得pip install gym_torcs,應該夠用了。

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

看一眼,裡面應該是沒有TorcsEnv.py,但是進到torcs_env裡,能找到TorcsEnv()這個函式。
後面同樣的道理,也要改。

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模擬環境的過程。