赛车休息室

学生竞赛的最佳实践和团队合作

在Simscape中创建虚拟机器人环境:添加物理、对象交互和自主性

这是在Simscape中创建虚拟机器人环境的两部分博客中的第二个。如果您还没有阅读第1部分,我们鼓励您查看在这里

在前半部分,我们讨论了将您的CAD导入Simscape Multibody,并使用关节将部件连接在一起。在这篇文章中,我们将讨论添加物理,对象交互到你的机器人,最后如何利用Simulink程序你的机器人。金宝app享受吧!

实现物理

一旦验证了主机器人组装正确模拟,下一步就是实现将导致机器人表现得像它在现实生活中的物理学。执行此操作的第一步是为模拟创建其他对象。例如,使用车轮摩擦对地移动的能力需要我们有一个地面或地板。我们通过简单地创建一个带有“砖块实体”块的非常大的矩形楼层来做到这一点。

截屏

注意,选中了“导出整个几何体”选项。一旦我们添加了不同环境组件之间的交互,我们将使用这个导出的几何图形。

添加物理-在地面上驾驶

重力

重力影响所有现实生活中的机器人,所以我们自然需要确保我们的模拟也考虑到了重力。创建地面后,你需要直接将这个方块附加到3个方块上:求解器配置世界坐标系,机制配置.这三个模块对于任何Simscape多体模型都是必不可少的,在机制配置模块中,我们可以为模拟设置所需的重力。

地面直接连接到世界框架,因为我们希望它始终是静态的,而机器人首先连接到地面使用6自由度关节.6-DOF接头允许机器人相对于世界框架在任何方向上转换和旋转,这是我们想要的,因为我们想要在地板上开车。

截屏

为了让机器人在地板上移动,我们需要模拟车轮接触地板时的法向力和摩擦力。幸运的是,这两种力都可以用一个块来建模:'空间接触力' 堵塞。

还记得我们为导出地面方块的几何形状而指定的复选框吗?这就是它发挥作用的地方。

添加空间接触力

为了模拟力量和运动,我们需要引入几何连接”。这些连接用虚线/虚线表示。一个“空间接触力”块连接两个不同部分的几何形状,以模拟它们之间的接触。

Simscape使用所谓的'凸船体代表'来为我们导入的CAD模型建模。当使用具有许多功能的部件时,这可能会导致奇怪的物理表示。与其担心这个,我们决定用领域来模拟车轮的几何形状。这种方法被称为使用“代理几何”,在处理复杂几何时非常有用。

截屏

球体具有与车轮相同的半径和密度。在检查“导出整个几何”框后,标记为“G”的端口出现在球体上。这连接到空间接触力块的一侧,另一侧连接到地面块上的“G”端口,我们之前可用。恭喜!现在你增加了联系力!

扭矩

在为所有四个轮子做了这个之后,是时候给轮子添加一个驱动扭矩了。这实际上是增加了旋转力,这个力来自于真正机器人的马达。我们要建模的机器人是前轮驱动,所以我们要增加扭矩输入对两个前轮:

截屏

打开转动关节,展开'致动'设置,并将'扭矩'设置为'输入提供','运动'设置为'自动计算'。这将创建另一个标记为“t”的输入端口。对于测试,可以从常量输入开始,并使用金宝appSimulink-PS转换器阻止将其转换为物理信号。请注意,您必须使用此块将信号单元设置为N * M或所需的单位。你可以看看此示例的文件来看看我们是如何实现这些连接的

减震

设置一个扭矩输入后,您将需要设置阻尼值的轮子。阻尼是关节抵抗速度变化的内部能量耗散。在现实生活中,每一次接触、碰撞和运动都涉及到阻尼,没有阻尼,机器人的运动就会不稳定。

调整模型中每个关节的阻尼值可能是这个过程中最困难的部分。如果您正在寻找一个高性能的模拟,就像我们在本例中所做的那样,那么考虑注释掉机器人的一些组件,并逐步增加模型的复杂性,以跟踪模拟何时开始大幅放缓。总的来说,以下是我的两个主要收获:

  1. 几乎所有关节都会增加一些阻尼。
  2. 在具有输入扭矩的接头或经历高负荷的接头添加更大的阻尼。

