MATLAB - 机器人逆运动学设计器(Inverse Kinematics Designer APP)

系列文章目录


前言


一、简介

通过逆运动学设计器,您可以为 URDF 机器人模型设计逆运动学求解器。您可以调整逆运动学求解器并添加约束条件,以实现所需的行为。使用该程序,您可以

  • 从 URDF 文件或 MATLAB 工作区导入 URDF 机器人模型。
  • 调整逆运动学求解器和约束条件。
  • 创建关节配置并导出航点。
  • 将求解器设置、约束和关节配置导出到 MATLAB® 工作区。

二、打开 Inverse Kinematics Designer App

  • MATLAB 工具条: 在 "应用程序 "选项卡上的 "机器人和自主系统 "下,单击 "逆运动设计器 逆运动设计器 "图标。
  • MATLAB 命令提示符: 输入 inverseKinematicsDesigner。

三、示例

3.1 创建逆运动学设计器

本示例演示了如何创建、加载和保存逆运动设计器会话,以及如何将机器人加载到会话中。完成文件作为 iksessiondata.mat 附后,以供参考。使用 inverseKinematicsDesigner 函数加载会话,或按照本示例创建会话。

3.1.1 创建

使用 inverseKinematicsDesigner 函数打开逆运动设计器。

inverseKinematicsDesigner


3.1.2 加载机器人模型

在命令窗口中使用 loadrobot 将刚体树(如 Universal UR5e)加载到工作区。importrobot 也可用于从任何机器人 URDF 文件中导入刚体树对象。

uniUR5e = loadrobot("universalUR5e");

单击 "新建会话",从对话框的表格中选择 uniUR5e,然后单击 "确定"。该表包含工作区中的所有刚体树对象。如果在表中没有看到您的对象,请确认该对象是否在工作区中,然后单击 "刷新"。

或者,您也可以使用刚体树下拉菜单,从机器人系统工具箱(Robotics System Toolbox™)附带的机器人模型列表中进行选择,然后单击 "确定",加载一个机器人。

 现在,"场景画布 "包含机器人模型,"场景浏览器 "显示机器人的所有刚体。

 

3.1.3 添加碰撞对象

要在 "场景画布 "中添加碰撞对象,工作区中必须有一个碰撞对象。为方便起见,本示例提供了一个简单的方框供您使用。有关创建碰撞对象的更多信息,请参阅 collisionMesh、collisionBox、collisionSphere 和 collisionCylinder。

加载 collisionobject MAT 文件,将名为 box 的 collisionBox 保存到工作区。单击 "添加碰撞对象",然后从表格中选择 box。单击 "确定 "将其添加到 "场景画布 "中。

现在,"场景画布 "中包含了机器人和碰撞对象。在本示例中,我们将保留该对象,但如果要删除碰撞对象,请在场景浏览器中的场景下找到碰撞对象,右键单击碰撞对象的名称并单击删除。

 

在 "场景画布 "或 "场景浏览器 "中选择对象时,可使用 "场景检查器 "查看对象的位置和欧拉方位。列出的属性将根据所选碰撞对象的类型而改变。

3.1.4 保存会话

要保存此会话,请单击 "保存会话"。如果这是第一次保存会话,请命名文件并选择保存位置。文件将保存为包含所有会话数据和设置的 MAT (*.mat) 文件。

 

3.1.5 加载保存的会话

要加载会话文件,请单击 "Inverse Kinematics Designer(逆运动设计器)"应用程序中的 "Open Session(打开会话)",或以字符串形式向 inverseKinematicsDesigner 指定 MAT 文件。本示例中提供的会话示例为 iksessiondata.mat。

inverseKinematicsDesigner("iksessiondata.mat")

 

3.2 使用 "场景画布 "并移动机器人

本示例演示如何使用场景画布,并使用逆运动设计器应用程序在其中移动机器人。

加载现有会话 (ixsessiondata.mat),或参考创建逆运动设计器会话示例创建会话。

inverseKinematicsDesigner


3.2.1 场景画布控件

使用场景画布中的轴工具栏控制视图。

 

 

要旋转场景画布,请选择旋转 3D 按钮并在场景中单击和拖动。

单击 "平移 "按钮,然后在场景中单击并拖动,即可在 "场景画布 "中平移。

选择 "放大 "或 "缩小 "按钮,然后单击并向上或向下拖动,可分别放大或缩小场景画布内的某个区域。

单击 "恢复视图 "按钮可恢复到原始默认视图。

3.2.2 移动机器人

使用预设的 "标记姿势目标 "约束等约束条件移动机器人。标记姿势目标约束是移动机器人最简单的约束。该约束在机器人模型的最后一个体上设置目标姿势。在本例中,标记体被设置为工具 0。在 "场景画布 "中,通过红色、绿色和蓝色的线性和圆形指示符,可视化所选标记体顶部的标记。单击并拖动线性或圆形指示符将分别改变目标位置和欧拉方向。颜色与 "场景画布 "左下方显示的坐标轴颜色相对应。

