机器人坐标系转换从局部坐标系转换到世界坐标系

矩阵方式:

下面是代码:

cpp 复制代码
#include <Eigen/Dense>

static void transLocalToWorldCloudWith2dPose(const PointCloud &pc_tar, const QPose3f &pose, PointCloud &pc_org) {
    if (pc_tar.empty())
        return;

    PointCloud tmp_pc;
    Eigen::Rotation2Dd R(-pose.yaw);  // 创建旋转矩阵
    Eigen::Vector2d d(pose.x, pose.y);  // 创建平移向量

    for (const auto& point : pc_tar) {
        Eigen::Vector2d local_point(point.x, point.y);
        Eigen::Vector2d world_point = R * local_point + d;  // 进行坐标转换

        tmp_pc.push_back(PointPCL(world_point.x(), world_point.y(), point.z));
    }

    pcl::copyPointCloud(tmp_pc, pc_org);
}

// 在调用此函数时:
transLocalToWorldCloudWith2dPose(pc_tar, pose, pc_org);

函数方式:

根据三角函数的特性,可以进行一下简化:

下面是简化前的代码示例:

cpp 复制代码
static void transLocalToWorldCloudWith2dPose(const PointCloud &pc_tar, const QPose3f &pose, PointCloud &pc_org) {
    if (pc_tar.empty())
        return;

    PointCloud tmp_pc;
    for (const auto& point : pc_tar) {
        double world_x;
        double world_y;
        double d_x = point.x * cos(-pose.yaw) + point.y * sin(-pose.yaw);
        double d_y = -point.x * sin(-pose.yaw) + point.y * cos(-pose.yaw);
        world_x = d_x + pose.x;
        world_y = d_y + pose.y;
        tmp_pc.push_back(PointPCL(world_x, world_y, point.z));
    }

    pcl::copyPointCloud(tmp_pc, pc_org);
}

// 在调用此函数时:
transLocalToWorldCloudWith2dPose(pc_tar, pose, pc_org);
相关推荐
robottt66616 小时前
越疆进入具身智能头部阵营?从协作机器人第一到人形机器人进厂
机器人
光锥智能18 小时前
荣耀将阿莱电影工作流融入机器人手机
人工智能·智能手机·机器人
TsingtaoAI18 小时前
基于MyCobot Pro 450机器人的VLA多模态具身智能实训建设方案
机器人·大模型·具身智能
海兰18 小时前
【思考】RPA(机器人流程自动化)+AI
机器人·自动化·rpa
武子康1 天前
同一画面,两种动作:多模态 Agent 如何验证状态是否足够
人工智能·机器人·agent
杰瑞学AI1 天前
一个回答需要10分钟:飞书问答机器人踩坑实录——纯Agent自由检索,差点让我们的机器人“难产”
人工智能·机器人·prompt·transformer·飞书·ai-native
workflower2 天前
高质量数据集的类型
人工智能·机器学习·设计模式·自然语言处理·机器人
网络研究院2 天前
Cloudflare 推出 Precursor 行为监测系统,全会话追踪技术引爆 AI 机器人防御战与隐私新争议
网络·人工智能·机器人·系统·cloudflare·反爬虫
沫儿笙3 天前
安川弧焊机器人厚板焊接如何省气60%
人工智能·机器人
zdl6863 天前
易信easyMarkets:出金申请规范推进帮助用户澄清诈骗担忧
机器人