ubuntu16.04 运行dso问题梳理

这个博客是唯一一个能够让我编译成功的博客,其他的博客,相同的问题,解决方案各不相同,非常繁杂;
前面的操作过程:

cd ~/ros_ws/src/ 
git clone https://github.com/JakobEngel/dso_ros 
cd .. 
export DSO_PATH=~/dso 
rosmake

遇到的最多的问题就是:

/usr/bin/ld: CMakeFiles/dso_live.dir/src/main.cpp.o: undefined reference to symbol '_ZN5boost6system15system_categoryEv'
  /usr/lib/x86_64-linux-gnu/libboost_system.so: error adding symbols: DSO missing from command line

我知道你会百度这类问题的解决方式,你可能会查找到orbslam相关博客的类似问题,你会查到跟Boost这个库相关,然后告诉你怎么解决,比如添加链接库,添加库文件的地址,复制找不到的两个库文件到dso工程下的lib文件夹下去,相信我,你大概率不会解决掉这种问题。但Ubuntu14.04却不会遇到这类问题,但仔细想想,既然16.04是更高版本的Ubuntu,怎么会让问题变得复杂呢?我们又怎么傻乎乎的回到14.04的版本去呢?事情一定不是这样解决的。

直到我看到了文首那篇博客

我遇到了里面第二、三个问题。
按照上面的博客的解决方法,我逐步尝试,终于解决掉所有问题,在此记录:
对于上面那个最常见的问题,解决方式:
打开
ros工作空间/src/dso_ros/CMakeLists.txt
修改:

原命令行:
target_link_libraries(dso_live ${DSO_LIBRARY} ${Pangolin_LIBRARIES} ${OpenCV_LIBS})
 
编辑后:
target_link_libraries(dso_live ${DSO_LIBRARY} ${Pangolin_LIBRARIES} ${OpenCV_LIBS} GL glut GLU boost_system)

然后在ros工作空间/src/dso_ros/就可以执行:

rosmake 

如果没有那么不幸,就可以编译成功了,然后问题来了,你会发现你找不到dsolive这个节点,原因是因为原版的CMakeLists.txt中把dsolive这个节点放在了/ros_ws/src/dso_ros/build/bin文件夹下,而正确的放置位置应该在/ros_ws/src/dso_ros/bin,因此你手动复制过去就可以找到这个可执行文件。有一个疑问,那就是为什么所有人编译运行DSO都会遇到问题呢?答案就是原作者开发的时候,使用的系统是14.04之前的,在14.04里面编译很简单。目前Ubuntu系统在16、18,如果想要运行就需要设置一番。
需要注意的是,运行时,你每次打开一个终端,都要进入cd ros_ws 执行一下:

source devel/setup.bash

当然你也可以把它写入到你的环境变量(在~/.bashrc 最后一行加入上述语句)里面去。

如果不想复制dsolive这个可执行程序到那个指定文件夹,就要修改CMakeLists.txt,

修改前:
set(EXECUTABLE_OUTPUT_PATH bin)

编辑后(指定可执行文件到前一个bin目录去,往前返回两级目录下的那个bin目录):
set(EXECUTABLE_OUTPUT_PATH  ../../bin)

这样无需复制dsolive也可以运行成功。

rosrun dso_ros dso_live image:=/kinect2/qhd/image_color_rect calib=src/dso_ros/camera.txt mode=1
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值