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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值