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

2024-09-01 09:04
文章标签 转换 求解 变换 坐标系

本文主要是介绍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的局部坐标系,从而确保物体在夹持器中的正确定位和姿态。

这篇关于A\B求解将 B转换到 A 的坐标系中的变换的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1126500

相关文章

PDF 软件如何帮助您编辑、转换和保护文件。

如何找到最好的 PDF 编辑器。 无论您是在为您的企业寻找更高效的 PDF 解决方案,还是尝试组织和编辑主文档,PDF 编辑器都可以在一个地方提供您需要的所有工具。市面上有很多 PDF 编辑器 — 在决定哪个最适合您时,请考虑这些因素。 1. 确定您的 PDF 文档软件需求。 不同的 PDF 文档软件程序可以具有不同的功能,因此在决定哪个是最适合您的 PDF 软件之前,请花点时间评估您的

C# double[] 和Matlab数组MWArray[]转换

C# double[] 转换成MWArray[], 直接赋值就行             MWNumericArray[] ma = new MWNumericArray[4];             double[] dT = new double[] { 0 };             double[] dT1 = new double[] { 0,2 };

Verybot之OpenCV应用二:霍夫变换查找圆

其实我是想通过这个程序来测试一下,OpenCV在Verybot上跑得怎么样,霍夫变换的原理就不多说了,下面是程序: #include "cv.h"#include "highgui.h"#include "stdio.h"int main(int argc, char** argv){cvNamedWindow("vedio",0);CvCapture* capture;i

数据流与Bitmap之间相互转换

把获得的数据流转换成一副图片(Bitmap) 其原理就是把获得倒的数据流序列化到内存中,然后经过加工,在把数据从内存中反序列化出来就行了。 难点就是在如何实现加工。因为Bitmap有一个专有的格式,我们常称这个格式为数据头。加工的过程就是要把这个数据头与我们之前获得的数据流合并起来。(也就是要把这个头加入到我们之前获得的数据流的前面)      那么这个头是

高斯平面直角坐标讲解,以及地理坐标转换高斯平面直角坐标

高斯平面直角坐标系(Gauss-Krüger 坐标系)是基于 高斯-克吕格投影 的一种常见的平面坐标系统,主要用于地理信息系统 (GIS)、测绘和工程等领域。该坐标系将地球表面的经纬度(地理坐标)通过一种投影方式转换为平面直角坐标,以便在二维平面中进行距离、面积和角度的计算。 一 投影原理 高斯平面直角坐标系使用的是 高斯-克吕格投影(Gauss-Krüger Projection),这是 横

2024 年高教社杯全国大学生数学建模竞赛题目——2024 年高教社杯全国大学生数学建模竞赛题目的求解

2024 年高教社杯全国大学生数学建模竞赛题目 (请先阅读“ 全国大学生数学建模竞赛论文格式规范 ”) 2024 年高教社杯全国大学生数学建模竞赛题目 随着城市化进程的加快、机动车的快速普及, 以及人们活动范围的不断扩大,城市道 路交通拥堵问题日渐严重,即使在一些非中心城市,道路交通拥堵问题也成为影响地方经 济发展和百姓幸福感的一个“痛点”,是相关部门的棘手难题之一。 考虑一个拥有知名景区

VC环境下整型转换为字符串型(2)

在串口下位机的发送中,可能会用到需要发送数字,显示为字符串型的 和上一篇文字《串口中字符串转换为整型》一正一反,知识点学习会了: #include<iostream.h> #include <stdio.h> #include <string.h>   void inttostr(int m,unsigned char * str) { int length=0;   int tmp,te

时间日期与时间戳转换(Linux C)

本文主要学习三个知识点,第一是UTC时间、GMT时间的概念;第二是在Unix环境下UTC时间与时间戳的转换;第三是在C语言中如何修改时区。 本文参考了《UNP》以及 http://blog.csdn.net/foxir/article/details/43916601 http://blog.csdn.net/ljafl9988/article/details/16847935 一、

005:VTK世界坐标系中的相机和物体

VTK医学图像处理---世界坐标系中的相机和物体 左侧是成像结果                                                    右侧是世界坐标系中的相机与被观察物体 目录 VTK医学图像处理---世界坐标系中的相机和物体 简介 1 在三维空间中添加坐标系 2 世界坐标系中的相机 3 世界坐标系中vtkImageData的参数 总结:

点云数据常见的坐标系有哪些,如何进行转换?

文章目录 一、点云坐标系分类1. 世界坐标系2. 相机坐标系3. 极坐标系4. 笛卡尔坐标系(直角坐标系):5. 传感器坐标系6. 地理坐标系 二、坐标系转换方法1. 地理坐标系与投影坐标系之间的转换2. 投影坐标系与局部坐标系之间的转换3. 局部坐标系与3D模型坐标系之间的转换4. 相机坐标系与其他坐标系之间的转换5. 传感器坐标系与其他坐标系之间的转换 三、坐标系转换工具 一