ORB_SLAM ROS编译问题:libopencv_core3.so.3.3.1,_ZN2cv6String10deallocateEv

16 篇文章 5 订阅
13 篇文章 1 订阅

文章转载自:https://blog.csdn.net/qq_43445817/article/details/100835304

感谢原作者.

ORBSLAM2地图保存、轨迹保存:https://blog.csdn.net/kyjl888/article/details/88416122
笔者首先在~/.bashrc上设置了路径:
1 sudo vim ~/.bashrc ##(gedit .bashrc)
2 export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/xiaoC/ORB_SLAM2/Examples/ROS
3 source ~/.bashrc
注意,后面这个path是笔者的路径,不同用户路径不同。

但是,slam-orbslam2与之前的orbslam编译会冲突
提示:
CMake Error at /opt/ros/kinetic/share/ros/core/rosbuild/private.cmake:102 (message):
[rosbuild] rospack found package “ORB_SLAM2” at
“/home/qian/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2”, but the
current directory is
“/home/qian/catkin_ws/src/map-orbslam/ORB_SLAM2/Examples/ROS/ORB_SLAM2”.
You should double-check your ROS_PACKAGE_PATH to ensure that packages are
found in the correct precedence order.
参考:https://www.cnblogs.com/yepeichu/p/10896201.html
理论上,这个应该要work的,不过遗憾的是,并没有。如何确认有没有work呢?方法是:
echo $ROS_PACKAGE_PATH

显示
  /home/qian/catkin_ws/src/usb_cam:/home/qian/catkin_ws/src:/opt/ros/kinetic/share:/home/qian/catkin_ws/src/map-orbslam/ORB_SLAM2/Examples/ROS
  显然之前路径已经定义到了catkin_ws/src,即未修改的ORBSLAM2的包在这个路径中;
但在执行:roscd ORB_SLAM2 时,定位到未修改的orbslam2。
方法是:
把未修改的ORBSLAM2压缩保存后,将src下的ORBSLAM2删除;
执行 roscd ORB_SLAM2 ;成功定位到 /map-orbslam/ORB_SLAM2/Examples/ROS/ORB_SLAM2

进行以下操作,
cd Examples/ROS/ORB_SLAM2
mkdir build
cd build
cmake … -DROS_BUILD_TYPE=Release
make -j
操作到:make -j时的报错
关于libboost_system
/usr/lib/x86_64-linux-gnu/libboost_system.so: error adding symbols: DSO missing from command
方法一:在Example/ros/orbslam2/中的cmakelists.txt 里面set()上加"-lboost_system",
方法二:在方法一中的cmakelists.txt的末尾添加(比较简单):
target_link_libraries(Stereo boost_system boost_filesystem)
target_link_libraries(RGBD boost_system boost_filesystem)
target_link_libraries(Mono boost_system boost_filesystem)
方法三:移动文件到orbslam2/lib中
关于libopencv_core3.so.3.3.1
没错在解决了libboost_system这个bug时,又出来一个新bug.关键是两者还那么像,相当一段时间
没有发现是新问题,还是按照libboost找解决方案。哭辽
/usr/bin/ld: CMakeFiles/RGBD.dir/src/ros_rgbd.cc.o: undefined reference to symbol ‘_ZN2cv6String10deallocateEv’
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_core3.so.3.3.1: error adding symbols: DSO missing from command line

解决方法和libboost的方法三差不多,都是移动文件至src/orb_slam2/lib中
我是将/opt/ros/kinetic/lib/x86_64-linux-gnu/文件夹下的libopencv_core3.so.3.3.1(没错就是它),移动到src/orb_slam2/lib中;
然后将example/ros/orb_slam2中的cmakelists.txt文件中set()添加
${PROJECT_SOURCE_DIR}/…/…/…/lib/libopencv_core3.so.3.3.1

set(LIBS
KaTeX parse error: Expected 'EOF', got '#' at position 15: {OpenCV_LIBS} #̲{OpenCV_LIBRARIES}
${EIGEN3_LIBS}
${Pangolin_LIBRARIES}
${PROJECT_SOURCE_DIR}/…/…/…/Thirdparty/DBoW2/lib/libDBoW2.so
${PROJECT_SOURCE_DIR}/…/…/…/Thirdparty/g2o/lib/libg2o.so
${PROJECT_SOURCE_DIR}/…/…/…/lib/libORB_SLAM2.so
${PROJECT_SOURCE_DIR}/…/…/…/lib/libopencv_core3.so.3.3.1
)
 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值