当前位置: 首页 > news >正文

A\B求解将 B转换到 A 的坐标系中的变换

%% 将罐子附加到末端执行器
removeBody(robot,'leftWidgetFrame');
removeBody(robot,'rightWidgetFrame');
% 获取机器人手部的当前姿态
graspConfig = qInterpFROMinitialGOTOgrasp(end,:);
leftGripperFramePose = getTransform(robot,graspConfig,leftGripperFrame);
rightGripperFramePose = getTransform(robot,graspConfig,rightGripperFrame);
% 将罐子放置在末端执行器夹爪中。
setFixedTransform(leftbody.Joint, leftGripperFramePose\leftWidgetCollision.Pose);
setFixedTransform(rightbody.Joint, rightGripperFramePose\rightWidgetCollision.Pose);addCollision(leftbody,leftWidgetCollision,inv(leftWidgetCollision.Pose));
addCollision(rightbody,rightWidgetCollision,inv(rightWidgetCollision.Pose));% 将刚体添加到机器人模型中
addBody(robot, leftbody, leftGripperFrame);
addBody(robot, rightbody, rightGripperFrame);
% 从环境中移除物体。
env_home(6:7) = [];
envcheckcollison(6:7)=[];

求解将 B 转换到 A 的坐标系中的变换

在 MATLAB 中,A\B 这种符号表示的是矩阵的左除运算,即求解线性方程组 AX = B 的解 X。在几何变换中,这个操作通常用于计算变换的逆,即求解将 B 转换到 A 的坐标系中的变换

leftGripperFramePose\leftWidgetCollision.Pose

这个表达式表示你正在计算从 leftGripperFramePoseleftWidgetCollision.Pose 的变换。换句话说,你正在计算 leftWidgetCollision.PoseleftGripperFramePose 坐标系下的表示。

具体来说,leftGripperFramePose 是左夹持器的当前姿态,leftWidgetCollision.Pose 是罐子的初始姿态。通过计算 leftGripperFramePose\leftWidgetCollision.Pose,你可以得到罐子在夹持器坐标系中的相对位置和姿态

这个操作的结果是用于设置一个新的固定变换,使罐子(leftWidgetCollision)被放置在夹持器的特定位置,仿佛夹持器已经抓住了罐子。

总结

  • 使用 leftGripperFramePose\leftWidgetCollision.Pose 是为了计算 leftWidgetCollision.PoseleftGripperFramePose 局部坐标系下的相对位置和姿态,从而使罐子能够正确地定位在机械臂的夹持器中。
    在 MATLAB 中,inv(X) 表示矩阵 X 的逆矩阵。在几何变换中,inv(X) 通常用于计算一个刚体变换矩阵的逆变换。

解释 inv(rightWidgetCollision.Pose)

几何变换的背景

在机器人学中,一个刚体变换矩阵(通常是 4x4 的同构矩阵)表示了物体在空间中的位置和方向。矩阵的逆变换通常用于将一个点或物体从一个坐标系转换到另一个坐标系。
假设 rightWidgetCollision.Pose 是一个 4x4 的同构矩阵,表示 rightWidgetCollision(比如罐子或其他物体)在某个全局坐标系中的位置和姿态。inv(rightWidgetCollision.Pose) 的作用是计算这个姿态的逆变换。

具体来说,inv(rightWidgetCollision.Pose) 会将全局坐标系中的坐标转换回 rightWidgetCollision.Pose 坐标系。这意味着,假如你有一个物体的位置在全局坐标系中,并希望知道它在 rightWidgetCollision.Pose 坐标系中的位置,你就需要用到这个逆变换。

addCollision(rightbody, rightWidgetCollision, inv(rightWidgetCollision.Pose));

这行代码的作用是将 rightWidgetCollision添加到 rightbody的碰撞体中,并且指定该物体在 rightbody 坐标系下的相对位置和姿态。

通过计算 inv(rightWidgetCollision.Pose),你可以确保 rightWidgetCollisionrightbody 的局部坐标系中正确地定位。这意味着,如果 rightWidgetCollision.Pose 是相对于某个全局坐标系的,而 rightbody 是另一个坐标系,那么你需要rightWidgetCollision.Pose 的位置和姿态逆变换到 rightbody 的局部坐标系中

总结

inv(rightWidgetCollision.Pose) 的作用是计算 rightWidgetCollision.Pose 的逆变换矩阵,以便将罐子或物体从全局坐标系转换到rightbody的局部坐标系,从而确保物体在夹持器中的正确定位和姿态。


http://www.mrgr.cn/news/16633.html

相关文章:

  • java基础开发-xstream解析xml
  • 【智能排班系统】Hibernate Validator 参数校验
  • C++11 新特性基础
  • MySQL事务管理与并发控制:深入理解ACID特性
  • 如何选到好的宠物空气净化器,用哪款宠物空气净化器比较好?
  • Go入门:gin框架极速搭建图书管理系统
  • C语言习题~day38
  • python实战三-提取Word数据到Excel
  • opencv之图像平滑处理
  • 如何将线程绑定到特定的CPU核
  • PMP错题总结(十六)
  • ElementPlus下拉框实现可选择,可输入
  • Llamaindex RAG实践
  • 世界上装机量最大的数据库SQLite,低调但不小众
  • 【代码随想录训练营第42期 Day45打卡 - 编辑距离问题 - LeetCode 115.不同的子序列 583. 两个字符串的删除操作 72. 编辑距离
  • unbuntu 安装
  • Java多进程调用dll程序和exe程序
  • python 天气与股票的关系--第2部分,清洗数据
  • 基于yolov8的人头计数检测系统python源码+onnx模型+评估指标曲线+精美GUI界面
  • 求解组合优化问题的具有递归特征的无监督图神经网络