Jetson AGX Orin 下 VINS-Fusion-ROS2安装

0、本机基础环境:

CUDA:11.4        Jetpack:5.1.2        L4T:35.4.1        Ubuntu:20.04 focal   camera:zedm
软件包:GitHub - zinuok/VINS-Fusion-ROS2: ROS2 version of VINS-Fusion

Ceres 2.2 (这样是在部署系统时遇到的主要问题),由于死心眼,不想将Ceres 降到2.2以下,在部署系统遇到了如下问题:
(首先贴一下一些博主的改错方法
XTDrone和PX4学习期间问题记录(一)_error: ‘class ceres::problem’ has no member named -优快云博客

使用Ceres-Sovler进行四元数求解优化:LocalParameterization->Manifold_ceres::localparameterization-优快云博客 )
1、

VINS-Fusion-ROS2/global_fusion/src/globalOpt.cpp:117:20: error: ‘LocalParameterization’ is not a member of ‘ceres’
  117 |             ceres::LocalParameterization* local_parameterization = new ceres::QuaternionParameterization();

类是这种的更改ceres::LocalParameterization*为ceres::Manifold*
 

2、

VINS-Fusion-ROS2/camera_models/include/camodocal/gpl/EigenQuaternionParameterization.h:4:10: fatal error: ceres/local_parameterization.h: 没有那个文件或目录
    4 | #include "ceres/local_parameterization.h"

更改#include "ceres/local_parameterization.h" -> #include "ceres/manifold.h"

 3、

VINS-Fusion-ROS2/camera_models/src/calib/CameraCalibration.cc:512:17: error: ‘class ceres::Problem’ has no member named ‘SetParameterization’; did you mean ‘SetParameterLowerBound’?
  512 |         problem.SetParameterization(transformVec.at(i).rotationData(),

Ceres 2.2版本开始,LocalParameterization方法不可用,需要用Manifold替代。

    / 上略 /
    // Build the problem.
    double q[4];
	ceres::Problem problem;
	/****************************************/
	/* 省略调用AddResidualBlock() q是参数之一*/
	/****************************************/
    ceres::Manifold* quaternion_manifold = new ceres::QuaternionManifold;
    problem.SetManifold(q, quaternion_manifold);
    / 下略 //

就是将problem.SetParameterization 改为 problem.SetManifold

4、

VINS-Fusion-ROS2/loop_fusion/src/pose_graph.h:138:24: error: ‘AutoDiffLocalParameterization’ in namespace ‘ceres’ does not name a template type
  138 |     return (new ceres::AutoDiffLocalParameterization<AngleLocalParameterization,

AutoDiffParameterization -> AutoDiffManifold

5、

/usr/local/include/ceres/autodiff_manifold.h:161:22: error: ‘class AngleLocalParameterization’ has no member named ‘Plus’
  161 |     return functor_->Plus(x, delta, x_plus_delta);

参考博主写的,这里不想复述了。 XTDrone和PX4学习期间问题记录(一)_error: ‘class ceres::problem’ has no member named -优快云博客

6、
ceres::LocalParameterization *local_parameterization = new                                                                                 PoseLocalParameterization();
改为->        ceres::Manifold* local_parameterization = new                                                                                 ceres::EigenQuaternionManifold();

7、最后祝贺你:

Finished <<< vins [1min 21s]

Summary: 4 packages finished [1min 22s]
  1 package had stderr output: vins

1、运行代码

1、ros2 run vins vins_node  /home/nvidia/RosTest/VinsFusion/src/VINS-Fusion-ROS2/config/euroc/euroc_stereo_imu_config.yaml

2、ros2 launch vins vins_rviz.launch.xml

3、ros2 bag play MH_01_easy.db3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值