主要内容

利用逆运动学设计器创建约束逆运动学求解器

这个例子展示了如何创建一个逆运动学(IK)求解器和约束使用逆运动学设计逆运动学(IK)求解器在机器人技术中用于确定满足一定约束条件的机器人的关节构型。受限IK求解器可用于执行各种行为,如末端执行器位姿目标、关节位置限制和其他运动学约束。在这个例子中,一个求解器和约束被设计用来强制Willow Garage PR2的相机瞄准行为。PR2包括表示相机传感器的主体。通过添加一个约束,迫使相机指向左边的夹持器,相机随着夹持器的移动,确保相机将跟踪夹持器所作用的任何物体。

开始新会话

点击app >逆运动学设计器启动应用程序,或使用inverseKinematicsDesigner功能:

inverseKinematicsDesigner

点击新会话提出新会话对话框启动一个新的应用程序会话。对话框允许您从机器人库中可用的机器人列表中进行选择,或者提供自定义刚体树。在将自定义刚体树加载到应用程序之前,必须在MATLAB工作区中可用。

选择“柳树车库”的PR2刚体的树列表中,并单击好吧

在场景画布中定位机器人

程序加载后,使用控件中的现场帆布重新定位机器人以便更舒适地使用空间。将鼠标悬停在场景画布中所示的坐标轴上,弹出坐标轴工具栏,如图所示,其中的组件编号如下。

使用这些按钮来控制图形模式。的三维旋转控制(上图中标记为1)旋转机器人。在这种模式下,滚动轮或类似的功能将缩放整个场景画布,并可以用于填充屏幕。的按钮(标记为2),允许用户在轴边界内平移机器人,并具有与旋转3D选项相同的默认缩放行为。的放大而且缩小模式(上面标记为3)允许用户放大在坐标轴范围内通过点击或使用滚轮缩放。最后,首页控件将视图重置为默认视图。

在下面的GIF中,所有四种模式都用于将机器人重新定位到给定的屏幕空间中更可用的位置。

缩放模式

必须输入给定的图形控制模式之一,才能使用滚轮或类似功能放大。如上所述,有两种模式。当三维旋转控制是活动的,整个画布是缩放的(即轴的限制不改变)。当放大缩小控件处于活动状态,画布在图形边界内被放大。通过将它们结合使用,就可以为任务尽可能有效地使用画布空间。

为机器人夹持器选择身体

选择作为机器人夹持器的身体。在夹持器中有许多可能的物体,所以点击它们并选择一个直观移动的物体是有用的。有几种方法来检查机器人。

探索机器人使用场景窗格

现场的浏览器是位于场景画布左侧的面板。它显示了机器人的所有身体和关节,以及已经加载到场景中的任何碰撞对象。通过点击场景检查器中的对象,它们将在现场帆布,所选对象的详细信息将显示在现场检验员.场景检查器是最右边的面板,它显示对象的属性和状态,比如当前的姿势。

首先,选择主体,l_gripper_palm_link,在现场的浏览器选择左夹持器的手掌。

Robot1.PNG

要进一步验证它的运动,右键单击主体并选择为标记体指定姿势.这将标记分配到这个身体,以便它可以使用一个交互式标记姿势目标移动。

使用标记位姿约束移动末端执行器

逆运动学设计器总是创建一个带有一个默认约束的求解器:标记位姿约束。该约束为指定的末端执行器体指定目标位姿。主体可以通过右键菜单或在工具条中设置,也可以通过编辑约束和直接修改约束细节来设置。但是,与其他约束不同的是,可以使用交互式标记直接设置标记姿势约束。

MarkerMove.gif

该工具允许机器人易于操作,这有助于求解器验证。控件中取消选中它旁边的复选框,也可以禁用该约束限制浏览器。

利用瞄准约束的点相机在夹持器体上

现在应用程序已经配置好了,添加一个瞄准约束,以确保相机总是指向左边的夹持器。瞄准约束确保指定物体的Z轴指向空间中的给定点,该点是参照其他物体指定的。单击可添加约束添加约束在工具条中打开约束选项卡,然后选择目标约束。的瞄准约束参数部分将打开约束选项卡。

