A-LOAM源码编译运行

运行A-LOAM问题记录

ceres问题

  • 需要重新安装ceres库,十四讲中的ceres库太老,不适用。从官网下载安装稳定版的ceres库。点击latest stable release下载,不建议适用git克隆(太慢)。
  • 在编译ceres库的时候,程序卡死,建议多编译几次,安装官网教程来,并行数选择 2 2 2,太高会卡死。
  • catkin_make编译A-LOAMceres报错,新版的ceres需要C++14,最新版的需要C++17,在A-LOAM中的CMakeLists.txt中修改**C++**编译版本为 14 14 14 17 17 17

-j16报错

  • catkin_make编译-j16报错,编译时用终端命令覆盖脚本命令,降低并行数目,如-j4

CV报错

  • catkin_make编译CV报错,我的电脑有两个版本的OpenCV,在CMakeLists.txt中指定依赖的OpenCV版本即可,find_package(OpenCV 3 REQUIRED)

其他教程

A-LOAM运行和常见问题及解决方法

编译A-LOAM时Ceres库报错

KITTI数据集使用

KITTI数据集文件树如下:

.
|-- data_odometry_color
|   `-- dataset
|       `-- sequences
|           |-- 00
|           |   |-- calib.txt
|           |   |-- image_2
|           |   |-- image_3
|           |   `-- times.txt
|           `-- 01
|               `-- image_2
|-- data_odometry_gray
|   `-- dataset
|       `-- sequences
|           |-- 00
|           |   |-- calib.txt
|           |   |-- image_0
|           |   |-- image_1
|           |   `-- times.txt
|           `-- 01
|               `-- image_0
|-- data_odometry_velodyne
|   `-- dataset
|       `-- sequences
|           |-- 00
|           |   `-- velodyne
|           `-- 01
|               `-- velodyne
|-- kitti.bag
`-- velodyne
    `-- odometry
        |-- data_object_image_2.zip
        |-- data_object_label_2
        |   `-- training
        |       `-- label_2
        `-- data_object_label_2.zip
  • 其中,图片序列文件中image_0、image_1分别表示相机的左目和右目的图像序列,相机的标定结果在文件calib.txt中,记录相机帧的时间戳在文件times.txt

KITTI Lidar数据集

  • Kitti数据集没有提供相应的ros包,需要我们自己来写一个接口将Kitti数据转成ros包来把数据送到程序中去(播包)
  • A-LOAM作者提供了一个结点kitti_helper来处理KITTI数据集。
  • 运行程序只需要灰度图像序列lidar里程计序列即可

修改参数

修改kitti_helper.aunch中的参数

  • 修改dataset_folder的值为/learn/Dataset/KITTI/
  • 修改output_bag_file的值为/learn/Dataset/KITTI/kitti.bag

修改kittiHelper.cpp文件中的路径变量值

  • 修改时间戳路径

    std::string timestamp_path = "data_odometry_gray/dataset/sequences/" + sequence_number + "/times.txt";
    
  • 对应的左右目图片路径

    left_image_path << dataset_folder << "data_odometry_gray/dataset/sequences/" + sequence_number + "/image_0/" << std::setfill('0') << std::setw(6) << line_num << ".png";
    
    right_image_path << dataset_folder << "data_odometry_gray/dataset/sequences/" + sequence_number + "/image_1/" << std::setfill('0') << std::setw(6) << line_num << ".png";
    
  • 修改lidar数据的路径

    lidar_data_path << dataset_folder << "data_odometry_velodyne/dataset/sequences/" + sequence_number + "/velodyne/" 
                            << std::setfill('0') << std::setw(6) << line_num << ".bin";
    

编译运行

修改完参数后要保存文件,重新编译运行ros包,然后刷新一下工作空间。

namt:~/cat_kin_ws$ catkin_make
namt:~/cat_kin_ws$ source ./devel/setup.bash

开始运行

namt:~/cat_kin_ws$roslaunch aloam_velodyne kitti_helper.launch 

新终端,打开rviz

namt:~/cat_kin_ws$ rviz

A-LOAM源码编译运行_第1张图片

  • 在图示的地方条件左目、右目图像,点云
  • 然后因为点云的默认坐标是map,修改为程序中的camera_init,然后若觉得lidar束太小,可以修改尺寸。

A-LOAM源码编译运行_第2张图片

A-LOAM源码编译运行_第3张图片

以play bag的方式运行

  1. 首先在新终端起一个roscore

  2. 然后在kitti数据集bag文件目录下play bag

    rosbag play kitti.bag
    
  3. 在工作空间目录下使用rviz实时查看,然后同上边一样添加左右图像、点云,修改坐标系。效果和使用结点一样。

最终效果图:

A-LOAM源码编译运行_第4张图片

你可能感兴趣的:(SLAM,ROS,ubuntu,其他)