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

相关推荐
凯子坚持 c几秒前
CANN-LLM:基于昇腾 CANN 的高性能、全功能 LLM 推理引擎
人工智能·安全
学电子她就能回来吗9 分钟前
深度学习速成:损失函数与反向传播
人工智能·深度学习·学习·计算机视觉·github
The Straggling Crow9 分钟前
model training platform
人工智能
爱吃泡芙的小白白10 分钟前
突破传统:CNN卷积层(普通/空洞)核心技术演进与实战指南
人工智能·神经网络·cnn·卷积层·空洞卷积·普通卷积
人道领域17 分钟前
AI抢人大战:谁在收割你的红包
大数据·人工智能·算法
初恋叫萱萱21 分钟前
CANN 系列深度篇:基于 ge 图引擎构建高效 AI 执行图
人工智能
TracyCoder12336 分钟前
LeetCode Hot100(34/100)——98. 验证二叉搜索树
算法·leetcode
A尘埃36 分钟前
电信运营商用户分群与精准运营(K-Means聚类)
算法·kmeans·聚类
qq_124987075339 分钟前
基于Hadoop的信贷风险评估的数据可视化分析与预测系统的设计与实现(源码+论文+部署+安装)
大数据·人工智能·hadoop·分布式·信息可视化·毕业设计·计算机毕业设计