ORB_SLAM2原理及代码解析:SetPose() 函数

1作用

帧或关键帧的光心求解。

2 所属位置及代码

2.1 Frame::SetPose()

(1)声明:include/Frame.h

cpp 复制代码
    // Set the camera pose.
    void SetPose(cv::Mat Tcw);

(2)定义:src/Frame.cc

cpp 复制代码
void Frame::SetPose(cv::Mat Tcw)
{
    mTcw = Tcw.clone();
    UpdatePoseMatrices();
}

void Frame::UpdatePoseMatrices()
{ 
    mRcw = mTcw.rowRange(0,3).colRange(0,3);
    mRwc = mRcw.t();
    mtcw = mTcw.rowRange(0,3).col(3);
    mOw = -mRcw.t()*mtcw;
}
2.2 KeyFrame::SetPose()

(1)声明:include/KeyFrame.h

cpp 复制代码
    // Pose functions
    void SetPose(const cv::Mat &Tcw);

(2)定义:src/KeyFrame.cc

cpp 复制代码
void KeyFrame::SetPose(const cv::Mat &Tcw_)
{
    unique_lock<mutex> lock(mMutexPose);
    Tcw_.copyTo(Tcw);
    cv::Mat Rcw = Tcw.rowRange(0,3).colRange(0,3);
    cv::Mat tcw = Tcw.rowRange(0,3).col(3);
    cv::Mat Rwc = Rcw.t();
    Ow = -Rwc*tcw;

    Twc = cv::Mat::eye(4,4,Tcw.type());
    Rwc.copyTo(Twc.rowRange(0,3).colRange(0,3));
    Ow.copyTo(Twc.rowRange(0,3).col(3));
    cv::Mat center = (cv::Mat_<float>(4,1) << mHalfBaseline, 0 , 0, 1);
    Cw = Twc*center;
}

3 原理解析

相关推荐
serve the people18 小时前
机器学习(ML)和人工智能(AI)技术在WAF安防中的应用
人工智能·机器学习
gfdhy18 小时前
【c++】哈希算法深度解析:实现、核心作用与工业级应用
c语言·开发语言·c++·算法·密码学·哈希算法·哈希
百***060119 小时前
SpringMVC 请求参数接收
前端·javascript·算法
0***K89219 小时前
前端机器学习
人工智能·机器学习
陈天伟教授19 小时前
基于学习的人工智能(5)机器学习基本框架
人工智能·学习·机器学习
m0_6501082419 小时前
PaLM-E:具身智能的多模态语言模型新范式
论文阅读·人工智能·机器人·具身智能·多模态大语言模型·palm-e·大模型驱动
zandy101119 小时前
2025年11月AI IDE权深度测榜:深度分析不同场景的落地选型攻略
ide·人工智能·ai编程·ai代码·腾讯云ai代码助手
欢喜躲在眉梢里19 小时前
CANN 异构计算架构实操指南:从环境部署到 AI 任务加速全流程
运维·服务器·人工智能·ai·架构·计算
0***R51519 小时前
人工智能在金融风控中的应用
人工智能
2501_9414037619 小时前
人工智能赋能智慧金融互联网应用:智能风控、个性化理财与金融服务优化实践探索》
人工智能