docker下kitti2bag的安装与使用

因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 - 古月居

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Docker是一种开源的容器化平台,它可以帮助开发者将应用程序及其依赖项打包成一个独立的容器,以便在不同的环境中进行部署和运行。下面是Docker安装使用步骤: 1. 安装Docker:首先,你需要在你的操作系统上安装DockerDocker支持多个操作系统,包括Windows、macOS和Linux。你可以访问Docker官方网站(https://www.docker.com/)下载并安装适合你操作系统的Docker版本。 2. 配置Docker安装完成后,你需要配置Docker。在Windows和macOS上,Docker会自动启动,并在系统托盘中显示一个图标。在Linux上,你可能需要手动启动Docker服务。 3. 验证安装:打开终端或命令提示符,运行以下命令来验证Docker是否成功安装: ``` docker version ``` 4. 获取镜像:Docker使用镜像来创建容器。你可以从Docker Hub(https://hub.docker.com/)上获取各种镜像,也可以自己构建镜像。例如,你可以使用以下命令获取一个名为"ubuntu"的Ubuntu镜像: ``` docker pull ubuntu ``` 5. 运行容器使用以下命令来运行一个容器: ``` docker run -it ubuntu ``` 这将在一个交互式终端中启动一个基于Ubuntu镜像的容器。 6. 使用容器:一旦容器启动,你可以在容器内执行各种操作,就像在一个独立的虚拟机中一样。你可以安装软件、运行命令等。当你退出容器时,容器将停止运行。 7. 管理容器:你可以使用各种Docker命令来管理容器。例如,使用以下命令列出正在运行容器: ``` docker ps ``` 使用以下命令停止一个容器: ``` docker stop <container_id> ``` 8. 清理资源:当你不再需要某个容器时,可以使用以下命令删除它: ``` docker rm <container_id> ``` 如果你不再需要某个镜像,可以使用以下命令删除它: ``` docker rmi <image_id> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值