单击 "标记姿势约束 "打开 "约束 "选项卡。在 "约束 "选项卡中,设置以米为单位的笛卡尔位置、以度为单位的欧拉方向,以及位置和方向的权重和公差。标记体可以在 "约束 "选项卡的 "末端执行体 "列表或 "逆运动学 "选项卡的 "标记体 "列表中更改。单击 "应用 "保存任何更改,单击 "关闭约束 "退出 "约束 "选项卡。请注意,指定的欧拉角是使用 XYZ 序列计算的。

 

还可以通过清除或选择 "约束浏览器 "中 "标记姿势目标 "约束旁边的复选框来打开或关闭 "标记姿势目标 "约束。

3.2.3 解决方案详情

移动 "目标标记姿势 "时,会设置目标姿势,逆运动学求解器会求解所选标记体到达目标姿势的配置。如果找不到目标姿势的解决方案,机器人将移动到最佳可用解决方案,而标记体将不会移动到标记姿势目标。这种解决方案可以通过 "约束浏览器 "中的约束图标直观地识别出来。图标上的红色 x 表示未满足约束条件,而绿色复选框则表示正在满足约束条件。

 

 要了解求解器未能求解的更多信息,请单击 "报告状态 "查看求解器求解的详细信息。迭代次数和随机重启次数分别列出求解器执行的次数。违反约束条件"(Constraints Violations)显示了可在命令窗口中显示的所有冲突的结构数组。如果求解器成功求解出目标姿态,状态将显示成功;如果求解器无法求解出目标姿态,则显示其找到的最佳可用解。退出标志(Exit Flag)提供了特定求解器算法执行的更多细节。有关不同退出标志类型的更多信息,请参阅 "逆运动学算法"。

要排除求解器无法求解的原因,请参阅 "解决约束冲突 "了解一些技巧。

 3.3 创建无碰撞配置并输出航点

本示例演示如何使用逆运动设计器创建关节配置,并使用场景检查器检查碰撞。本示例使用了 "创建逆运动设计器会话 "和 "使用场景画布和移动机器人 "中的数据和技能。在继续之前,请参考这些示例。

3.3.1 加载会话

使用 inverseKinematicsDesigner 和 iksessiondata.mat 会话文件,在场景中加载具有基本碰撞对象的机器人。

inverseKinematicsDesigner


3.3.2 创建配置

使用配置面板创建、修改和查看配置。

在移动机器人之前,单击 "存储配置 "保存机器人当前的关节配置,如场景画布所示。这将把配置添加到 "配置面板 "的表格中,其中包含默认配置名称、碰撞状态和每个关节的矢量值。双击相应元素可编辑每个配置的名称和值。将此配置重命名为 home,并将其值保留为 [0.00 0.00 0.00 0.00 0.00 0.00 0.00]。

创建另一个配置,但这次要使其与方框相撞。使用 "标记姿势约束 "将末端执行器设置为[-0.5 0.5 0]处的方框中心,然后存储配置。要在多个配置之间切换视图,请选择一个配置,单击 "捕捉到配置 "或单击 "向前或向后步进 "按钮,以步进方式切换当前配置。 

 

3.3.3 检查碰撞

单击检查碰撞 > 检查所有配置更新所有存储配置的碰撞状态。要检查一个配置,请选择所需的配置,单击 "捕捉到配置",然后单击 "检查碰撞">"检查当前配置 "更新当前所选配置的碰撞状态。

 碰撞检查完成后,第一个和第二个配置的碰撞状态分别为 PASS 和 FAIL。选择碰撞检查失败的配置。场景浏览器中选定配置的主体会更新,显示红色 x 或绿色检查图标,分别表示该主体处于碰撞状态或无碰撞状态。在场景画布中,标记为 "碰撞中 "的体也将以红色高亮显示。请注意,法兰和工具 0 虽然看起来在位置上处于碰撞状态,但却被标记为无碰撞状态。这是因为这些机构只是框架,不包含碰撞网格。如果您打算检查碰撞,请在导入任何机器人之前确保机器人的实体包含碰撞网格。

在 "场景浏览器 "或 "场景画布 "中单击该框,选择该框,然后检查 "状态 "窗格。状态 "窗格包含位置、方向、碰撞状态以及自上次碰撞检查以来所有已知碰撞的列表。已知碰撞列表显示了与所选体发生碰撞的所有体。从列表中选择任何一个车身并单击 "检查选定车身",场景检查器就会切换到该本体。

 

3.3.4 创建配置路径

要创建路径,请按顺序依次向表中添加配置。由于第二个配置与方框冲突,因此选择它并单击删除。

将目标标记姿态设置为方框后 [-0.9 0.0 0.1],并存储配置。该配置将成为目标配置,因此将其重命名为目标。

 

