(還存在圖片上傳失敗的問題,暫時先懶得管了emmm)
最近在實驗室在做基于深度學(xué)習(xí)的無人機的自主飛行控制,建立的神經(jīng)網(wǎng)絡(luò)模型需要一些數(shù)據(jù)集訓(xùn)練,所以就找到了Udacity開源的無人駕駛數(shù)據(jù)集(既然都是自動運行的系統(tǒng),所以可以有通用性)
環(huán)境:ubuntu16.04
數(shù)據(jù)集地址:
這個數(shù)據(jù)集是rosbag的格式,解析rosbag也是一個挺難的東西吧(反正我沒搞出來),以下是幾種方法
一、使用ros中自帶的lunch工具
二、使用matlab
以上兩部分先占個坑,暫時還不想寫(反正此路不通)
然后進(jìn)入正題,善良的(劃掉)Udacity給我們提供了一個用于解析這個ros包的腳本,名為udacity-driving-reader,我去好感動(劃掉)是不是,好貼心還給了我們腳本?。ㄒ娨韵骆溄樱?/p>
https://github.com/rwightman/udacity-driving-reader
天真的人類 ----不知道出自誰
接下來仔細(xì)講一下這個的配置過程以及其中的坑:
三、進(jìn)入正題
step1:“reader”的官方文件以及docker的安裝
在github的README中,對于這個包的使用方式是這樣的:
[圖片上傳失敗...(image-b91e53-1536678333895)]
這是個什么意思呢,簡而言之就是要想解析rosbag包必須在ros環(huán)境里面(理論上說matlab也是可以的),因此這個大佬在docker容器中虛擬的ros環(huán)境以及配置該文件所需的其他環(huán)境(PS:不知道docker為何物的移步:[https://blog.csdn.net/abcdocker/article/details/53158210])
我假定你看了這個鏈接以后已經(jīng)知道如何安裝docker了(事實上也并不難,我在這一步并沒有遇到什么問題,真正的挑戰(zhàn)還在后面(吐血))
step2:真正開始運行指令
docker配置好以后,cd到build.sh路徑之下,就可以開心的運行下面的代碼:
./build.sh
我在這一步遇到了如下問題:
[圖片上傳失敗...(image-17ad66-1536678333895)]
查了之后是沒有給docker命令root權(quán)限,在前面加一個sudo就好了,即:
sudo ./build.sh
然后會出現(xiàn)如下結(jié)果,這是在配置docker環(huán)境(實際上這個過程極慢,要執(zhí)行如圖所示的六步,只不過是我之前執(zhí)行過):
[圖片上傳失敗...(image-cfe3b2-1536678333895)]
這樣一個用于運行該腳本的docker容器就搞定了。
好戲還在后頭
step3:shall we begin?
(PS:這部分的begin是為了本次配置最大的bug而致敬,順便致敬龍媽(有人知道這句臺詞嗎2333))
如github所示,要想得到圖像集以及其標(biāo)注,需要運行這個代碼:
./run-bagdump.sh -i /data -o /output
ok,那我們開開心心運行一下吧!
等會,這個命令的參數(shù)是啥??
這個在另一個github項目中(也是Udacity的github(只不過我暫時找不到了))有解釋:
/data 是rosbag文件在計算機里的絕對路徑(注意這個路徑下面有且只能有一個bag文件)
/output是你想要輸出的結(jié)果的絕對路徑
妥~這個問題搞定了,接下來我們運行代碼(記得還是要加sudo)
報錯:
[圖片上傳失敗...(image-f63ea0-1536678333894)]
好吧這不是大問題,我之前配置的時候也沒有遇到,是為了寫博客重新跑了一遍代碼,不小心搞錯了(這個圖片不直觀,這個的意思是只運行了代碼,沒有輸出任何結(jié)果(沒有遇到這個問題的自行忽略?。。?。
出現(xiàn)這個的原因是路徑不對,沒有相應(yīng)的文件夾。
虛驚一場
改正錯誤以后,繼續(xù)運行代碼
報錯:
[圖片上傳失敗...(image-4478d1-1536678333894)]
唔這個問題的出現(xiàn),代表著你遇到了一個壞消息,一個好消息:
好消息是你之前的配置都是對的;壞消息是這個問題很棘手(好吧其實找到方法以后也很簡單)
step4:處理問題
我不知道熟悉python的人遇到這個問題怎么搞,總之我這個小白最先想到的是這個dateutil的版本對不對,好吧不管對不對吧,先下載一個他要求的版本再說:
pip install python-dateutil==2.5.0
安裝好并沒有什么用....錯誤依然,所以怎么辦呢,看看這個run-bagdump.sh里面的代碼:
[圖片上傳失敗...(image-554cc8-1536678333894)]
可以看到,這個是要調(diào)用一個叫bagdump.py的python腳本,所以我們嘗試從源代碼方向解決問題。
(我才不會告訴你我把pandas給注釋掉了)
事實證明這個辦法是有點用的,把pandas注釋掉以后,這個腳本可以運行一半——圖片提取出來了,但是標(biāo)注提取不出來
(廢話,源代碼的重要的一個庫被注釋掉了,怎么可能能搞定!)
我們看一下代碼:
[圖片上傳失敗...(image-a39c78-1536678333894)]
這里pandas的作用是將標(biāo)注提取出來,并輸出到CSV——(我有一個想法,是否能用numpy實現(xiàn)這個功能,顯然我沒有實現(xiàn)....(哪位大佬要是搞定了給我說說哇))
step5:搞定了!
以上這些過程我用了三天你敢信?
我們繼續(xù)回到這個github,在issue里面有這樣一個問題:
[圖片上傳失敗...(image-554a76-1536678333894)]
哇塞這不就是我的問題?!
解決方案是:
在dockfile中加入如下代碼:
#update pandas RUN pip install python-dateutil==2.5.0
顯而易見了,這是要在docker環(huán)境里面構(gòu)建dateutil的2.5.0版本,改了以后重新build,會發(fā)現(xiàn)在之前build的基礎(chǔ)上確實install了一個dateutil 2.5.0
重新執(zhí)行run,執(zhí)行成功,如下圖所示:
[圖片上傳失敗...(image-fae8c2-1536678333894)]
[圖片上傳失敗...(image-82d6e3-1536678333894)]
當(dāng)出現(xiàn)這兩個圖片的時候,就意味著這個reader終于運行成功了,rosbag包終于解析出來了!
貼圖
[圖片上傳失敗...(image-44d5b4-1536678333894)]
最后
其實不是什么大問題了,但還是寫出來吧:
這個是只讀的文件,要運行如下命令才能去掉上面那個鎖子:
[圖片上傳失敗...(image-534156-1536678333894)]