ubuntu20运行VINS-Fusion报错

博客主要讲述在Ubuntu20系统运行VINS-Fusion时遇到的报错问题。使用catkin_make报错可在优快云解决,但启动vins_node节点会出现“段错误”,原因是cv::FileStorage读取yaml文件报错,解决方案是在camera_models里将cmakelist的opencv版本改为4。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ubuntu20运行VINS-Fusion报错

Ubuntu20运行VINS-Fusion,catkin_make报错可以csdn解决;

但是启动vins_node节点的时候,就会显示“段错误”,这是因为cv::FileStorage读取yaml文件的时候,报错了;

解决方案:

在camera_models中,把cmakelist的opencv版本改为4;

cmake_minimum_required(VERSION 2.8.3)
project(camera_models)

set(CMAKE_BUILD_TYPE "Release")
set(CMAKE_CXX_FLAGS "-std=c++11")
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -fPIC")

find_package(catkin REQUIRED COMPONENTS
    roscpp
    std_msgs
    )

find_package(Boost REQUIRED COMPONENTS filesystem program_options system)
include_directories(${Boost_INCLUDE_DIRS})

**find_package(OpenCV 4 REQUIRED)**

# set(EIGEN_INCLUDE_DIR "/usr/local/include/eigen3")
find_package(Ceres REQUIRED)
include_directories(${CERES_INCLUDE_DIRS})


catkin_package(
    INCLUDE_DIRS include
    LIBRARIES camera_models
    CATKIN_DEPENDS roscpp std_msgs
#    DEPENDS system_lib
    )

include_directories(
    ${catkin_INCLUDE_DIRS}
    )

include_directories("include")

add_executable(Calibrations 
    src/intrinsic_calib.cc
    src/chessboard/Chessboard.cc
    src/calib/CameraCalibration.cc
    src/camera_models/Camera.cc
    src/camera_models/CameraFactory.cc
    src/camera_models/CostFunctionFactory.cc
    src/camera_models/PinholeCamera.cc
    src/camera_models/PinholeFullCamera.cc
    src/camera_models/CataCamera.cc
    src/camera_models/EquidistantCamera.cc
    src/camera_models/ScaramuzzaCamera.cc
    src/sparse_graph/Transform.cc
    src/gpl/gpl.cc
    src/gpl/EigenQuaternionParameterization.cc)

add_library(camera_models
    src/chessboard/Chessboard.cc
    src/calib/CameraCalibration.cc
    src/camera_models/Camera.cc
    src/camera_models/CameraFactory.cc
    src/camera_models/CostFunctionFactory.cc
    src/camera_models/PinholeCamera.cc
    src/camera_models/PinholeFullCamera.cc
    src/camera_models/CataCamera.cc
    src/camera_models/EquidistantCamera.cc
    src/camera_models/ScaramuzzaCamera.cc
    src/sparse_graph/Transform.cc
    src/gpl/gpl.cc
    src/gpl/EigenQuaternionParameterization.cc)

