Ubuntu16.04+ROS Kinetic环境下svo编译运行

本文详细介绍了在ROS环境下搭建SVO( Semi-direct Visual Odometry)SLAM系统的全过程,包括所需库的安装如Sophus、Fast、g2o、vikit及ROS依赖项,以及SVO的编译和运行步骤,最后通过标准数据集验证系统运行。

准备工作:

  1. 安装Sophus(这个库是维护的比较好的一个李群和李代数的库)

注: 其实你在运行其他版本的slam系统的时候大概率已经安装过,不过这里面执行一下,无伤大雅,也不会搞乱你的系统。

#catkin_ws 是自己创建的ROS工作空间,在之前的博客里面也有创建ROS工作空间教程
cd catkin_ws/src/SVO  #后面源代码拷贝到这个目录下,所以将svo需要的库也放在这里面
git clone https://github.com/strasdat/Sophus.git
cd Sophus
git checkout a621ff
mkdir build
cd build
cmake ..
make

  2. 安装Fast(用于Fast角点提取的一个库)

cd catkin_ws/src/SVO
git clone https://github.com/uzh-rpg/fast.git
cd fast
mkdir build
cd build
cmake ..
make

3. 安装g2o(一个非线性优化库,也和sophus一样,你大概率已经安装过,可选,但建议安装,至于环境变量,其实无需设置,执行完下面的命令即可)

cd catkin_ws/src/SVO
git clone https://github.com/RainerKuemmerle/g2o.git
cd g2o
mkdir build
cd build
cmake ..
make
sudo make install

4. 安装vikit(这个其实是视觉开发工具包,vision kit,尤其是pcl非常依赖这个库,强烈建议安装。但有时候不同的版本适配不同的slam系统。svo可以使用下面的安装方式)

cd catkin_ws/src/SVO
git clone https://github.com/uzh-rpg/rpg_vikit.git

5. ROS的依赖项(主要是cmake-modules,我用的Ubuntu的版本是Ubuntu16.04+ros-kinetic)我之前并没有安装这个依赖项,发生了很多cmake-modules的问题,解决方式也很粗暴,找不到cmake-modules,那我就去对应的CMakeLists.txt删掉对cmake-modules的依赖,结果竟然编译运行成功了。)但为了以防万一,还是建议安装下面的依赖项。

sudo apt-get install ros-indigo-cmake-modules 
  #indigo是我ros的版本,可以换成自己的,比如我的是kinetic,那就执行
//sudo apt-get install ros-kinetic-cmake-modules 

SVO编译运行:

安装和编译

## 下载
cd catkin_ws/src/SVO
git clone https://github.com/uzh-rpg/rpg_svo.git

## 编译
cd  ~/catkin_ws/  # 进入ros工作空间
catkin_make       #执行后会在catkin_ws /build和/devel 生成相应文件

note:

##在这里要注意下,opencv的版本时3.x的。我用的是opencv3.2的版本,如果报了关于opencv的错误,记得修改CmakeLists.txt,
把
#findpackage(opencv required)
修改为:
#findpackage(opencv 3 required)

用ROS测试标准数据集

1、首先是数据集下载,强烈推荐分段续传的方式进行数据集下载,数据集较大,约1.7G,分段续传方式很快:

wget -c rpg.ifi.uzh.ch/datasets/airground_rig_s3_2013-03-18_21-38-48.bag
## 下载到catkin_ws目录下就可以

2、打开新的终端

cd catkin_ws
source devel/setup.bash
roslaunch /home/<用户名>/catkin_ws/src/SVO/rpg_svo/svo_ros/launch/test_rig3.launch

3、打开新的终端

rosrun rviz rviz -d /home/<用户名>/catkin_ws/src/SVO/rpg_svo/svo_ros/rviz_config.rviz

4、打开新的终端,运行数据集

cd catkin_ws
rosbag play airground_rig_s3_2013-03-18_21-38-48.bag 

然后就运行成功了~~~~

