建立三维地图

简述

  1. 使用模块采集数据,并录制成ROS包。

  2. 在高性能PC上,使用ROS包和nv_base_generate建立地图。

  3. 使用地图编辑软件,调整地图,然后另存为PCD格式的地图文件。

  4. 使用前,请先阅读 TIPS

前期准备(PC)

注意:以下步骤在PC中执行
  1. 在PC中安装 Ubuntu18.04ROS Melodic

  2. 参考 Livox-SDK安装说明,安装Livox-SDK。

  3. 开启终端,键入下述指令,创建新的工作空间,并克隆ROS包。

    mkdir -p ~/nv_ws/src
    cd ~/nv_ws/src
    git clone https://github.com/I-Quotient-Robotics/nv_base_generate.git
    
  4. 使用如下指令,安装其余依赖包。

    sudo apt install python-wstool
    
    cd ~/nv_ws/src
    wstool init . nv_base_generate/rosinstall/rosinstall.txt
    wstool update
    
  5. 使用如下指令,编译ROS包,并将当前工作空间添加到环境变量中。

    cd ~/nv_ws
    
    # 如果此步骤出错,请按照错误提示,安装缺失的ROS包。
    catkin_make
    
    source ~/nv_ws/devel/setup.bash
    

数据录制

  1. 在模块中启动ROS程序。

    roslaunch nv_base_bringup bringup.launch
    
  2. 将设备放置在要采集数据的环境中,然后开启新的终端,运行如下指令进行数据录制。

    # <数据包名称>替换为自己命名的名称,例如indoor_data,不设定时,默认为nv_sample
    # 数据包存储在nv_base_bringup的rosbag目录下
    
    # 室内环境请使用
    roslaunch nv_base_bringup record_indoor.launch name:=<数据包名称>
    
    # 室外环境请使用
    roslaunch nv_base_bringup record_outdoor.launch name:=<数据包名称>
    
  3. 使用模块,平稳慢速的扫描目标区域,然后使用 CTRL-C 关闭录制程序。

  4. 将录制的数据包从 nv_base_bringup/rosbag 中拷贝出来,例如 nv_base_bringup/rosbag/nv_sample.bag

地图建立

  1. 将数据包拷贝到PC当中

  2. 在终端中先开启地图建立程序

    # 室内环境包请使用
    roslaunch nv_base_generate indoor.launch
    
    # 室外环境包请使用
    roslaunch nv_base_generate outdoor.launch
    
  3. 新开启一个终端,然后输入如下指令,播放之前录制的数据

    rosbag play --clock <数据包>
    
  4. 此时会在Rviz界面中看到播放的数据,以及实时生成的地图

  5. 等待数据包播放完成后,在新终端中输入如下指令,保存生成的地图

    # 将/home/iqr/nv_sample替换成目标目录
    rosservice call /hdl_graph_slam/dump "'destination:/home/iqr/nv_sample'"
    
  6. 此时会发现在目标目录多出一个文件夹,切包含若干子文件,地图导出完成

  7. 关闭上文中开启的ROS程序,然后在终端中输入如下指令,进入地图编辑程序

    roslaunch nv_base_generate interactive_slam.launch
    
  8. 参考 Interactive SLAM教程,载入地图,编辑和修改,然后另存为PCD文件。