这里是Maplab的简介
这里是Maplab安装编译的顺序以及遇到的问题:
1.ceres-solver下载不了,编译不过去
解决方案:参考官方的Q&A中的Opencv安装异常
然后编译顺利通过了。
这里额外建议两点:
1.新建工作空间,例如maplab_ws
$ mkdir -p ~/dev/maplab_ws/src
$ cd ~/dev/maplab_ws/src
$ catkin_init_workspace
$ cd ~/
$ sudo gedit .bashrc
将export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/你*的*名*字/dev/maplab_ws/src 加入到有catkin_ws的那行的下面,你的名字用自己的名字代替。
$ cd ~/dev/maplab_ws/
$ catkin_make
$source devel/setup.bash
2. 校园网网线直连,或者自己有全局科学上网也可以。
运行Euroc dataset按照官网的教程以及这位大神的总结都行,都可以成功跑起来。
下面是运行自己的数据集:
需要更改/home/xxx/dev/maplab_ws/src/maplab/applications/rovioli/scripts/tutorials文件里面的tutorial_euroc_live文件
或者改别的也可以,这里给出我修改的:
#!/usr/bin/env bash
# Script to run ROVIOLI from a Euroc live data source (e.g., Euroc bag file with rosbag play).
# Usage: tutorial_euroc <output save folder> [<additional rovioli flags>]
LOCALIZATION_MAP_OUTPUT=$1
NCAMERA_CALIBRATION="/home/xxx/dev/maplab_ws/src/maplab/applications/rovioli/share/ncamera-euroc.yaml"
IMU_PARAMETERS_MAPLAB="/home/xxx/dev/maplab_ws/src/maplab/applications/rovioli/share/imu-adis16488.yaml"
IMU_PARAMETERS_ROVIO="/home/xxx/dev/maplab_ws/src/maplab/applications/rovioli/share/imu-sigmas-rovio.yaml"
REST=$@
rosrun rovioli rovioli \
--alsologtostderr=1 \
--v=2 \
--ncamera_calibration=$NCAMERA_CALIBRATION \
--imu_parameters_maplab=$IMU_PARAMETERS_MAPLAB \
--imu_parameters_rovio=$IMU_PARAMETERS_ROVIO \
--datasource_type="rostopic" \
--save_map_folder="$LOCALIZATION_MAP_OUTPUT" \
--map_builder_save_image_as_resources=false \
--optimize_map_to_localization_map=true \
--detection_visualize_keypoints=true \
--feature_tracker_visualize_feature_tracks=true \
--feature_tracker_visualize_keypoint_matches=true \
--feature_tracker_visualize_keypoints=true \
--feature_tracker_visualize_keypoints_individual_frames=true \
--publish_debug_markers=true \
--rovioli_visualize_map=true $REST
然后需要注意的是需要将自己录制的数据集在播放的时候remap成Euroc 数据集的topic
再者需要调一些内参等,参考上述的三个yaml文件中的内容修改。
以上,应该能成功运行。
运行自己的数据集
传感器是intel RealSense D435i,这款相机自带rgb和imu,相当于是ZR300的一个改款小升级。
不过这款传感器的IMU出厂没有标定过,相机内参可以从rs-sensor-control中读取,也可以自行标定。
博主这里用kalibr标定了相机、IMU;然后对相机的launch文件进行修改。
这里博主对几个位置进行了修改,参考了篇博客:参考博客
然后对配置文件进行修改,需要修改的三个配置文件是上面提到的用绝对路径指向的三个yaml文件。
然后再对launch文件进行修改,修改指向的yaml文件(如果你改了名字的话)。(这里我尝试新建了一个launch文件,不过没launch起来)
然后按照之前的步骤,在工作空间中运行
rosrun rovioli tutorial_euroc_live /home/xxx/dataset/maplab/
后面那个是博主存地图的地方。
然后就是喜闻乐见的报错环节:
这个问题是:
ROVIO rejected image measurement. Latency is too large.
然后参考github上的issue:issue
把相关的文件中的检测注释掉,就能跑起来了,不过效果不太行。