主要内容

constraintDistanceBounds

约束物体在参考物体的距离范围内

描述

constraintDistanceBounds对象描述一个物体(末端执行器)相对于同一物体内的另一个物体(参考物体)的距离的约束rigidBodyTree.如果距离,d相对于参考体原点坐标系的末端执行器原点在指定的边界内。

创建

描述

例子

distConst= constraintDistanceBounds (endeffector返回一个距离边界约束对象,distConst,表示对指定的endeffector和指定的引用体ReferenceBody财产。

distConst= constraintDistanceBounds (endeffector名称=值使用一个或多个名称-值参数指定属性。

属性

全部展开

末端执行器的名称,指定为字符串标量或字符向量。当将此约束与generalizedInverseKinematics,则名称必须与关联的RigidBodyTree机器人模型。

例子:“left_palm”

数据类型:字符|字符串

引用主体帧的名称,指定为字符向量或字符串标量。默认的''表示约束相对于机器人模型的基座。当将此约束与generalizedInverseKinematics,则名称必须与关联的RigidBodyTree机器人模型。

例子:“基地”

施加在末端执行器上的来自参考体的上下距离边界,指定为形式为[的双元素行向量最小最大].

例子:3 [1]

约束的权值,指定为数值标量。此权重与权重中指定的所有约束的generalizedInverseKinematics求解器,以适当平衡每个约束。

例子:2

例子

全部折叠

创建一个constraintDistanceBounds对象,并观察其对逆运动学解的影响。

装载机器人并设置求解器

将一个通用的UR5e机器人加载到工作空间中,建立一个广义逆运动学求解器。

rng默认的;机器人= loadrobot (“universalUR5e”DataFormat =“列”);gik = generalizedInverseKinematics (“RigidBodyTree”,机器人);

设置约束输入距离对于距离边界约束,和位置对于目标约束。

gik。ConstraintInputs = {“距离”“位置”};gik.SolverParameters.MaxIterations = 100;

创建距离边界约束

创建距离边界约束约束末端执行器体的原点,tool0,相对于参考系的原点,基地

constrDist = constraintDistanceBounds (“tool0”ReferenceBody =“基地”);

设置两个物体之间的最小距离为0.25米,和最大距离到0.5米。这个约束防止了逆运动学求解器求解违反边界的构型。

minDist = 0.25;maxDist = 0.5;constrDist。界限= [minDist maxDist];

约束第一个手腕连杆,wrist_1_link,以增加一些复杂性的目标职位。

forearmTgt = constraintPositionTarget (“wrist_1_link”);forearmTgt。TargetPosition = [0.0 0.25 0.25];

可视化的约束

使用约束通过三个随机配置运行求解器,然后显示求解器状态。每次迭代,求解器都会找到一个解,其中末端执行器的距离等于或在指定的边界内。函数将边界形象化exampleHelperVisualizeBounds辅助函数绘制两个透明球体的距离边界。

图q0 = randomConfiguration(robot);%求解器的初始猜测[q, solutionInfo] = gik (q0处,constrDist forearmTgt);显示(机器人,q);视图(90 0)exampleHelperVisualizeBounds (minDist maxDist)eeDist =规范(tform2trvec (getTransform(机器人,问,“tool0”)));显示([解决状态:“solutionInfo.Status])显示([“末端执行器距离:”num2str (eeDist)])结束

{

1x2 string array "Solver Status: " "success"
1x2字符串阵列"End Effector Distance: " "0.48425"

{

1x2 string array "Solver Status: " "success"
1x2 string array "End Effector Distance: " "0.29671"

{

1x2 string array "Solver Status: " "success"
1x2 string array "End Effector Distance: " "0.48713"

扩展功能

C / c++代码生成
使用MATLAB®Coder™生成C和c++代码。

版本历史

介绍了R2022a

Baidu
map