(还存在图片上传失败的问题,暂时先懒得管了emmm)
最近在实验室在做基于深度学习的无人机的自主飞行控制,建立的神经网络模型需要一些数据集训练,所以就找到了Udacity开源的无人驾驶数据集(既然都是自动运行的系统,所以可以有通用性)
环境:ubuntu16.04
数据集地址:
这个数据集是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配置好以后,cd
到build.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)]
网友评论