1. 简介
本文简介在Airsim中运行OpenVINS和VINS_Fusion.
2. 参考
3. 步骤
3.1 编译
- 模拟器和Airsim_ros_wrapper下载安装
参考该工程的README.md文件,本文按照“LINUX 单机开发模式”进行配置。
(1)模拟器下载(simulator_LINUX.zip)
在浏览器中输入此网址即可开始下载:
https://stg-robomasters-hz-q0o2.oss-cn-hangzhou.aliyuncs.com/simulator/simulator_LINUX.zip
(2)airsim_ros_wrapper下载
git clone https://github.com/RoboMaster/IntelligentUAVChampionshipSimulator.git
-
OpenVINS 下载安装
参照 OpenVINS的说明文档,安装OpenVINS. -
VINS_Fusion下载安装
参照VINS-Fusion的README.md, 安装VINS-Fusion. -
键盘控制脚本
这个博客中提供了一个“无人机控制“的python脚本。复制该脚本的内容,保存为本地文件"airsim_keyboard.py"。
3.2 运行
- 启动Airsim仿真器 ( simulator_LINUX.zip )
python launcher.py
输入本机IP地址, 127.0.0.1; 启动成功之后,按键“3”, 切到 3.自主飞行-双目 模式。
2. 启动Airsim_ros_wrapper
cd ${
YourPath}/IntelligentUAVChampionshipSimulator/roswrapper
source ros/devel/setup.bash
./simulator.sh 127.0.0.1
用于将收到的Airsim中的数据通过ROS发布出来。
3. 启动OpenVINS
cd ${
YourPath}/openvins_ws
source devel/setup.bash
roslaunch ov_msckf airsim.launch
打开另一个终端,rviz显示openvins运行情况:
rviz -d '${
YourPath}/openvins_ws/src/open_vins/ov_msckf/launch/display.rviz'
- 启动VINS-Fusion
roslaunch vins vins_rviz.launch
rosrun vins vins_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_stereo_imu_config.yaml
(optional) rosrun loop_fusion loop_fusion_node ~/catkin_ws/src/VINS-Fusion/config/airsim/airsim_stereo_imu_config.yaml
- 启动键盘控制脚本
python airsim_keyboard.py
- 同时录制bag数据
录制的rosbag中,包含双目图像和IMU数据,以及无人机的轨迹真值数据。
rosbag record /airsim_node/drone_1/front_left/Scene /airsim_node/drone_1/front_right/Scene /airsim_node/drone_1/imu/imu /airsim_node/drone_1/odom_local_ned
- 录制完rosbag之后,可以参考 “https://github.com/ethz-asl/kalibr/blob/master/aslam_offline_calibration/kalibr/python/kalibr_bagextractor” , 对bag中的数据进行提取。
3.3 运行结果
- 仿真器: 在 simulator_LINUX/Settings/Stereo.json 中,设置 “ViewMode”: “NoDisplay”, 可以提高图像输出帧率。
- OpenVINS
- VINS-Fusion
- 轨迹对齐
- vio估计的轨迹
OpenVINS 的 airsim.launch 文件中,配置“ dosave ”为“true”, 可以保存下运行轨迹 “traj_estimate.txt”, 并处理为euroc格式 (t, x, y, z, qw, qx, qy, qz )。 - airsim的仿真真值
读取rosbag中的“/airsim_node/drone_1/odom_local_ned” 数据,并保存为euroc格式的轨迹文件,命名为 truth.csv - evo轨迹对齐
- vio估计的轨迹
evo_traj euroc traj_estimate.csv --ref truth.csv -a -p
3.4 相机和IMU参数配置
参考博客, 可以得到工程“simulator_LINUX/Settings/Stereo.json”中对应的相机参数(kalibr_imucam_chain.yaml)为:
%YAML:1.0
cam0:
T_imu_cam: #rotation from camera to IMU R_CtoI, position of camera in IMU p_CinI
- [0.0,