SVO编译

2024-01-19 06:04
文章标签 编译 svo

本文主要是介绍SVO编译,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 软件版本
  • 错误
  • 编译
  • 运行
    • 轨迹路径保存
    • 运行TUM数据集
  • 附录
    • 针对svo slam的/svo/pose_imu转为tum格式代码

软件版本

ubuntu 20
rosnoetic
SVO SLAM
虚拟机 windows 11

错误

  1. 常见的git clone问题可以使用DevSidecar解决,在 加速服务-基本设置-绑定IP 设置为0.0.0.0,虚拟机网络连接设置为桥接,之后在虚拟机中设置网络中的 Network Proxy,IP为WindowsIP地址,端口为DevSidecar代理端口。
  2. server certificate verification failed. CAfile: none CRLfile: none。参考CSDN博客
  3. Cloning into ‘dbow2_src’…ssh: connect to host github.com port 22: Connection timed out。参考CSDN博客
cd svo_ws/src
git clone https://github.com/dorian3d/DBoW2.git
tar -cvf DBoW2.tar DBoW2
# 修改svo_ws/src/dbow2_catkin/CMakeLists.txt
ExternalProject_Add(dbow2_srcGIT_REPOSITORY git@github.com:dorian3d/DBoW2.gitCMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CATKIN_DEVEL_PREFIX}BUILD_COMMAND CXXFLAGS=-i${CATKIN_DEVEL_PREFIX}/include makeINSTALL_COMMAND make install
) 
# 改为 XXXXXX为DBoW2.tar所在路径
ExternalProject_Add(dbow2_srcURL XXXXXX/DBoW2.tarCMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CATKIN_DEVEL_PREFIX}BUILD_COMMAND CXXFLAGS=-i${CATKIN_DEVEL_PREFIX}/include makeINSTALL_COMMAND make install
) 

编译

  创建工作空间,克隆代码

mkdir -p svo_ws/src && cd svo_ws/src
cd ..
catkin config --init --mkdirs --extend /opt/ros/noetic --cmake-args -DCMAKE_BUILD_TYPE=Release -DEIGEN3_INCLUDE_DIR=/usr/include/eigen3
cd src
git clone https://github.com/uzh-rpg/rpg_svo_pro_open.git

  依赖下载

# 该步骤任选其一执行
# 1
vcs-import < ./rpg_svo_pro_open/dependencies.yaml
# 1 结束# 2
git clone https://github.com/catkin/catkin_simple.git &&\
git clone https://github.com/zurich-eye/cmake_external_project_catkin.git &&\
git clone https://github.com/ethz-asl/eigen_catkin.git &&\
git clone https://github.com/ethz-asl/eigen_checks.git &&\
git clone https://github.com/uzh-rpg/fast_neon.git &&\
git clone https://github.com/ethz-asl/gflags_catkin.git &&\
git clone https://github.com/ethz-asl/glog_catkin.git &&\
git clone https://github.com/ethz-asl/minkindr.git &&\
git clone https://github.com/ethz-asl/opengv.git &&\
git clone https://github.com/ethz-asl/minkindr_ros.git &&\
git clone https://github.com/ethz-asl/ceres_catkin.git &&\
git clone https://github.com/uzh-rpg/dbow2_catkin.git &&\
git clone https://github.com/uzh-rpg/rpg_trajectory_evaluation.git
# 2结束

  编译

touch minkindr/minkindr_python/CATKIN_IGNORE
cd rpg_svo_pro_open/svo_online_loopclosing/vocabularies && ./download_voc.sh
cd ../../..
catkin build

运行

  启动SVO核心ROS节点

source XXXXXX/devel/setup.bash
roslaunch svo_ros euroc_mono_frontend_imu.launch

  播放数据集

rosbag play  XXXXXX/DataSets/MH_01_easy.bag

  运行图片
SVO运行截图

轨迹路径保存

  svo轨迹数据通过 /svo/points 话题发布,该话题为visualization_msgs/Marker(中文参考)类型。旋转数据通过 /svo/pose_imu 发布,该话题为geometry_msgs/PoseWithCovarianceStamped(中文参考)类型。
  轨迹路径保存主要分为以下几步:

  1. 启动svo_ros
  2. 播放bag包,在开始后按下空格暂停
  3. 新开两个终端记录话题信息/svo/points和/svo/pose_imu
  4. 继续播放bag包
  5. 将/svo/pose_imu数据转化为
    进行轨迹对比时,使用tum格式进行对比。EUROC转tum命令如下
evo_traj euroc groundtruth.csv --save_as_tum

  /svo/pose_imu原始数据转化为tum格式代码见附录
  获取到真实轨迹与实际轨迹后进行对比,代码与结果如下(感觉结果有点不对,希望知道的人指出):data为真实轨迹,svo_result为ros结果

evo_traj tum data.tum svo_result.txt -p -s --align_origin -a --plot_mode=xyz --ref=data.tum

rpy
all
xyz

运行TUM数据集

待补充

附录

针对svo slam的/svo/pose_imu转为tum格式代码

