《视觉SLAM十四讲精品总结》10.1:设计前端0.1

一、框架

看一下文件夹组织: 
1、bin用来存放可执行的二进制文件。0.1版本主要是搭建SLAM库框架 
2、include/myslam存放SLAM模块的头文件,主要是.h文件,声明即可。
3、src存放源代码文件,主要是.cpp文件。
4、test文件是测试SLAM库的文件,也是.cpp文件。
5、lib存放编译好的库文件 .a .so
6、config存放配置文件,也就是需要经常修改的运行参数。这里存放在default.yaml中 
7、cmake_modules第三方库的cmake文件,在使用g2o之类的库时会用到。

二、数据结构类

Frame:关键帧,相机位姿估计可以用关键帧描述。

MapPoint:特征点。通常,会把特征点放在地图中,并将新来的帧与地图中特征点进行匹配,完成位姿估计。

Map:管理特征点,添加/删除特征点。

Camera:相机参数,内参、外参以及世界、相机、像素坐标系转换。

Config:参数文件的读取。

1、Camera类:

存储相机的内参K和外参T,有三坐标系(世界坐标系、相机坐标系、像素坐标系)下点的坐标转换函数。

头文件.h

#ifndef CAMERA_H
#define CAMERA_H

#include "myslam/common_include.h"//一些常用的include
namespace myslam
{
//相机类
class Camera
{
public:
	//1. 声明变量,相机智能指针、内参、尺度
    typedef std::shared_ptr<Camera> Ptr;
    float   fx_, fy_, cx_, cy_, depth_scale_;
	//2. 构造函数
    Camera();
    Camera ( float fx, float fy, float cx, float cy, float depth_scale=0 ) :
        fx_ ( fx ), fy_ ( fy ), cx_ ( cx ), cy_ ( cy ), depth_scale_ ( depth_scale )
    {}

    //3. 世界、相机、像素坐标系转换
    Vector3d world2camera( const Vector3d& p_w, const SE3& T_c_w );
    Vector3d camera2world( const Vector3d& p_c, const SE3& T_c_w );
    Vector2d camera2pixel( const Vector3d& p_c );
    Vector3d pixel2camera( const Vector2d& p_p, double depth=1 ); 
    Vector3d pixel2world ( const Vector2d& p_p, const SE3& T_c_w, double depth=1 );
    Vector2d world2pixel ( const Vector3d& p_w, const SE3& T_c_w );

};

}
#endif 

.cpp执行文件

#include "myslam/camera.h"

namespace myslam
{
//定义构造函数Camera类下
Camera::Camera(){}
//1. 相机和世界转换
Vector3d Camera::world2camera ( const Vector3d& p_w, const SE3& T_c_w )
{
    r
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值