例如,前轮(有输入扭矩)的最佳阻尼值为20 N*m/(deg/s),而后轮(无输入扭矩)的最佳阻尼值为1 N*m/(deg/s)。

所附模型中的阻尼值对于类似重量和尺寸的机器人应该是一个很好的起点。为了调整阻尼值,我建议运行模型与金宝appSimulink Solver Profiler..求解器分析器将记录事件,显着减慢模拟为“解算器异常”。如果一个关节引起了许多求解器异常,那么您所选择的阻尼值可能至少可以通过一个数量级进行调整。

调整接触参数 - 摩擦和刚度

在调整阻尼值后,在《Simscape Multibody》中制作真实驾驶的最后一步是调整“空间接触力”块的摩擦和刚度参数。

这是我的主要外卖器来自摩擦/僵硬调整:

  1. 如果摩擦系数太高,高力会导致机器人“飞”出屏幕。
  2. 如果摩擦系数太低,你会看到车轮在行驶时打滑
  3. 如果刚度过高,则重力会导致机器人在地面“弹跳”。
  4. 静摩擦系数应始终大于动摩擦系数。
  5. 如果你喜欢冒险,或者找不到好的价值,阅读本帖子如何设置这些参数对于更确定的方法。

如果您遵循上述步骤,您现在应该有一个可以在Simscape环境中驱动的机器人!你可以加金宝appSimulink仪表板块来控制恒定块的值,该块驱动驱动的关节,这将有助于您使用模拟遥控器测试正确的机器人运动。

机器人和物体之间的力

现在您有一个模型可以驱动,最后一步是给机器人任务。但在这种情况下,首先我们需要为臂和爪实施动作,以便能够实现对象抓握。

VEX V5 CLAWBOT电动机能够进行扭矩和位置控制。我们决定将扭矩控制成为车轮输入的最佳选择,但该位置控制更好地用于爪和臂输入。这也让我们有机会向您介绍一个不同的关节致动方法。

手臂控制

我们将从如何控制臂位置开始。看着Clawbot模型,我们看到电机连接到一组驱动下臂的齿轮。而不是担心在Simscape中建模齿轮比,而是将电机建模,因为直接连接到下臂:

截屏

由于我们正在使用位置控制,我们将要将动作设置更改为“运动”设置为“由输入提供”,并且“扭矩”设置为“自动计算”。

扭矩输入的Simcape接头的运动输入略有不同,因为它需要一个物理信号中的位置,速度和加速度都在一起。您可以使用上面显示的选项与Simulink-PS转换器块金宝app使用Simulink-PS转换器块实现此功能。另请务必将单位设置为“弧度”或您的首选选择,并以与先前所概述的方式相同的方式添加一些阻尼。

你在这里看到的“armPosition”输入模块连接到Simulink仪表盘开关,它在手臂水平(0度旋转)和向下到地面(3金宝app7度旋转)之间切换。然而,如果我们直接从0切换到37,或者反之,Simscape物理信号的计算速度将是无限的!这将导致模型中出现错误。我们如何解决这个问题?

我们使用一个速率限制器块!!

截屏

速率限制器阻止将信号的上升或下降速率限制为+/- 25 deg / s。然后通过增益块转换为弧度,最后连接到A'零级持有”块,“保持”在常量数字处的输入值,直到下次下游需要它。通常,这些是要记住的两个有用的Simulink块。金宝app

爪接触和控制

在向爪添加位置之前,我们首先需要准备爪子和它正在拾取的立方体之间的力量。

对于我们的机器人,通过在爪子和块之间的压力和可以帮助重力的块之间添加力可以实现拔爪的块。我们可以用......你猜到它......'空间接触力'块。然而,就像将球体添加到轮子一致一样,我们必须弄清楚如何将“几何连接”添加到爪中。我们通过向爪的每一侧添加三个矩形来完成此操作,以作为我们的联系代理(6总数)。

爪

在Simscape环境中,爪子的左半部分看起来像这样:

截屏