in_file_path = "svo_pose_data.txt" 
out_file_path = "svo_result.txt" rfp = open(in_file_path)
wfp = open(out_file_path,"w")
file_end = False
while file_end != True:time = 0tx = 0ty = 0tz = 0qx = 0qy = 0qz = 0qw = 0for i in range(19):line = rfp.readline()if line == "":file_end = Truebreakif i == 3:time += float(line.split(":")[1])elif i == 4:time += float(line.split(":")[1])/1e9elif i == 9:tx = float(line.split(":")[1])elif i == 10:ty = float(line.split(":")[1])elif i == 11:tz = float(line.split(":")[1])elif i == 13:qx = float(line.split(":")[1])elif i == 14:qy = float(line.split(":")[1])elif i == 15:qz = float(line.split(":")[1])elif i == 16:qw = float(line.split(":")[1])else:passwrite_str = "{time} {tx} {ty} {tz} {qx} {qy} {qz} {qw}\n".format(time=time,tx=tx,ty=ty,tz=tz,qx=qx,qy=qy,qz=qz,qw=qw)# print(write_str)wfp.write(write_str)
rfp.close()
wfp.close()
print("保存完毕")

这篇关于SVO编译的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/621456

相关文章

maven 编译构建可以执行的jar包

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」👈,「stormsha的知识库」👈持续学习,不断总结,共同进步,为了踏实,做好当下事儿~ 专栏导航 Python系列: Python面试题合集,剑指大厂Git系列: Git操作技巧GO

Windows环境利用VS2022编译 libvpx 源码教程

libvpx libvpx 是一个开源的视频编码库,由 WebM 项目开发和维护,专门用于 VP8 和 VP9 视频编码格式的编解码处理。它支持高质量的视频压缩,广泛应用于视频会议、在线教育、视频直播服务等多种场景中。libvpx 的特点包括跨平台兼容性、硬件加速支持以及灵活的接口设计,使其可以轻松集成到各种应用程序中。 libvpx 的安装和配置过程相对简单,用户可以从官方网站下载源代码

Golang test编译使用

创建文件my_test.go package testsimport "testing"func TestMy(t *testing.T) {t.Log("TestMy")} 通常用法: $ go test -v -run TestMy my_test.go=== RUN TestMyTestMy: my_test.go:6: TestMy--- PASS: TestMy (0.

C++/《C/C++程序编译流程》

程序的基本流程如图:   1.预处理        预处理相当于根据预处理指令组装新的C/C++程序。经过预处理,会产生一个没有宏定义,没有条件编译指令,没有特殊符号的输出文件,这个文件的含义同原本的文件无异,只是内容上有所不同。 读取C/C++源程序,对其中的伪指令(以#开头的指令)进行处理将所有的“#define”删除,并且展开所有的宏定义处理所有的条件编译指令,如:“#if”、“

编译linux内核出现 arm-eabi-gcc: error: : No such file or directory

external/e2fsprogs/lib/ext2fs/tdb.c:673:29: warning: comparison between : In function 'max2165_set_params': -。。。。。。。。。。。。。。。。。。 。。。。。。。。。。。。。 。。。。。。。。 host asm: libdvm <= dalvik/vm/mterp/out/Inte

QT 编译报错:C3861: ‘tr‘ identifier not found

问题: QT 编译报错:C3861: ‘tr’ identifier not found 原因 使用tr的地方所在的类没有继承自 QObject 类 或者在不在某一类中, 解决方案 就直接用类名引用 :QObject::tr( )

hector_quadrotor编译总结 | ubuntu 16.04 ros-kinetic版本

hector_quadrotor编译总结 | ubuntu 16.04 ros-kinetic版本 基于Ubuntu 16.04 LTS系统所用ROS版本为 Kinetic hector_quadrotor ROS包主要用于四旋翼无人机的建模、控制和仿真。 1.安装依赖库 所需系统及依赖库 Ubuntu 16.04|ros-kinetic|Gazebo|gazebo_ros_pkgs|ge

hector_quadrotor编译总结 | ubuntu 14.04 ros-indigo版本

hector_quadrotor编译总结 | ubuntu 14.04 ros-indigo版本 基于Ubuntu 14.04 LTS系统所用ROS版本为 Indigo hector_quadrotor ROS包主要用于四旋翼无人机的建模、控制和仿真。 备注:两种安装方式可选:install the binary packages | install the source files

编译和链接那点事下

http://www.0xffffff.org/?p=357 上回书我们说到了链接以前,今天我们来研究最后的链接问题。         链接这个话题延伸之后完全可以跑到九霄云外去,为了避免本文牵扯到过多的话题导致言之泛泛,我们先设定本文涉及的范围。我们今天讨论只链接进行的大致步骤及其规则、静态链接库与动态链接库的创建和使用这两大块的问题。至于可执行文件的加载、可执行文件的运行时

编译和链接那点事上

http://www.0xffffff.org/?p=323  有位学弟想让我说说编译和链接的简单过程,我觉得几句话简单说的话也没什么意思,索性写篇博文稍微详细的解释一下吧。其实详细的流程在经典的《Linkers and Loaders》和《深入理解计算机系统》中均有描述,也有国产的诸如《程序员的自我修养——链接、装载与库》等大牛著作。不过,我想大家恐怕很难有足够的时间去研读这些厚如