error: invalid new-expression of abstract class type ‘PoseSE3Parameterization’ 251 | probl

在编译isc_loam时遇到一下问题,后来经网上查找原来是最新版本的 Ceres Solver (v 2.1.0) 弃用了 ceres::LocalParameterization API。今后这将被删除。libmv 使用 Ceres Solver 进行捆绑调整。libmv 应更新为使用 ceres::Manifold (由 ceres 版本号保护)而不是 ceres::LocalParameterization。

 error: expected class-name before ‘{’ token
   40 | class PoseSE3Parameterization : public ceres::LocalParameterization {
problem.AddParameterBlock(parameters, 7, new ceres::LocalParameterization);
替换
problem.AddParameterBlock(parameters, 7, new ceres::EigenQuaternionManifold());

官方文档显示

EigenQuaternionParameterization is deprecated. It will be
removed in version 2.2.0 of Ceres Solver. Please use EigenQuaternionManifold instead.

证明EigenQuaternionParameterization已经过时,需要使用EigenQuaternionManifold替换,即:

error: invalid new-expression of abstract class type ‘PoseSE3Parameterization’
  251 |         problem.AddParameterBlock(parameters, 7, new PoseSE3Parameterization());
class PoseSE3Parameterization : public ceres::LocalParameterization {
public:
	
    PoseSE3Parameterization() {}
    virtual ~PoseSE3Parameterization() {}
    virtual bool Plus(const double* x, const double* delta, double* x_plus_delta) const;
    virtual bool ComputeJacobian(const double* x, double* jacobian) const;
    virtual int GlobalSize() const { return 7; }
    virtual int LocalSize() const { return 6; }
};
//替换//
class PoseSE3Parameterization : public ceres::Manifold {
public:
	
    PoseSE3Parameterization() {}
    virtual ~PoseSE3Parameterization() {}
    virtual bool Plus(const double* x, const double* delta, double* x_plus_delta) const;
    virtual bool ComputeJacobian(const double* x, double* jacobian) const;
    virtual int GlobalSize() const { return 7; }
    virtual int LocalSize() const { return 6; }
};

  • 12
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值