Sophus介绍

1.sophus介绍

李群和李代数是slam的优化中必不可少的工具,虽然Eigen提供了几何模块,没有提供李代数的支持,一个较好的李代数库是由Sophus库,它提供了S0(3),SE(3),。它是直接在Eigen的基础上开发的。所以不需要安装额外的依赖库,关于Eigen的使用,可以参考Eigen的介绍

2.安装

git clone https://github.com/strasdat/Sophus.git
cd Sophus/
mkdir build
cd build
cmake ..
make
sudo make install

3.使用方法

sophus提供了李群S0S,SE3,及李群和李代数之间的指数和对数映射,增量扰动模型的更新

3.1、so3

SO3的初始化

Matrix3d R=AngleAxisd(M_PI/2,Vector3d(0,0,1).toRotationMatrix();
//或者四元数
Quateriond q(R);
//李群的构造
Sophus::SO3d SO3_R(R);
Sophus::SO3d SO3_q(q);
//二者完全等价
cout<<"SO(3) from matrix: \n"<<SO3_R.matrix()<<endl;
cout<<"SO(3) from quaternion: \n"<<SO3_Q.matrix()<<endl;

so3的初始化:对数映射获得李代数

Vector3d so3=SO3_R.log();
cout<<"so3 = "<<so3.transpose();<<endl;

反对称变换

//hat为向量到反对称矩阵
Eigen::Matrix3d so3_matrix=Sophus::SO3d::hat(so3);
cout<<"so3 hat =\n"<<so3_matrix<<endl;
//相对的,vee为反对称矩阵到向量
cout<<"so3 hat vee = "<<Sophus::SO3d::vee(so3_matrix).transpose()<<endl;

增量扰动的更新

Vector3d update_so3(1e-4,0,0);
Sophus::SO3d SO3_updated=Sophus::SO3d::exp(update_so3)*SO3_R;
cout<<"SO3 update =\n"<<SO3_updated.matrix()<<endl;

3.2、SE3

对SE3的操作大同小异

		Vector3d t(1,0,0);
    Sophus::SE3d SE3_RT(R,t);
    Sophus::SE3d SE3_QT(q,t);
    cout<<"SE3 from R,t = \n"<<SE3_RT.matrix()<<endl;
    cout<<"SE3 from Q,t = \n"<<SE3_QT.matrix()<<endl;
    //李代数是一个六维向量,方便起见,起别名
    typedef Eigen::Matrix<double,6,1>Vector6d;
    Vector6d se3=SE3_RT.log();
    cout<<"se3 = "<<se3.transpose()<<endl;
    //观察输出,平移在前,旋转在后
    //同理,有hat和vee两个算符
    cout<<"se3 hat ="<<Sophus::SE3d::hat(se3)<<endl;
    cout<<"se3 hat vee = "<<Sophus::SE3d::vee(Sophus::SE3d::hat(se3)).transpose()<<endl;
    //最后演示更新
    Vector6d update_se3;
    update_se3.setZero();
    update_se3(0,0)=1e-4;
    Sophus::SE3d SE3_updated=Sophus::SE3d::exp(update_se3)*SE3_RT;
    cout<<"SE3 updated = \n"<<SE3_updated.matrix()<<endl;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值