捕捉到 "原点 "配置,并在[-0.5 0.5 0.5]处的方框上添加一个额外配置,作为 "原点 "和 "目标 "之间的中间配置。如果需要修改配置,请捕捉到该配置,调整目标标记姿势,保存新配置并删除旧配置。单击 "移动配置 "按钮,在原点和目标配置之间移动新配置。

单击检查碰撞 > 检查所有配置检查所有配置是否发生碰撞。如果某个配置未通过,请进行必要的调整。

3.3.5 将配置导出为航点

保存会话也会保存会话中存储的配置,但要将配置作为航点导出到 MATLAB™ 工作区,请单击导出 > 配置。选择要导出的所有配置,在航点矩阵名称中指定航点矩阵的名称,然后单击导出。检查工作区中是否有包含航点的矩阵。请注意,航点矩阵的大小取决于导出配置的数量和机器人关节的数量,并将以行格式导出。本例中的航点矩阵尺寸为 3x6。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/295147.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nodejs+vue+ElementUi资源互助共享平台的设计

后台:管理员功能有个人中心,用户管理,卖家管理,咨询师管理,萌宝信息管理,幼儿知识管理,保姆推荐管理,音频资源管理,二手商品管理,商品分类管理,资…

细粒度语义对齐的视觉语言预训练

抽象 大规模的视觉语言预训练在广泛的下游任务中显示出令人印象深刻的进展。现有方法主要通过图像和文本的全局表示的相似性或对图像和文本特征的高级跨模态关注来模拟跨模态对齐。然而,他们未能明确学习视觉区域和文本短语之间的细粒度语义对齐,因为只有…

Open5GSUeRANSim3:VirtualBOX VM使用static IP并和host互通

本文档参考 https://blog.csdn.net/shuaihj/article/details/127589833 https://www.cnblogs.com/manongqingcong/articles/16659150.html https://blog.csdn.net/justlpf/article/details/132977047 VM默认使用的是自动分配的IP,每个VM的ip都是10.0.2.15。后续为了…

fba海派和传统海运的区别,亚马逊 FBA货物包装技巧—站斧浏览器

fba海派和传统海运的区别 1、美国FBA海派是什么? 美国FBA海派即将商品通过海洋运输的方式运送到美国亚马逊FBA仓库的服务。这种方式主要适用于大批量或大件商品,因为相比其他物流方式,海派具备成本低和运载量大的优势。 2、传统海运是什么…

鸿蒙开发者工具安装及入门程序

下载工具DevEco Studio IDE 官网下载:HUAWEI DevEco Studio和SDK下载和升级 | HarmonyOS开发者 开发工具的安装 解压下载好的压缩包,一路无脑安装即可,安装完的使用方法类似于IDEA、WebStorm的使用,快捷键一致,默认黑…

电机控制 相关基础概念

基本概念: 定子或者转子上有铁心或者绕铜线的地方,绕铜线的地方叫槽,而将槽分开的叫齿,将所有的齿连起来的部位较轭部。 磁感应强度与磁场强度之间的关系可以通过以下公式表示: B=μH 其中,B 是磁感应强度,H 是磁场强度,μ 是磁导率。这个关系表明,在给定磁场强度下…

DETR 【目标检测里程碑的任务】

paper with code - DETR 标题 End-to-End Object Detection with Transformers end-to-end 意味着去掉了NMS的操作(生成很多的预测框,nms 去掉冗余的预测框)。因为有了NMS ,所以调参,训练都会多了一道工序&#xff0c…

体验一下 CodeGPT 插件

体验一下 CodeGPT 插件 0. 背景1. CodeGPT 插件安装2. CodeGPT 插件基本配置3. (可选)CodeGPT 插件预制提示词原始配置(英文)4. CodeGPT 插件预制提示词配置(中文)5. 简单验证一下 0. 背景 看到B站Up主 “wwwzhouhui” 一个关于 CodeGPT 的视频,感觉挺有意思&#…

二叉搜索树 --- C++实现

目录 1.二叉搜索树的概念 2.二叉搜索树的操作 3. 二叉树的实现 4.二叉搜索树的应用 5. 二叉树的性能分析 6. 二叉树进阶练习题 1.二叉搜索树的概念 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树: 若它的左…

服务器经常死机怎么办?如何处理

关于服务器死机这一话题相信大家是不会陌生的,平时在使用服务器的过程中,或多或少都是会有遇到过。轻则耽误业务开展,重则造成数据丢失,相信每个人都不想碰到服务器死机的情况。下文我也简单的介绍下服务器死机的原因以及对应的预…

【HDFS联邦(1)】ViewFs与联邦理论知识详解

文章目录 一.ViewFs介绍二. 联邦之前的旧世界1. 单个 namenode集群2. 路径使用逻辑 三. 新世界 – 联邦与ViewFs1. How The Clusters Look2. 使用 ViewFs 为每个集群创建全局的Namespace2. 路径使用逻辑3. 路径使用最佳实践(ing) 本文主要想讨论 HDFS Vi…