Airsim中运行OpenVINS和VINS_Fusion

1. 简介

本文简介在Airsim中运行OpenVINS和VINS_Fusion.

2. 参考

  1. 无人飞行器智能感知技术竞赛 赛事公告
  2. 在AirSim中控制无人机平台并采集数据
  3. OpenVINS 官网
  4. AirSim中运行VIO算法(VINS-Mono)

3. 步骤

3.1 编译

  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
  1. OpenVINS 下载安装
    参照 OpenVINS的说明文档,安装OpenVINS.

  2. VINS_Fusion下载安装
    参照VINS-Fusion的README.md, 安装VINS-Fusion.

  3. 键盘控制脚本
    这个博客中提供了一个“无人机控制“的python脚本。复制该脚本的内容,保存为本地文件"airsim_keyboard.py"。

3.2 运行

  1. 启动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'
  1. 启动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 
  1. 启动键盘控制脚本
python airsim_keyboard.py
  1. 同时录制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
  1. 录制完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轨迹对齐
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, 
### OpenVINS 的评估、性能特点及使用体验 #### 评估方法与结果 为了全面理解 OpenVINS 的表现,在多个公开基准数据集上的测试表明,该框架展示了强大的鲁棒性准确性。特别是在复杂环境下的实时处理能力方面表现出色[^1]。 #### 性能优势 OpenVINS 是一款基于视觉惯性里程计 (VIO) 技术开发的状态估计库,能够提供高精度的姿态跟踪服务。通过融合来自摄像头IMU的数据流来实现更加稳定可靠的位姿解算过程。相比于其他仅依赖单一传感器输入的方法而言,这种多模态感知方式可以有效提升系统的整体可靠性以及对外界干扰因素的抵抗能力[^2]。 #### 主要特性 - **模块化设计**:支持多种不同类型的相机配置(单目/双目/Fisheye),并允许用户自定义扩展; - **高效计算架构**:采用GPU加速技术优化图像特征提取环节,从而加快整个算法运行速度; - **易于集成部署**:提供了ROS接口方便与其他机器人组件协同工作; ```cpp // C++代码片段展示如何初始化OpenVINS节点并与ROS通信 #include <openvins_app_ros.h> int main(int argc, char *argv[]) { ros::init(argc, argv, "ov_msckf_node"); // 创建OpenVINS应用实例 ov_core::App msckf; // 加载参数文件路径作为命令行参数传入程序中 std::string param_file = "/path/to/config.yaml"; msckf.loadParams(param_file); // 启动ROS节点循环 ros::spin(); } ``` #### 用户反馈总结 从社区收集到的信息来看,大多数使用者认为 OpenVINS 易于安装设置,并且文档资料详尽易懂。对于初学者来说是一个很好的入门工具包。然而也有部分开发者指出当面对极端光照条件变化或者快速运动场景时可能会遇到一些挑战,这提示未来版本可能需要进一步改进这些方面的适应性。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值