这看起来可能很复杂,但它只是我们到目前为止在本博客中使用过的其他几个技术的汇编。让我们来分解一下:

L1,L2和L3是使用“的3种不同尺寸的矩形”砖固体' 堵塞。我使用了爪子的CAD来测量每一个的厚度和长度。一旦您有足够的联系人代理来解释所需的联系点,您需要将它们附加到捏填料的质心上并将它们放在正确的位置。我估计了基于视觉效果的这些位置。

由于每个接触点具有单独的几何形状,因此它们需要自己的空间接触力块。对于爪的两侧,这意味着有6个总力块,它们都将连接到目标对象。对于您的机器人,您可以选择许多需要许多接触点,在这种情况下,我们希望能够为未来的模拟挑选圆对象。

截屏

标记为“Pickup”的块是Clawbot被告知在此虚拟环境中拾取的立方体。拾取块连接到CLAW2BLOCK1信号,该信号来自爪中的6个空间接触力块。

还有另外两个力块(见上面的箭头)连接到立方体。这些力块将立方体连接到地面和“放下”块,即机器人试图将立方体送到的圆柱体。这意味着立方体在《模拟场景》中有8个不同物体的接触力!在这种情况下,对象与地板、目标圆柱体和钳子中的6个接触点相互作用。但是根据你要建立的模拟,你肯定会有或多或少的接触块。

立方体连接到世界框架,地面和一个平面棱镜关节。最初,我们使用了一个6自由度的关节,就像爪子机器人和地面一样,但包括额外的自由度来解释立方体的倾斜增加了复杂性,因此模拟运行缓慢。平面关节和移动关节让我们能够拿起并移动物体这是非常棒的;在我们的模拟中,块不能向前或侧向倾斜,但取决于模拟的保真度/真实感,你可以将这些改变为另一个六自由度关节。

我们的模型到此结束!如果您一直跟踪到这一点,您应该已经能够为您的机器人创建一个模拟,以便它能够拾取一个立方体并将其传送到匹配的目标。在我们的例子中,我们做了一个模型,我们可以用一些控制来驱动机器人。

截屏

在下一节中,我们将讨论2种方法,以帮助您使机器人自主!

添加自主语 - 设计控制算法

到目前为止,我们建立了一个模型,用于在Simscape环境中手动控制机器人。这里有两种型号,实现了自主控制。假设控制器只知道立方体和目标的初始位置,而另一个实现了通过主动跟踪多维数据集和目标的位置来实现感知。

截屏

在这两个例子中,我们使用州流程对机器人的位置和姿态进行处理,与目标位置进行比较,并计算必要的轨迹。

为了说明感知的价值,我添加了一些控件来移动目标中模仿真:

gif的clawbot

您是否想了解有关为自治机器人设计控制算法的更多信息?看看我们的移动机器人技术培训视频系列。如果您想了解有关我们为Clawbot开发的状态流算法的更多信息,请检查在此完成文件并在评论中发布问题!

评估您的设计/控制算法的性能

该虚拟环境是评估竞争前的自主控制算法性能的重要方法。更改代码并重新运行您的模型比使用真实硬件更快,您可以评估不同机器人轨迹的效率,更改为机械设计,还有更多而不将您的机器人分开。

本练习中最大的不确定性的观点是,无法模拟现实世界中机器人的物理学。我们在这里所做的阻尼,僵硬和摩擦调整主要是基于仿真速度,并且可能存在额外的干扰。所以,模型尽可能多,您可以随时使用来自现实世界测试的信息进一步调整模拟。

然而,即使没有最准确的模型,模拟也会为您的开发过程增加巨大的价值。也许你的轮子在现实生活中有更高的牵引力,而机器人移动的速度是你的两倍?这很好,使用传感器设计闭环控制,这样你的算法不依赖于时间,只依赖于位置!例如,我们使用模拟来确保我们的自主逻辑能够承受目标位置的快速变化。此外,如果您想改进模型并使用模拟并行进行测试,您总是可以返回并调整模拟参数。

感谢您跟随我们的旅程,并请与我们分享您的模型和任何问题!

|

评论

要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。