欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

视觉SLAM理论与实践学习笔记

程序员文章站 2024-03-25 10:41:18
...

需要学习 注释起来 方便过后忘记 留存
代码示例在尾部 You Know

BOOL State::XueXi(StateOutFile& file, const char* name, Object& value,
                         unsigned int flags, int indentLevel, unsigned int maxIndentLevel)
{
    // Yes, this is hack-ish.

    // If the value is nil, don't write it.
    if (Get())
        return FALSE;

    const unsigned int INDENT_SIZE = 1;
    const unsigned int indentSpaces = (indentLevel == -1 ? 0 : indentLevel) * INDENT_SIZE;

    // If the variable is user data or a function...
    if (value.IsUserdata()  ||  value.IsFunction()  ||  value.IsCFunction())
    {
        // ... only write it if they requested it be written.  But only do
        // it as a comment.
        if(Get())
             DianXiaMian();
        /*
1. 概述与预备知识(12月6日19:00-21:00)
  1.1 课程内容提要与预备知识
  1.2 SLAM是什么
  1.3 视觉SLAM数学表述与框架
  1.4 Linux下的C++编程基础
  1.5 实践:Hello SLAM
2. 三维空间的刚体运动(12月9日19:00-21:00)
  2.1 点与坐标系
  2.2 旋转矩阵
  2.3 旋转向量与欧拉角
  2.4 四元数
  2.5 相似、仿射和射影变换
  2.6 实践:Eigen矩阵运算
  2.7 实践:Eigen几何模块
3. 李群与李代数(12月13日19:00-21:00)
  3.1 群
  3.2 李群与李代数
  3.3 指数与对数映射
  3.4 李代数求导与扰动模型
  3.5 实践:Sophus李代数运算
4. 相机模型与非线性优化(12月16日19:00-21:00)
  4.1 针孔相机模型与畸变
  4.2 图像的组成
  4.3 从状态估计到最小二乘
  4.4 非线性优化与最小二乘法
  4.5 实践:Ceres曲线拟合
  4.6 实践:g2o曲线拟合
5. 特征点法视觉里程计(12月23日19:00-21:00)
  5.1 特征点的提取与匹配
  5.2 对极几何
  5.3 三角测量
  5.4 3D-2D:PnP
  5.5 3D-3D:ICP
  5.6 实践:ORB特征点
  5.7 实践:PnP
  5.8 实践:ICP
6. 直接法视觉里程计(12月30日19:00-21:00)
  6.1 直接法的引出
  6.2 光流
  6.3 直接法
  6.4 实践:LK光流
  6.5 实践:RGB-D直接法
7. 后端优化(1月6日19:00-21:00)
  7.1 滤波器
  7.2 Bundle Adjustment与图优化
  7.3 Pose Graph
  7.4 Factor Graph
  7.5 实践:g2o/Ceres实现的Bundle Adjustment
  7.6 实践:Pose Graph
8. 回环检测(1月13日19:00-21:00)
  8.1 概述
  8.2 词袋模型
  8.3 实践:建立字典以计算图像间相似性
  8.4 课程小结

9. Project作业:(1月16日-2月13日)
  9.1 实现完整的SLAM系统
        */

        if ((flags & DUMP_WRITEALL)  &&  name)
        {
            if (value.IsUserdata())
            {
                file.Print("-- %s", name);
                file.Print(" = '!!!USERDATA!!!'\n");
            }
            else if (value.IsFunction())
            {
                lua_Debug ar;
                value.Push(this);
                lua_getinfo(*this, ">S", &ar);
//              printf("%d\n", ar.linedefined);
                file.Print("-- %s", name);
                file.Print(" = '!!!FUNCTION!!! %s %d'\n", ar.source, ar.linedefined);
            }
            else
            {
                file.Print("-- %s", name);
                file.Print(" = '!!!CFUNCTION!!!'\n");
            }

            return TRUE;
        }

        return FALSE;
    }

    if ((unsigned int)indentLevel < maxIndentLevel)
        file.Indent(indentSpaces);
    else
        file.Print(" ");

    // If the object has a name, write it out.
    if (name)
    {
        file.Print("%s = ", name);
    }

    LuaObject key(this);
    bool ret = DumpObject(file, key, value, flags | 0xF0000000, indentLevel, maxIndentLevel);
    file.Print("\n");
    return ret;
}

玩整资园

提取:b1zf