constraintPrismaticJoint
物体之间的移动关节约束
描述
的constraintPrismaticJoint
对象描述同一物体上后继体和前继体之间的闭环移动关节约束rigidBodyTree
.当后续体的中间帧原点位于节点上时,此约束得到满足Z前体中间帧的-轴,帧之间没有相对方向。当满足时,这个约束允许沿着公共线进行线性运动Z中间帧的-轴。
创建
属性
SuccessorBody
- - - - - -关节后继体名称
字符串标量|特征向量
后续正文帧的名称,指定为字符串标量或字符向量。类使用此约束时generalizedInverseKinematics
逆运动学(IK)求解器,其名称必须与指定的机构相匹配RigidBodyTree
的generalizedInverseKinematics
对象。
PredecessorBody
- - - - - -关节前体名称
字符串标量|特征向量
前一个主体帧的名称,指定为字符串标量或字符向量。类使用此约束时generalizedInverseKinematics
逆运动学(IK)求解器,其名称必须与指定的机构相匹配RigidBodyTree
的generalizedInverseKinematics
对象。
SuccessorTransform
- - - - - -关节约束相对于后继体框架的固定变换
(4)
(默认)|4×4矩阵
关节约束相对于后继体框架的固定变换,指定为4 × 4矩阵。
例子:[1 0 0 1;0 1 0 1;0 0 1 1;0 0 0 1]
PredecessorTransform
- - - - - -关节约束相对于前体框架的固定变换
(4)
(默认)|4×4矩阵
关节约束相对于前体框架的固定变换,指定为4 × 4矩阵。
例子:[1 0 0 1;0 1 0 1;0 0 1 1;0 0 0 1]
PositionTolerance
- - - - - -关节约束位置公差
0
(默认)|负的标量
关节约束的位置公差,以米为单位,指定为非负标量。
JointPositionLimits
- - - - - -关节约束的位置限制
(-100 100)
(默认)|二元行向量
关节约束的位置限制,以米为单位,指定为形式的两元行向量(最小最大)
.
例子:50 [-25]
OrientationTolerance
- - - - - -关节约束方向公差
0
(默认)|负的标量
关节约束的方向公差,以弧度为单位,指定为非负标量。
权重
- - - - - -约束的权重
[1 1 1]
(默认)|三元行向量
约束的权重,指定为三元素向量。向量的元素对应于向量的权重PositionTolerance
,OrientationTolerance
,JointPositionLimits
属性,分别。类中指定的所有约束的权值与这些权值一起使用generalizedInverseKinematics
可用于指定约束违反对求解器的相对重要性。
例子:[0 1 4]
例子
创建环闭关节约束
为简单刚体树创建一个转动关节、移动关节和固定关节约束。
使用exampleHelperFourBarLinkageTree
助手函数创建一个简单的机器人模型来演示闭环约束。
rbt = exampleHelperFourBarLinkageTree;显示(rbt碰撞=“上”);View ([0 0 pi]) xlim([-1 4])
转动关节约束
为了演示一个转动关节约束,通过连接最后一个连杆的末端来创建一个四连杆机构,link3
,第一个环节,link0
.
创建一个具有转动关节约束和关节边界约束的广义逆运动学求解器。
giksolverwithrevoltejointconstraint = generalizedinversekinemtion (RigidBodyTree=rbt,...ConstraintInputs = {“转动”,“jointbounds”});
为了保证IK方案的可重复性,请禁用随机重启。万博 尤文图斯
gikSolverWithRevoluteJointConstraint.SolverParameters.AllowRandomRestart = false;= /2+ /4;
通过设置固定第一个关节θ
既是最小界也是最大界。
activeJointConstraint = constraintJointBounds(rbt);activeJointConstraint。权重= [1 0 0];activeJointConstraint.Bounds(1,:) = [theta theta];
创建一个旋转联合约束,将后继主体和前一个主体设置为最后一个链接link3
第一个链接link0,
分别。指定创建中间框架的前身和后继转换1
一米之外,在X-轴,从它们各自的主体。一旦定义了,这些中间坐标系就会移动,使得它们的坐标系原点重合Z相互重合一致。
cRev = constraintRevoluteJoint(“link3”,“link0”,...transform =trvec2tform([1 0 0]),...SuccessorTransform=trvec2tform([1 0 0]));
提供[theta 0 0]
作为解算器的初始猜测,以及约束条件。
qConst = gikSolverWithRevoluteJointConstraint([theta 0 0],cRev,activeJointConstraint);
将机器人想象成一个四连杆机构。如果第一个关节旋转,求解器试图保持中间帧的转动关节约束一致,作为一个关节,并导致四杆运动。
图(Name =“转动关节约束”)显示(rbt qConst碰撞=“上”)
ans =轴(主要)与属性:XLim: [-2.5000 2.5000] YLim: [-2.5000 2.5000] XScale: '线性' YScale: '线性' GridLineStyle: '-'位置:[0.1300 0.1100 0.7750 0.8150]单位:'归一化'显示所有属性
视图([0 0 pi])
移动关节约束
使用移动关节约束来创建一个曲柄滑块。用移动关节约束和关节边界约束创建一个新的求解器。
gikSolverWithPrismaticJointConstraint = generalizedinversekinemtion(刚体树=rbt,...ConstraintInputs = {“移动”,“jointbounds”});gikSolverWithPrismaticJointConstraint.SolverParameters.AllowRandomRestart = false;
创建移动关节约束link3
而且link0
分别作为后继体和前驱体,并设置前驱体transfrom,使前驱体中间框架为1
米远的地方X-轴和旋转π/ 2
在Y-轴从前一个主体框架。
cPris = constraintPrismaticJoint (“link3”,“link0”, transform =trvec2tform([1 0 0])*eul2tform([0 pi/2 0]));
提供[theta 0 0]
作为解算器的初始猜测和约束条件。
qConst = gikSolverWithPrismaticJointConstraint([theta 0 0],cPris,activeJointConstraint);
将机器人想象成一个曲柄滑块。如果第一个关节旋转,求解器试图保持移动关节约束的中间帧一致,作为一个关节并导致曲柄滑块运动。
图(Name =“移动关节约束”)显示(rbt qConst碰撞=“上”)
ans =轴(主要)与属性:XLim: [-2.5000 2.5000] YLim: [-2.5000 2.5000] XScale: '线性' YScale: '线性' GridLineStyle: '-'位置:[0.1300 0.1100 0.7750 0.8150]单位:'归一化'显示所有属性
视图([0 0 pi])
固定关节约束
为了演示一个固定的关节约束,创建一个三角形,其中的链接在第一个关节移动时保持不变。创建一个具有固定联合约束的新求解器。
gikSolverWithFixedJointConstraint = generalizedinversekinemtion (RigidBodyTree=rbt,...ConstraintInputs = {“固定”});
创建固定的关节约束link3
而且link0
分别作为后继体和前驱体,并设置后继体变换使前驱体中间框架为1
米远的地方X-轴从前一个主体框架。
cFix = constraintFixedJoint(“link3”,“link1”,SuccessorTransform=trvec2tform([1 0 0]));
将固定关节约束的方向约束的权重设置为0
.
cFix。权重= [10 0];[qConst,solInfo] = gikSolverWithFixedJointConstraint([theta 0.1 0],cFix);
可视化机器人,看看固定约束关节如何作用于机器人框架。如果第一个关节旋转,求解器试图保持固定关节约束的中间帧一致,作为一个固定关节。
图(Name =“固定联合约束”)显示(rbt qConst碰撞=“上”)
ans =轴(主要)与属性:XLim: [-2.5000 2.5000] YLim: [-2.5000 2.5000] XScale: '线性' YScale: '线性' GridLineStyle: '-'位置:[0.1300 0.1100 0.7750 0.8150]单位:'归一化'显示所有属性
视图([0 0 pi])
扩展功能
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
版本历史
R2022a中引入
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。