学生休息室

分享技术和现实生活中的例子,学生如何在他们的日常项目中使用MATLAB和Simulink # studentsuccess金宝app

创建虚拟机器人环境Simscape:添加物理对象交互,自主权

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

上半年,我们讨论了你的CAD导入Simscape多体,与关节和连接你的部分。在这篇文章中我们将讨论增加物理对象互动机器人,最后你的机器人如何利用仿真软件程序。金宝app享受吧!

实现物理

一旦你确认你的主要机器人组装正确模拟,下一步是实现物理会使机器人像在现实生活中。第一步是创建其他对象的模拟。例如,能够使用车轮与地面之间的摩擦移动需要我们有一个地面或地板上。我们通过简单的创建一个非常大的矩形层砖固体块。

截图

注意,选项是检查导出整个几何。我们将使用这个导出几何一旦我们添加不同的环境之间的交互组件。

添加物理——驾驶在地上

重力

自然重力影响所有真实的机器人,所以我们还需要确保我们的模拟账户。创建地面后,你需要直接连接块3块:解算器配置,世界坐标系,机制配置。这三个模块是必不可少的对于任何Simscape多体模型,并在该机制配置块我们可以设置所需的重力模拟。

地面是直接连接到世界坐标系因为我们总是希望它是静态的,而机器人是第一次连接到地面使用6自由度关节。6自由度关节允许机器人翻译和世界上任何方向相对于坐标系旋转,这就是我们想要的因为我们想要开车在地板上。

截图

为了使机器人在地板上移动,我们需要模拟的法向力和摩擦时轮子接触地面。幸运的是这两种力量可以与一个块:建模“空间接触力的块。

还记得我们指出出口的复选框地面块的几何?这就是它会发挥作用。

添加空间接触力

力和运动模型,我们需要引入“几何关系”。这些连接是由冲/溺爱线。一块空间接触力的连接两个不同部分的几何模型之间的联系。

Simscape使用所谓的“凸包表示“我们进口CAD的几何模型。这可能会导致奇怪的物理表示在处理部分有很多功能。而不是担心这个,我们决定使用模型的几何形状。这种方法被称为使用“代理几何”,可以是非常有用的在处理复杂的几何图形。

截图

球面半径和相同密度。在检查导出整个几何的盒子,一个端口标记“G”出现的球体。这个连接到一块空间接触力的一侧,另一侧是连接到地面块“G”的港口,我们可用。恭喜!现在您已经添加了一个接触力!

转矩

这样做对所有四个轮子之后,是时候增加车轮的驱动转矩。这就是添加旋转的力量,将来自汽车在现实的机器人。机器人建模是前轮驱动,所以我们要添加一个转矩输入两个前轮:

截图

打开转动关节,扩大“驱动”设置,和开关的扭矩设置为“提供的输入”,和“运动”设置为“自动计算”。这将创建另一个输入端口标记“t”。对于测试,您可以开始与一个常数输入,并使用金宝appSimulink-PS转换器块将其物理信号。请注意,您必须使用这个块设置信号单位N * m或你想要的单位。你可以看一下对于这个示例文件看我们如何实现这些连接

阻尼

后设置一个转矩输入您需要设置阻尼值的轮子。阻尼的内部能量耗散的联合抵制变化的速度。一些阻尼参与每一个真实的接触碰撞和运动,没有它你的机器人的运动将是不稳定和不稳定。

优化模型中的每个关节阻尼值可能是这个过程中最困难的部分。如果你正在寻找一个高性能模拟就像我们对于这个示例,然后考虑评论了一些机器人的半成品,逐步增加更复杂的模型跟踪仿真开始时大幅放缓。总的来说,这是我的两个主要收获:

  1. 添加一些阻尼几乎所有关节。
  2. 添加更多的阻尼与输入转矩、关节或关节,经验高负载。

例如,最优阻尼值前轮(具有一个输入转矩)20 N * m /(度/秒),而对于后轮(没有输入转矩)1 N * m /(度/秒)。

附加模型中的阻尼值应该是一个好的起点类似机器人的重量和尺寸。调整阻尼值,我推荐的模式运行金宝app模型解算器分析器。解算器分析器将大幅减缓模拟记录事件为“解算器异常”。如果联合导致很多解决异常,阻尼值你选择可以调整至少一个数量级。

优化接触参数——摩擦和刚度

优化阻尼值后,最后一步Simscape多体生成逼真的驾驶是优化您的摩擦和刚度参数空间接触力的街区。

这是我的主要收获摩擦/刚度优化:

  1. 如果摩擦系数太高,高力会导致机器人“飞”出屏幕。
  2. 如果摩擦系数太低,你开车时可以看到车轮滑移
  3. 如果硬度太高,那么重力使机器人在地上“反弹”。
  4. 静态摩擦系数应该总是大于动态摩擦系数。
  5. 如果你有冒险精神或找不到好的值,读这篇文章就如何设置这些参数更确定的方法。

如果你遵循以上步骤,你现在应该有一个机器人,可以开车在Simscape环境!您可以添加金宝app仿真软件仪表板阻塞控制常数的值,驱动驱动关节,这将帮助你正确测试使用模拟远程控制机器人的运动。

机器人和对象之间的力量

现在,您已经有了一个模型,可以开车,最后一步是给机器人的任务。但在这种情况下,首先我们需要实现运动的胳膊,抓爪为了使对象。

烦恼V5 Clawbot马达能转矩和位置控制。我们决定转矩控制方向盘的输入将是最好的选择,但这位置控制更有效的爪和手臂的输入。这也给了我们一个机会向大家介绍不同的关节驱动方法。

