LearnVIORB 项目编译实现及双目ROS 补充

本文涉及的产品
资源编排,不限时长
简介: LearnVIORB 项目编译实现及双目ROS 补充

1. 下载LearnVIORB

$ cd catkin_ws/src
$ git clone https://github.com/jingpang/LearnVIORB

2.进入LearnVIORB目录,运行 ./build.sh,出现“ error: static assertion failed: YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY” 如下

/usr/include/eigen3/Eigen/src/Core/util/StaticAssert.h:32:40: error: static assertion failed: YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY
     #define EIGEN_STATIC_ASSERT(X,MSG) static_assert(X,#MSG);

解决:

在LearnVIORB项目下,进入到Thirdparty/g2o/g2o/solvers,修改linear_solver_eigen.h文件

//1.找到line 57:
typedef Eigen::PermutationMatrix<Eigen::Dynamic, Eigen::Dynamic, SparseMatrix::Index> PermutationMatrix;
//2.修改为:
typedef Eigen::PermutationMatrix<Eigen::Dynamic, Eigen::Dynamic, int> PermutationMatrix;

3.继续运行 ./build.sh,出现

[ 33%] Linking CXX executable ../VIO
/usr/bin/ld: CMakeFiles/VIO.dir/src/ros_vio.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
collect2: error: ld returned 1 exit status
CMakeFiles/VIO.dir/build.make:278: recipe for target '../VIO' failed
make[2]: *** [../VIO] Error 1
CMakeFiles/Makefile2:356: recipe for target 'CMakeFiles/VIO.dir/all' failed
make[1]: *** [CMakeFiles/VIO.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2
Launch file in Examples/ROS/ORB_VIO/launch.
Modify the configuration file config/euroc.yaml
Run as: roslaunch ORB_VIO testeuroc.launch

针对“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”

解决:

打开Example/ROS/ORB_VIO/CMakeList.txt  在line51 后加上 -lboost_system 即可,如下

set(LIBS 
${OpenCV_LIBS} 
${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
-lboost_system
)

3. run ./build.sh 通过

4. 运行euroc demo,下载rosbag  from http://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets,run

Open a terminal run
$ roscore
 Open another terminal run
$ rosbag play MH_01_easy.bag 
 Open another terminal run
$ roslaunch ORB_VIO testeuroc.launch

5. 编写 ros_orb_vio_stereo.cc


相关实践学习
使用ROS创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
目录
相关文章
|
3月前
|
Linux 编译器 开发工具
【Linux快速入门(三)】Linux与ROS学习之编译基础(Cmake编译)
【Linux快速入门(三)】Linux与ROS学习之编译基础(Cmake编译)
169 2
|
4月前
|
Linux 编译器 C语言
【Linux快速入门(一)】Linux与ROS学习之编译基础(gcc编译)
【Linux快速入门(一)】Linux与ROS学习之编译基础(gcc编译)
|
4月前
|
Linux 开发工具
【Linux快速入门(二)】Linux与ROS学习之编译基础(make编译)
【Linux快速入门(二)】Linux与ROS学习之编译基础(make编译)
182 0
|
6月前
|
机器人 Shell 开发者
ROS2教程08 ROS2的功能包、依赖管理、工作空间配置与编译
这篇文章是关于ROS2(Robot Operating System 2)中功能包、依赖管理、工作空间配置和编译的教程,涵盖了ROS2工作空间的概念、如何获取和安装功能包的依赖、构建工作空间的步骤,以及如何创建和管理ROS2功能包,包括使用命令行工具对功能包进行操作的方法。
785 0
ROS2教程08 ROS2的功能包、依赖管理、工作空间配置与编译
ROS创建工作空间添加包并编译
ROS创建工作空间添加包并编译
258 0
ROS noetic 安装编译Cartographer踩坑记录
ROS noetic 安装编译Cartographer踩坑记录
821 0
ROS noetic 安装编译Cartographer踩坑记录
ROS学习-编译Package包
ROS学习-编译Package包
129 0

推荐镜像

更多