连接RealSense D435I运行stella vslam触发段错误的问题求助
连接RealSense D435I运行stella_vslam触发段错误的排查求助
问题描述
连接RealSense D435I相机运行stella_vslam项目时触发段错误。已尝试更新相机驱动及相关配置文件,问题未解决。该相机在包括当前运行项目的设备在内的多个设备上均可正常工作。
GDB调试错误栈信息
--Type for more, q to quit, c to continue without paging--c Thread 9 "run_slam" received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x7fffe2ffd700 (LWP 18451)] 0x00007ffff715ba08 in cv::_InputArray::size(int) const () from /usr/local/lib/libopencv_core.so.405 (gdb) bt #0 0x00007ffff715ba08 in cv::_InputArray::size(int) const () at /usr/local/lib/libopencv_core.so.405 #1 0x00007ffff2a35140 in cv::imshow(cv::String const&, cv::_InputArray const&) () at /usr/local/lib/libopencv_highgui.so.3.4 #2 0x00007ffff67c1d96 in pangolin_viewer::viewer::run() (this=0x7fffffffd290) at /usr/local/include/opencv2/core/cvstd.inl.hpp:81 #3 0x000055555559cf76 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<tracking(std::shared_ptr<stella_vslam_ros::system> const&, std::shared_ptr<stella_vslam::config> const&, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda()#1}> > >::_M_run() () #4 0x00007ffff63b8de4 in () at /lib/x86_64-linux-gnu/libstdc++.so.6 #5 0x00007ffff6de1609 in start_thread (arg=) at pthread_create.c:477 #6 0x00007ffff60a5133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
执行命令
gdb -ex r --args /home/user/catkin_ws/devel/lib/stella_vslam_ros/run_slam -v ~/stella_vslam/build/orb_vocab.fbow -c ~/stella_vslam/example/euroc/EuRoC_D435i.yaml --map-db-out ~/my_maps/map.msg
排查建议
- 修复OpenCV版本冲突:错误栈中同时出现OpenCV 4.x(libopencv_core.so.405)和OpenCV 3.x(libopencv_highgui.so.3.4)的库,版本不兼容会导致调用崩溃。需统一系统中OpenCV版本,清理stella_vslam的build目录后重新编译,确保所有依赖链接到同一版本的OpenCV。
- 验证图像输入有效性:段错误发生在
cv::imshow调用时,说明传入的图像数组可能为空或无效。检查相机帧读取逻辑,确认viewer线程获取的是完整、有效的图像数据,可在pangolin_viewer::viewer::run()中添加图像有效性判断。 - 核对相机配置文件:确认
EuRoC_D435i.yaml中的图像尺寸、帧率、内参等参数与D435I实际参数完全匹配,参数不匹配可能导致图像数据解析异常。 - 重新编译依赖库:若pangolin是基于旧版本OpenCV编译的,需重新编译pangolin并链接到当前使用的OpenCV版本,再重新编译stella_vslam。
内容的提问来源于stack exchange,提问作者Nikitos kotov
相关产品推荐
相关产品推荐

