docker下kitti2bag的安装与使用

本文介绍了在Ubuntu系统中,由于kitti2bag在ROS环境下编译失败,作者选择使用Docker来创建ROSbag文件。通过拉取和尝试不同的docker镜像,解决了版本冲突和文件路径问题,最终成功制作了rosbag,并在ROS环境中使用rviz查看了效果。过程中遇到了numpy版本冲突和数据集目录结构的调整问题。
摘要由CSDN通过智能技术生成

因kitti2bag在ROS环境下编译失败,选择使用docker实现。

 我的系统环境是ubuntu。

1、安装docker

2、下载kitti的raw data数据集和对应的标定文件

csdn上有网盘的下载连接

3、docker镜像

3.1 拉取官方的镜像

docker pull tomas789/kitti2bag

然后创建容器并制作bag。

docker run -v /home/myabc/2011_10_03_drive_0047_sync:/data -it tomas789/kitti2bag -t 2011_10_03 -r 0102 raw_synced

此时报错:

~$  docker run -v /home/myabc/2011_10_03_drive_0047_sync:/data -it tomas789/kitti2bag -t 2011_10_03 -r 0102 raw_synced
Traceback (most recent call last):
  File "/usr/local/bin/kitti2bag", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2927, in <module>
    @_call_aside
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2913, in _call_aside
    f(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2940, in _initialize_master_working_set
    working_set = WorkingSet._build_master()
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 637, in _build_master
    return cls._build_from_requirements(__requires__)
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 650, in _build_from_requirements
    dists = ws.resolve(reqs, Environment())
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 834, in resolve
    raise VersionConflict(dist, req).with_context(dependent_req)
pkg_resources.ContextualVersionConflict: (numpy 1.11.0 (/usr/lib/python2.7/dist-packages), Requirement.parse('numpy>=1.12.0'), set(['pandas']))

失败,查询解决方案未果,放弃该方案。

3.2 下载新镜像

docker pull tyoung96/kitti2bag:latest

 创建容器并制作rosbag,

docker run -v /home/myabc/2011_10_03_drive_0047_sync:/data  -it tyoung96/kitti2bag -t 2011_10_03 -r 0102 raw_synced

此时报错:

:~$ docker run -v /home/myabc/2011_10_03_drive_0047_sync:/data  -it tyoung96/kitti2bag -t 2011_10_03 -r 0102 raw_synced
Traceback (most recent call last):
  File "/usr/local/bin/kitti2bag", line 9, in <module>
    load_entry_point('kitti2bag', 'console_scripts', 'kitti2bag')()
  File "/kitti2bag/kitti2bag/__main__.py", line 5, in main
    run_kitti2bag()
  File "/kitti2bag/kitti2bag/kitti2bag.py", line 317, in run_kitti2bag
    kitti = pykitti.raw(args.dir, args.date, args.drive)
  File "/usr/local/lib/python2.7/dist-packages/pykitti/raw.py", line 34, in __init__
    self._load_calib()
  File "/usr/local/lib/python2.7/dist-packages/pykitti/raw.py", line 232, in _load_calib
    data['T_velo_imu'] = self._load_calib_rigid('calib_imu_to_velo.txt')
  File "/usr/local/lib/python2.7/dist-packages/pykitti/raw.py", line 147, in _load_calib_rigid
    data = utils.read_calib_file(filepath)
  File "/usr/local/lib/python2.7/dist-packages/pykitti/utils.py", line 72, in read_calib_file
    with open(filepath, 'r') as f:
IOError: [Errno 2] No such file or directory: '/data/2011_10_03/calib_imu_to_velo.txt'

报错,最后一行提示,没有 '/data/2011_10_03/calib_imu_to_velo.txt',但是我下了,可能是文件放置目录不对,重新调整。

调整后再次尝试:

:~$ docker run -v /home/myabc/2011_10_03_drive_0047_sync:/data  -it tyoung96/kitti2bag -t 2011_10_03 -r 0102 raw_synced
Traceback (most recent call last):
  File "/usr/local/bin/kitti2bag", line 9, in <module>
    load_entry_point('kitti2bag', 'console_scripts', 'kitti2bag')()
  File "/kitti2bag/kitti2bag/__main__.py", line 5, in main
    run_kitti2bag()
  File "/kitti2bag/kitti2bag/kitti2bag.py", line 317, in run_kitti2bag
    kitti = pykitti.raw(args.dir, args.date, args.drive)
  File "/usr/local/lib/python2.7/dist-packages/pykitti/raw.py", line 35, in __init__
    self._load_timestamps()
  File "/usr/local/lib/python2.7/dist-packages/pykitti/raw.py", line 253, in _load_timestamps
    with open(timestamp_file, 'r') as f:
IOError: [Errno 2] No such file or directory: '/data/2011_10_03/2011_10_03_drive_0102_sync/oxts/timestamps.txt'

还是报错,最后一行提示,没有'/data/2011_10_03/2011_10_03_drive_0102_sync/oxts/timestamps.txt',可能是文件放置目录不对,调整。

调整好后,再次尝试,成功,

制作完成。 

文件的目录放置经验同网上其他教程。

我的目录:

其中, 一级目录“/home/myabc/2011_10_03_drive_0047_sync:/data”,冒号前“/home/myabc/2011_10_03_drive_0047_sync”是宿主机中的地址,文件名任意,存放数据集文件。

冒号后“/data”是容器中的地址,文件名由镜像决定,不用动。

二级目录“/2011_10_03”对应docker run命令中-t的参数。二级目录存放三个标定文件,和一个三级目录。

三级目录“/2011_10_03_drive_0102_sync”对应docker run命令中-t和-r的参数。三级目录存放下载好的数据集文件,包括“image_00”等。

由上图对应的docker run命令:

docker run -v /home/myabc/2011_10_03_drive_0047_sync:/data  -it tyoung96/kitti2bag -t 2011_10_03 -r 0102 raw_synced

从中可以看出目录编排与docker run命令参数的对应关系。

 4、rosbag play看一下效果

在有ROS的系统中,打开三个终端依次运行

roscore

rviz

rosbag play xxx.bag,或者rosbag play --pause xxx.bag

4.1 没有图像和画面

手动添加,在“Displays”界面的左下角“Add”,“By topic”

 添加需要显示的image图像、激光点云的topic话题,选中然后点“OK”

4.2 有image图像,但是没有激光点云

没有显示激光点云,在“Displays”界面的上部分,“Fixed Frame”项目,rviz刚打开默认是“map”,手动更换为其他的,比如“world”"Velo_link"等,再次播放bag,就会出现激光点云的画面。

总结

1安装docker

2下载数据集

3拉取镜像

docker pull tyoung96/kitti2bag:latest

4创建容器同时制作rosbag

docker run -v /home/myabc/2011_10_03_drive_0047_sync:/data  -it tyoung96/kitti2bag -t 2011_10_03 -r 0102 raw_synced

完成

kitti数据集使用-rosbag-rviz - 古月居

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值