target_link_libraries(Calibrations ${Boost_LIBRARIES} ${OpenCV_LIBS} ${CERES_LIBRARIES})
target_link_libraries(camera_models ${Boost_LIBRARIES} ${OpenCV_LIBS} ${CERES_LIBRARIES})
<think>好的,我需要帮用户解决在Ubuntu 20.04上配置VINS-Fusion以使用Intel Realsense D455摄像头的问题。首先,我得回顾一下用户提供的引用内容,看看有没有相关的配置步骤或者已知的问题。 根据引用[1]和[2],用户之前可能已经安装了ROS Noetic和OpenCV 4.2,但VINS-Fusion可能需要特定的版本,尤其是关于OpenCV的兼容性问题。用户提到在配置过程中可能需要修改代码中的某些部分,比如将CV_LOAD_IMAGE_GRAYSCALE改为cv::IMREAD_GRAYSCALE,如引用[4]中的例子所示。这说明用户可能需要处理OpenCV版本差异带来的代码不兼容问题。 接下来,用户需要连接D455摄像头。RealSense设备通常需要安装相应的驱动和ROS包。引用中没有直接提到RealSense的支持,但根据我的知识,需要安装librealsense SDK和ros-noetic-realsense2-camera包。这可能涉及添加RealSense的PPA源,安装依赖项,编译驱动等步骤。需要确保摄像头能被Ubuntu识别,并通过ROS节点发布图像和IMU数据。 然后,配置VINS-Fusion以适应D455的数据格式。可能需要修改配置文件中的话题名称、相机参数(内参、畸变系数)、IMU参数等。用户可能需要根据D455的规格调整这些参数,比如图像分辨率、帧率、IMU的数据频率和噪声参数。此外,VINS-Fusion可能需要同步相机和IMU数据,所以需要检查时间戳同步的问题。 在编译过程中,可能会有依赖项缺失,比如ceres-solver、eigen等,需要确保这些库已正确安装。引用[2]提到了创建工作空间并下载源码编译,用户可能需要按照这个步骤,并在编译过程中处理出现的错误。例如,OpenCV版本问题可能需要修改CMakeLists.txt或代码中的头文件引用。 运行阶段,用户需要启动RealSense的ROS节点,发布话题,然后启动VINS-Fusion的launch文件,并加载对应的配置文件。可能需要使用rosbag play来测试,或者直接实时运行摄像头数据。此外,RViz的配置也很重要,确保可视化数据正确显示。 潜在的问题可能包括:RealSense驱动安装失败、相机和IMU话题名称不匹配、参数配置错误导致算法无法初始化、时间戳不同步导致数据融合问题、OpenCV函数不兼容导致编译或运行错误。需要指导用户一步步检查这些方面,比如使用rostopic list确认话题名称,使用rs-enumerate-devices检查摄像头连接,调整配置文件中的参数等。 最后,生成相关问题需要考虑用户在配置过程中可能遇到的其他问题,比如驱动安装、ROS包依赖、参数调优等,以及如何验证配置是否成功,如何进行调试等。</think>在Ubuntu 20.04上配置VINS-Fusion使用Intel Realsense D455摄像头,需按以下步骤操作: --- ### 1. 系统环境准备 - **安装ROS Noetic**:参考[^1]完成基础ROS环境配置 - **安装OpenCV 4.2+**:Ubuntu 20.04默认包含OpenCV 4.2,若需升级可手动编译安装 - **安装librealsense SDK**: ```bash sudo apt-get install ros-noetic-realsense2-camera sudo apt-get install librealsense2-dev ``` --- ### 2. VINS-Fusion适配D455的配置 #### 2.1 修改相机参数文件 - 在`VINS-Fusion/config/realsense_d455/`中创建新配置文件(参考`euroc_stereo_imu_config.yaml`) - 关键参数调整: ```yaml # 相机内参(需用相机标定工具获取实际值) intrinsics: [640.1, 640.5, 323.7, 243.9] # fx,fy,cx,cy distortion: [k1, k2, p1, p2, k3] # D455畸变系数 imu_topic: "/camera/imu" # IMU数据话题 image0_topic: "/camera/infra1/image_rect_raw" # 左目图像 image1_topic: "/camera/infra2/image_rect_raw" # 右目图像 ``` #### 2.2 修改代码兼容性 - 在`feature_tracker.cpp`中确认图像读取方式兼容OpenCV4: ```cpp // 修改旧版CV_LOAD_IMAGE_GRAYSCALE为cv::IMREAD_GRAYSCALE(参考[^3][^4]) cv::Mat image = cv::imdecode(cv::Mat(data, 1), cv::IMREAD_GRAYSCALE); ``` --- ### 3. 启动流程 #### 3.1 启动RealSense节点 ```bash roslaunch realsense2_camera rs_camera.launch \ align_depth:=true \ enable_gyro:=true \ enable_accel:=true ``` #### 3.2 运行VINS-Fusion ```bash roslaunch vins vins_rviz.launch rosrun vins vins_node ~/catkin_ws/src/VINS-Fusion/config/realsense_d455/config.yaml ``` --- ### 4. 常见问题解决 1. **IMU与图像数据不同步** - 检查时间戳对齐,可通过`rostopic hz /camera/imu`和`rostopic hz /camera/infra1/image_rect_raw`验证 - 在相机启动参数中添加`unite_imu_method:=linear_interpolation` 2. **特征点跟踪失败** - 检查相机标定参数准确性,建议使用`kalibr`工具重新标定 - 调整`config.yaml`中的`min_dist`和`max_cnt`参数 3. **OpenCV符号冲突** - 若出现`undefined reference to cv::xxx`错误,需统一OpenCV版本(参考[^2]) ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值