5、下一步打算运行在自己的usb摄像头下,奈何才疏学浅,一直未能成功,还望大佬多多指教,在此感激不尽................

<think>嗯,用户问的是在Ubuntu 16.04ROS环境下能否使用PCL 1.9。首先,我需要确认Ubuntu 16.04的默认仓库里有没有PCL 1.9的包。根据引用[1],里面提到Ubuntu Xenial(也就是16.04)的Required Support里PCL版本是1.7.2,而Debian Stretch是1.8.0。这说明官方支持的版本比较旧,可能没有1.9。 然后,用户可能想用ROS Kinetic,因为Ubuntu 16.04通常对应ROS Kinetic。我需要查ROS Kinetic是否支持PCL 1.9。引用[3]中提到安装的包是ros-kinetic-pcl,这通常对应的是ROS官方维护的PCL版本。通常ROS Kinetic的PCL是基于1.7或1.8的,因为官方源里的版本可能较低。 接下来,用户可能需要从源码编译PCL 1.9。不过这样做可能会有兼容性问题,比如依赖的库如Boost、CMake等是否符合要求。引用[1]中的Boost版本在Xenial是1.58,而PCL 1.9可能需要更高版本的Boost。这时候可能需要用户自行升级Boost,但这可能会影响系统其他依赖旧版本Boost的软件。 另外,用户提到的引用[3]里安装的是ros-kinetic-octomap-*和cartographer,这些可能与PCL有关联,但可能还是基于旧版PCL。如果用户强行安装PCL 1.9,可能需要重新编译ROS中的相关包,比如PCL的ROS接口,确保它们兼容新版。这个过程可能会比较繁琐,容易出错,比如引用[2]中的错误就是因为节点类型找不到,可能和依赖版本不匹配有关。 最后,用户可能需要权衡利弊。如果项目不需要PCL 1.9的新功能,建议使用官方支持的1.7或1.8版本。如果需要新功能,可以尝试源码编译,但要做好处理依赖冲突和兼容性问题的准备。同时,提醒用户注意备份系统,避免升级导致其他软件出现问题。</think>### 关于Ubuntu 16.04ROS环境下使用PCL 1.9的兼容性分析 根据提供的信息和ROS官方文档[^1][^3],以下是关键分析步骤: 1. **Ubuntu 16.04的默认PCL版本** Ubuntu 16.04(Xenial)的官方仓库中,PCL版本为**1.7.2**(见引用[1]表格)。而PCL 1.9未在官方支持的列表中,需通过源码编译或第三方仓库安装。 2. **ROS Kinetic的PCL依赖** ROS Kinetic(对应Ubuntu 16.04)的默认PCL软件包为`ros-kinetic-pcl`,其基于**PCL 1.8.x**构建。若强行安装PCL 1.9,可能导致以下问题: - 头文件路径冲突(例如`/usr/include/pcl-1.7`与`/usr/local/include/pcl-1.9`); - 动态库符号不兼容(例如`libpcl_common.so.1.7`与`libpcl_common.so.1.9`)[^1]。 3. **手动编译PCL 1.9的可行性** 若仍需使用PCL 1.9,需从源码编译并隔离环境: ```bash # 下载源码 git clone https://github.com/PointCloudLibrary/pcl.git cd pcl && git checkout pcl-1.9.1 mkdir build && cd build cmake -DCMAKE_INSTALL_PREFIX=/opt/pcl-1.9 .. make -j4 sudo make install ``` **注意**:编译后需手动设置`LD_LIBRARY_PATH`和`PYTHONPATH`以指向新版本路径,避免与系统默认版本冲突[^2]。 4. **兼容性风险与替代方案** - 若项目中依赖ROS的`pcl_ros`等模块,需重新编译相关ROS包以适配PCL 1.9; - 建议优先使用官方支持的PCL 1.8.x版本,或升级至Ubuntu 18.04ROS Melodic默认支持PCL 1.9)。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值