SVO在ubuntu1804, ROS melodic上运行及错误解决
环境安装主要参考SVO作者,网址。
首先你要有装ROS melodic,这里不再多说。总共要安装两个库,分别是Sophus和FAST。
然后在主目录创建一个文件夹,命名为workspace,执行以下命令安装Sophus库。
cd workspace git clone https://github.com/strasdat/Sophus.git cd Sophus git checkout a621ff mkdir build cd build cmake .. make sudo make install
执行以下命令安装FAST库。
cd workspace git clone https://github.com/uzh-rpg/fast.git cd fast mkdir build cd build cmake .. make
sudo make instal
这两个库都是在workspace文件夹下的,然后在workspace中再创建dataset和src文件夹,一个用来装数据集一个用来装代码。数据集下载链接,1.8G
然后下载vikit,它提供了SVO需要的相机模型、数学和插值函数等。执行以下命令。
cd src git clone https://github.com/uzh-rpg/rpg_vikit.git
安装ROS依赖项。执行以下命令
sudo apt-get install ros-melodic-cmake-modules
下载SVO代码。执行以下命令。
cd src git clone https://github.com/uzh-rpg/rpg_svo.git
cd ..
最后执行catkin_make命令,当然这是理想的流程,接下去介绍我在实际操作中出现的错误。
Sophus 错误:fatal error: sophus/se3.h: No such file or directory
将src文件夹中rpg_svo/svo目录下的cmakelists.txt中,在73行左右,${Sophus_INCLUDE_DIRS}改为绝对路径,我的是"/home/wjb1804/workspace/Sophus",
同样的操作还要对在rpg_svo/svo_ros下的cmakelists.txt进行,在58行。
然后对rpg_vikit/vikit_common下的cmakelists.txt也进行同样操作,在33行。还要修改66行的链接库地址,也改成绝对路径,我的是在"/usr/local/lib/libSophus.so"
对rpg_vikit/vikit_ros,在cmakelists.txt的29行,修改成绝对路径"/home/wjb1804/workspace/Sophus"
改完所有cmakelists.txt后再进行catkin_make操作。
错误:unit_complex_.real() = 1.; ^~
unit_complex_.imag() = 0.;
^~
解决方法:找到workspace/Sophus/sophus/so2.cpp,打开,将第31行改成unit_complex_.real(1.);
32行改成unit_complex_.imag(0.);
然后进行catkin_make操作,应该能编译完成。
然后开始跑代码,总共需要打开四个终端,一个roscore,另外三个启动程序:
可以直接在之前的终端中按ctrl+shift+T来添加终端,按三次,原来的终端输入roscore,另外三个终端需要执行的命令如下(确保三个终端都在workspace目录下即cd workspace)。
source devel/setup.bash
roslaunch svo_ros test_rig3.launch
会有黄色的警告提示没找到参数,这没关系。
第二个终端启动rviz,改成你对应的src/rpg_svo/svo_ros/rviz_config.rviz路径。
source devel/setup.bash
rosrun rviz rviz -d src/rpg_svo/svo_ros/rviz_config.rviz
第三个终端。
source devel/setup.bash rosbag play dataset/airground_rig_s3_2013-03-18_21-38-48.bag
然后我又出错,报错内容:[svo-1] process has died [pid 2709, exit code -11
解决方法,修改cmaklists.txt,删除-march=native。
src/rpg_svo/svo_ros目录下的cmaklists.txt的第8行。
src/rpg_svo/svo目录下的cmaklists.txt的第34行。
src/rpg_vikit/vikit_common目录下的cmaklists.txt的第10行。
src/rpg_vikit/vikit_ros目录下的cmaklists.txt的第8行。
然后重新catkin_make操作即可,再运行代码。
成功截图:其实在rviz界面还是有警告,但是程序能跑,我也没有深入研究。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现