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

相关推荐
程序员cxuan7 小时前
一句话,让你用上 GPT-5.6
人工智能·后端·程序员
机器之心7 小时前
AI圈刚开始谈Loop Engineering,两位95后博士已经盯上了人类闭环数据
人工智能·openai
澄旭7 小时前
一文讲清 MCP:AI 应用连接外部世界的标准协议
人工智能
机器之心8 小时前
不只DeepSeek,阶跃等开源JetSpec:大模型解码提速近10倍
人工智能·openai
moMo8 小时前
当LLM学会"递纸条",AI是如何调用工具的
人工智能
拾年2758 小时前
大模型的"聪明"从哪来?聊聊 AI 数据集的那些事儿
人工智能·深度学习·机器学习
拾年2758 小时前
从 Prompt 到 Context 再到 Harness:AI 工程化的三年三级跳
人工智能
用户3090463613948 小时前
Claude 不会直接执行你的函数,它只会生成一段结构化的工具调用请求。真正执行函数、访问数据库、请求外部 API 的动作,必须由你的后端完成。
人工智能
不加辣椒8 小时前
第14章 Prompt 编排与优化技术
人工智能