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 原理解析

相关推荐
科技发布2 分钟前
拓氪科技 AI 内容引擎软文投放效果详解
人工智能·科技
IT探索3 分钟前
Linux 查找文件指令总结
linux·算法
nanawinona9 分钟前
2026年下半年量化学习,不同基础要查不同缺口
人工智能·python
海盗123414 分钟前
AI新闻日报_2026-07-22
人工智能
CTA量化套保25 分钟前
最新量化表达入门,从概念规则到简单实现
人工智能·python
AI应用苏大大27 分钟前
企业AI架构缺陷:低价工具堆叠,造成结构性效率浪费
人工智能
Lumos1861 小时前
51单片机从零到实战(完结)——后续学习路线建议
算法
空中湖1 小时前
Spring AI Agent 编排:ReAct 模式 + 多 Agent 协作实战
人工智能·spring·react.js
only-qi1 小时前
RAG 工作机制详解:构建高质量知识库的技术全流程
网络·人工智能·rag
稚南城才子,乌衣巷风流1 小时前
DFS序详解:原理、应用与实现
算法·深度优先·图论