ROBOT2.PNG

分配约束参数

要配置瞄准约束,必须设置三个主要参数:

  • 分配一个终端执行器的身体。末端执行器是瞄准参考点沿其Z轴的主体。因为目标是让相机瞄准,所以有必要选择一个头部的身体(绿色的身体),选择一个向前的Z轴。选择high_def_optical_frame终端执行器的身体列表,并观察到对应的主体现在以绿色突出显示。

  • 分配一个参考的身体.目标点是根据参考体来定义的。因为我们一直在用手掌移动机器人手臂,所以选择l_gripper_palm_link参考的身体列表。注意手掌主体现在用蓝色突出显示。

  • 修改目标点。缺省情况下,目标点位于引用体的原点。然而,假设我们想要瞄准一个略微偏离手掌的点,就像它拿着什么东西一样。设置Z目标0.1并观察到表示目标点的红色X现在沿着参考体的z轴偏移了。

在约束修改期间,可以隐藏标记,以使约束更改更容易检查。通过取消选中禁用标记标记构成的目标限制浏览器,或在“约束浏览器”中右键单击标记姿势约束并选择切换显示标志

ROBOT3.PNG

当您对约束感到满意时,单击应用将约束添加到求解器,和密切的约束退出约束选项卡。

验证约束行为

一旦约束被应用,通过移动手掌来验证它是否像预期的那样工作,并查看相机是否跟随它。要做到这一点,首先要确保在限制浏览器(应该检查一下)。接下来,用记号笔移动手掌,看头部是否跟着移动。

MoveHead.gif

当你移动记号笔时,注意机器人可能并不总是准确地击中记号笔。可以查看是否满足了某个约束限制浏览器.当带绿色复选框的约束图标显示时,约束已经完全满足。然而,当一个带红色X的约束图标显示出来时,约束没有得到满足。例如,在下面的快照中标记构成的目标不满足,而瞄准约束已经满足。

有许多原因可能导致一个约束不能被满足,从与其他约束冲突到没有足够的求解器迭代。单击报告状态按钮查看求解器退出的原因。这将打开一个窗口,指示最后一次求解器调用的详细信息。

例如,在上面的情况中,单击报告表示求解器运行到最大迭代次数,然后返回最佳可用解决方案。因此,建议以当前条件作为初始条件再次调用求解器。如果没有成功,也有可能这个姿势是无法完成的。有关更多信息,请参见解决约束冲突

优化解算器设置

根据退出条件,修改求解器设置可能是有帮助的。例如,随着更多约束的添加,最大迭代次数应该增加,以确保求解器有时间收敛。

如需更新设置,请单击解算器设置,或选择解算器选项卡。

选择最大迭代,修改为200.单击方框外以确认更改,然后单击适用于解算器应用更改。

应用新的求解器设置之后,返回到逆运动学选项卡并单击刷新解算器再次运行求解程序。点击报告状态为了验证解决方案是可实现的,解决方案在达到最大迭代之前就会收敛。

导出求解器和约束

要在应用程序外部使用求解器对象,请将其导出到MATLAB®工作区。点击导出求解器和约束,这将弹出导出求解器和约束对话框。

解算器名称而且限制单元格数组名称或者使用默认值。按shift键选择多个约束,然后单击出口

选中所有内容后,单击出口将它们导出到工作区。

使用导出解算器

使用导出的求解器对象直接从命令行约束另一个配置。

注意,导出的求解器使用行格式的机器人,因此导出的配置是行格式的。刚体树的句柄存储在导出的求解器对象上。

负载(“ikSolverDesignExampleData.mat”) robot = ikSolver.RigidBodyTree;给夹持者分配一个新的目标姿势。ikConstraints{1}。TargetTransform = trvec2tform([-。01 .04美元1.45]);使用这两个约束调用求解器。[qSol, info] = ikSolver(机器人。homeConfiguration ikConstraints {:});%显示结果显示(机器人,qSol);

{

Baidu
map