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

相关推荐
yongyoudayee16 小时前
业务语义模型:AI CRM从“能用”到“好用”的技术分水岭
大数据·人工智能
我的世界洛天依16 小时前
官宣|VFrame 企划正式成立:九州合唱团登场,九州网络用 RVC 重构跨 IP 虚拟歌手音乐生态
人工智能·电脑
木雷坞16 小时前
视觉算法环境 Docker 镜像拉取失败排查
运维·人工智能·docker·容器
ACCELERATOR_LLC16 小时前
【DataWhale组队学习】DIY-LLM Task6 评估与基准测试
人工智能·深度学习·大模型·模型评估
我就是妖怪16 小时前
Kimi K2.6 新手快速上手与实战指南
大数据·人工智能
Elcker16 小时前
企业级RAG应用构建手册
人工智能·rag
蝎子莱莱爱打怪16 小时前
小孩儿才做选择!Hermes 和OpenClaw 我都要!
人工智能·后端·github
imbackneverdie16 小时前
sci期刊示意图、流程图、机制图怎么画?
人工智能·ai·aigc·科研绘图·ai工具·科研工具·ai生图
直奔標竿16 小时前
SpringAI + RAG + MCP + Agent 零基础全栈实战(完结篇)| 27课完整汇总,Java开发者AI转型必看
java·开发语言·人工智能·spring boot·后端·spring
云烟成雨TD16 小时前
Spring AI 1.x 系列【31】向量数据库:进阶使用指南
java·人工智能·spring