运行A-LOAM问题记录
ceres问题
- 需要重新安装ceres库,十四讲中的ceres库太老,不适用。从官网下载安装稳定版的ceres库。点击
latest stable release
下载,不建议适用git克隆(太慢)。 - 在编译ceres库的时候,程序卡死,建议多编译几次,安装官网教程来,并行数选择 2 2 2,太高会卡死。
catkin_make
编译A-LOAM
中ceres
报错,新版的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)
其他教程
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
- 在图示的地方条件左目、右目图像,点云
- 然后因为点云的默认坐标是
map
,修改为程序中的camera_init
,然后若觉得lidar束太小,可以修改尺寸。
以play bag的方式运行
-
首先在新终端起一个roscore
-
然后在kitti数据集bag文件目录下play bag
rosbag play kitti.bag
-
在工作空间目录下使用rviz实时查看,然后同上边一样添加左右图像、点云,修改坐标系。效果和使用结点一样。
最终效果图: