mkdir -p ~/VINSMono_ws/src
cd .. //空的依然可以编译他
catkin_make //ROS专属的编译命令
source devel/setup.bash //在'devel'文件夹里面你可以看到几个setup.*sh文件。
//source这些文件中的任何一个都可以将当前工作空间设置在ROS工作环境的最顶层.
echo $ROS_PACKAGE_PATH //保证工作空间已配置正确需确保ROS_PACKAGE_PATH环境变量包含你的工作空间目录
运行数据集时:
/home/fb/VINSMono_ws/src/config/euroc/euroc_config.yaml
中的load_previous_pose_graph: 0-----改为---->>load_previous_pose_graph: 1
反之用实际cam和IMU时改为0.
roslaunch vins_estimator euroc.launch
roslaunch vins_estimator vins_rviz.launch
rosbag play ~/VINSMono_ws/dataset/MH_01_easy.bag
开三个terminal运行launch文件,每个命令行之前需要source一下:
source ~/VINSMono_ws/devel/setup.bash
roslaunch benchmark_publisher publish.launch sequence_name:=MH_05_difficult
(绿线是VINS结果,红线是地面真相)。
运行没有外部参数的 EuRoC 。将在线校准它们。将第一个命令替换为:
roslaunch vins_estimator euroc_no_extrinsic_param.launch
该配置文件中没有外部参数。等待几秒钟进行初始校准。有时不会感觉到任何时间差异,校准很快完成。
4.1地图合并
演示MH_01包后,可以继续播放MH_02包,MH_03包…系统将根据循环关闭合并。
4.2地图重用
地图保存
在配置文件中设置pose_graph_save_path(YOUR_VINS_FOLEDER / config / euroc / euroc_config.yaml)。播放MH_01包后,在vins_estimator终端输入s,然后输入。将保存当前姿势图。
地图加载
将load_previous_pose_graph设置为1。系统将从pose_graph_save_path加载先前的姿势图。然后可以演示MH_02包。新序列将与先前的姿势图对齐。
熟悉ROS并且可以在ROS主题中获得具有原始度量测量值的摄像头和IMU,可以按照以下步骤设置设备。
5.1、 在配置文件中更改主题名称。
图像应超过20Hz,IMU应超过100Hz。图像和IMU都应该具有准确的时间戳。IMU应包含绝对加速度值,包括重力。
5.2、摄像机校准:
支持针孔模型和MEI模型。可以使用您喜欢的任何工具校准相机。只需以正确的格式在配置文件中写入参数即可。如果使用滚动快门相机,请仔细校准的相机,确保重投影误差小于0.5像素。
5.3、 Camera-Imu外在参数:
如果已经看过EuRoC和AR演示的配置文件,可以发现其可以在线估算和优化它们。如果熟悉转换,可以通过眼睛或手动测量来确定旋转和位置。然后将这些值写入config作为初始猜测。估算器将在线改进外部参数。如果对相机-IMU转换一无所知,只需忽略外部参数并将estimate_extrinsic设置为2,并在开始时将设备设置旋转几秒钟。当系统成功运行时,将保存校准结果。可以将这些结果用作下次的初始值。如何设置外部参数的示例在extrinsic_parameter_example中
5.4、 时间校准:
大多数自制的视觉惯性传感器组是不同步的。可以将estimate_td设置为1以在线估计相机和IMU之间的时间偏移。
5.5、 滚动快门:
对于滚动快门相机(仔细校准,重新投影误差在0.5像素以下),将rolling_shutter设置为1.此外,应设置滚动快门读数时间rolling_shutter_tr,它来自传感器数据表(通常为0-0.05秒,不是曝光时间) )。不要尝试网络摄像头,网络摄像头太可怕了。
5.6、其他参数设置:详细信息包含在配置文件中。
5.7、不同设备的性能:
(全局快门摄像头+同步高端IMU,例如VI-Sensor)>(全局快门摄像头+同步低端IMU)>(全局摄像头+非同步高频IMU)>(全局摄像头+非同步低频IMU)>(滚动摄像机+非同步低频IMU)。