手臂控制

我们将开始与如何控制臂的位置。看着Clawbot模型,我们发现电机与一组齿轮,驱动下臂。而不是担心建模Simscape齿轮比率,我们建模的马达是直接连接到下臂:

截图

因为我们正在与位置控制,我们要改变‘运动’的驱动设置设置为“提供的输入”和“扭矩”设置为“自动计算”。

运动输入Simscape关节转矩输入略有不同,它需要的位置,速度和加速度都在一个物理信号。你可以用Simulink-PS转换器实现这一块用上面所示金宝app的选项。也一定要将单位设置为“弧度”或你的首选,并添加一些阻尼的胳膊,爪关节一样我们先前概述。

armPosition的轮廓尺寸块你看到的是附加到仿真软件指示板开关,该开关臂之间的水平(在0度旋转),和地上(37度旋转金宝app)。然而,如果我们直接从0到37,反之亦然,开关Simscape物理信号的计算速度将无穷!这将导致一个错误的模型。我们如何解决这个问题呢?

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

截图

速度限制器块限制信号的上升或下降率+ / - 25度/秒。然后获得块转换为弧度,最后连接到一个“零级持有”块,“持有”输入值在一个常数,直到下一个块下游需要它。一般来说,这些是要记住两个有用的模型块。金宝app

爪接触和控制

添加位置输入爪之前,我们首先需要准备爪和多维数据集之间的力量正在加速。

为我们的机器人,捡起一块的爪爪之间可以通过增加力量和块,可以帮助对抗重力。我们可以做所有这一切…你猜对了…一个空间接触力的块。然而,就像添加一个球体大轮子的同时,我们必须找出如何添加“几何连接”。我们通过添加三个矩形的爪作为我们联系代理(6)。

爪

在Simscape环境中,左边一半的爪是这样的:

截图

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

L1、L2和L3 3个不同大小的矩形创建使用'砖固体的块。我使用了CAD的爪来衡量每一个的厚度和长度。一旦你有足够的接触代理占所需的接触点,您需要将它们附加到折叠的重心放在正确的位置。我估计这些位置基于视觉效果。

由于每个接触点都有一个单独的几何形状,他们需要自己的空间接触力。双方的爪,这意味着总共有6块,他们都要连接到目标对象。然而对于你的机器人可以选择许多接触点是必须的,在这种情况下,我们希望能够接轮为未来的模拟对象。

截图

块标记为“皮卡”是立方体,Clawbot被告知去接在这个虚拟环境。小块连接到Claw2Block1信号,来自6块空间接触力的爪。

还有两个力块(见上面的箭头)连接到多维数据集。这些力块立方体链接到地上,“跳伞”的块,这是气缸机器人正试图提供多维数据集。这意味着立方体有接触力与Simscape 8个不同的物体!在这种情况下,对象与地板,目标缸6接触点的鞋子。但根据模拟你试图建立你当然可以有或多或少的接触块。

立方体连接到世界坐标系,地面,平面棱镜关节。最初我们用6自由度关节Clawbot和地面一样,但是包括额外的自由度占立方体的倾斜会增加复杂性,因此模拟运行时慢。平面和移动关节允许我们捡起和移动块,它是伟大的;块不能歪向前或对我们的模拟,但根据仿真逼真度/现实你希望你可以改变这些到另一个6自由度关节。

让我们结束我们的模型!如果你沿着直到这个时候你应该已经能够为你创造一个仿真机器人,所以它可以接一个立方体和传输一个匹配的目标。在我们的例子中我们做了一个模型,我们可以驾驶机器人控制。

截图

在下一节中我们将讨论2方法帮助你让你的机器人自主!

增加自主权,设计控制算法

到目前为止,我们已经建立了一个模型,手动控制机器人的Simscape环境。这里有两个模型,实现自动控制。一个假设控制器只知道立方体的初始位置和目标,而另一方实现感知,积极跟踪数据集和目标的位置。

截图

在两种情况下,我们使用Stateflow处理机器人位置和姿态,与目标位置的比较,计算所需的轨迹。

为了说明的价值感知,我添加了一些控制移动目标mid-simulation:

gif的clawbot

你想了解更多关于设计一个自主机器人控制算法吗?看看我们移动机器人技术培训视频系列。如果你想了解更多关于Clawbot Stateflow算法我们开发,检查完整的文件在这里在评论中提出问题!

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

这个虚拟环境是一个很好的方法来评估一个自治的性能控制算法在竞争。改变你的代码并重新运行您的模型速度大大快于工作与真正的硬件,你可以评估不同机器人轨迹的效率,改变你的机械设计,更没有把你的机器人。

最大的不确定性在此练习中是不可能完全的物理模型机器人在现实世界中。阻尼、刚度和摩擦调整我们在这里做的主要是基于模拟速度和可能有额外的干扰。模型一样你认为有必要和你可以调整你的模拟进一步从真实世界的测试信息。

然而,即使没有最精确的模型,模拟将巨大的价值添加到您的开发过程。也许你的轮子有更高的牵引在现实和机器人移动速度的两倍?这很好,设计使用传感器闭环控制,所以你的算法不依赖于时间,只有位置!例如,我们使用我们的模拟中,以确保我们的自治逻辑会承受快速变化到目标位置。此外,你可以回去调整你的如果你想改善你的模型和仿真参数保持并行测试使用模拟。

谢谢你和我们一起在这个旅程后,请与我们分享你的模型和任何问题!

|

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。