Udacity-datasheet of self-driving配置

(还存在图片上传失败的问题,暂时先懒得管了emmm)
最近在实验室在做基于深度学习的无人机的自主飞行控制,建立的神经网络模型需要一些数据集训练,所以就找到了Udacity开源的无人驾驶数据集(既然都是自动运行的系统,所以可以有通用性)

环境:ubuntu16.04

数据集地址:

https://github.com/udacity/self-driving-car

这个数据集是rosbag的格式,解析rosbag也是一个挺难的东西吧(反正我没搞出来),以下是几种方法

一、使用ros中自带的lunch工具

二、使用matlab

以上两部分先占个坑,暂时还不想写(反正此路不通)

然后进入正题,善良的(划掉)Udacity给我们提供了一个用于解析这个ros包的脚本,名为udacity-driving-reader,我去好感动(划掉)是不是,好贴心还给了我们脚本!(见以下链接)

https://github.com/rwightman/udacity-driving-reader

天真的人类 ----不知道出自谁

接下来仔细讲一下这个的配置过程以及其中的坑:

三、进入正题

step1:“reader”的官方文件以及docker的安装

在github的README中,对于这个包的使用方式是这样的:

[图片上传失败...(image-b91e53-1536678333895)]

这是个什么意思呢,简而言之就是要想解析rosbag包必须在ros环境里面(理论上说matlab也是可以的),因此这个大佬在docker容器中虚拟的ros环境以及配置该文件所需的其他环境(PS:不知道docker为何物的移步:[https://blog.csdn.net/abcdocker/article/details/53158210])

我假定你看了这个链接以后已经知道如何安装docker了(事实上也并不难,我在这一步并没有遇到什么问题,真正的挑战还在后面(吐血))

step2:真正开始运行指令

docker配置好以后,cdbuild.sh路径之下,就可以开心的运行下面的代码:

./build.sh

我在这一步遇到了如下问题:

[图片上传失败...(image-17ad66-1536678333895)]

查了之后是没有给docker命令root权限,在前面加一个sudo就好了,即:

sudo ./build.sh

然后会出现如下结果,这是在配置docker环境(实际上这个过程极慢,要执行如图所示的六步,只不过是我之前执行过):

[图片上传失败...(image-cfe3b2-1536678333895)]

这样一个用于运行该脚本的docker容器就搞定了。

好戏还在后头

step3:shall we begin?

(PS:这部分的begin是为了本次配置最大的bug而致敬,顺便致敬龙妈(有人知道这句台词吗2333))

如github所示,要想得到图像集以及其标注,需要运行这个代码:

./run-bagdump.sh -i /data -o /output

ok,那我们开开心心运行一下吧!

等会,这个命令的参数是啥??

这个在另一个github项目中(也是Udacity的github(只不过我暂时找不到了))有解释:

/data 是rosbag文件在计算机里的绝对路径(注意这个路径下面有且只能有一个bag文件)

/output是你想要输出的结果的绝对路径

妥~这个问题搞定了,接下来我们运行代码(记得还是要加sudo

报错

[图片上传失败...(image-f63ea0-1536678333894)]

好吧这不是大问题,我之前配置的时候也没有遇到,是为了写博客重新跑了一遍代码,不小心搞错了(这个图片不直观,这个的意思是只运行了代码,没有输出任何结果(没有遇到这个问题的自行忽略!!))。

出现这个的原因是路径不对,没有相应的文件夹。

虚惊一场

改正错误以后,继续运行代码

报错

[图片上传失败...(image-4478d1-1536678333894)]

唔这个问题的出现,代表着你遇到了一个坏消息,一个好消息:

好消息是你之前的配置都是对的;坏消息是这个问题很棘手(好吧其实找到方法以后也很简单)

step4:处理问题

我不知道熟悉python的人遇到这个问题怎么搞,总之我这个小白最先想到的是这个dateutil的版本对不对,好吧不管对不对吧,先下载一个他要求的版本再说:

pip install python-dateutil==2.5.0

安装好并没有什么用....错误依然,所以怎么办呢,看看这个run-bagdump.sh里面的代码:

[图片上传失败...(image-554cc8-1536678333894)]

可以看到,这个是要调用一个叫bagdump.py的python脚本,所以我们尝试从源代码方向解决问题。

(我才不会告诉你我把pandas给注释掉了)

事实证明这个办法是有点用的,把pandas注释掉以后,这个脚本可以运行一半——图片提取出来了,但是标注提取不出来

(废话,源代码的重要的一个库被注释掉了,怎么可能能搞定!)

我们看一下代码:

[图片上传失败...(image-a39c78-1536678333894)]

这里pandas的作用是将标注提取出来,并输出到CSV——(我有一个想法,是否能用numpy实现这个功能,显然我没有实现....(哪位大佬要是搞定了给我说说哇))

step5:搞定了!

以上这些过程我用了三天你敢信?

我们继续回到这个github,在issue里面有这样一个问题:

[图片上传失败...(image-554a76-1536678333894)]

哇塞这不就是我的问题?!

解决方案是:

在dockfile中加入如下代码:

#update pandas RUN pip install python-dateutil==2.5.0

显而易见了,这是要在docker环境里面构建dateutil的2.5.0版本,改了以后重新build,会发现在之前build的基础上确实install了一个dateutil 2.5.0

重新执行run,执行成功,如下图所示:

[图片上传失败...(image-fae8c2-1536678333894)]

[图片上传失败...(image-82d6e3-1536678333894)]

当出现这两个图片的时候,就意味着这个reader终于运行成功了,rosbag包终于解析出来了!

贴图

[图片上传失败...(image-44d5b4-1536678333894)]

最后

其实不是什么大问题了,但还是写出来吧:

这个是只读的文件,要运行如下命令才能去掉上面那个锁子:

[图片上传失败...(image-534156-1536678333894)]

你可能感兴趣的:(Udacity-datasheet of self-driving配置)