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

2023-12-23 21:45

本文主要是介绍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。

这篇关于MATLAB - 机器人逆运动学设计器(Inverse Kinematics Designer APP)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/529581

相关文章

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

怎么让1台电脑共享给7人同时流畅设计

在当今的创意设计与数字内容生产领域,图形工作站以其强大的计算能力、专业的图形处理能力和稳定的系统性能,成为了众多设计师、动画师、视频编辑师等创意工作者的必备工具。 设计团队面临资源有限,比如只有一台高性能电脑时,如何高效地让七人同时流畅地进行设计工作,便成为了一个亟待解决的问题。 一、硬件升级与配置 1.高性能处理器(CPU):选择多核、高线程的处理器,例如Intel的至强系列或AMD的Ry

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机

SprinBoot+Vue网络商城海鲜市场的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平台Java领域优质创作者,全网30w+

matlab读取NC文件(含group)

matlab读取NC文件(含group): NC文件数据结构: 代码: % 打开 NetCDF 文件filename = 'your_file.nc'; % 替换为你的文件名% 使用 netcdf.open 函数打开文件ncid = netcdf.open(filename, 'NC_NOWRITE');% 查看文件中的组% 假设我们想读取名为 "group1" 的组groupName

利用matlab bar函数绘制较为复杂的柱状图,并在图中进行适当标注

示例代码和结果如下:小疑问:如何自动选择合适的坐标位置对柱状图的数值大小进行标注?😂 clear; close all;x = 1:3;aa=[28.6321521955954 26.2453660695847 21.69102348512086.93747104431360 6.25442246899816 3.342835958564245.51365061796319 4.87

单片机毕业设计基于单片机的智能门禁系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍程序代码部分参考 设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订

Spring的设计⽬标——《Spring技术内幕》

读《Spring技术内幕》第二版,计文柯著。 如果我们要简要地描述Spring的设计⽬标,可以这么说,Spring为开发者提供的是⼀个⼀站式的轻量级应⽤开发框架(平台)。 作为平台,Spring抽象了我们在 许多应⽤开发中遇到的共性问题;同时,作为⼀个轻量级的应⽤开发框架,Spring和传统的J2EE开发相⽐,有其⾃⾝的特点。 通过这些⾃⾝的特点,Spring充分体现了它的设计理念:在

C# double[] 和Matlab数组MWArray[]转换

C# double[] 转换成MWArray[], 直接赋值就行             MWNumericArray[] ma = new MWNumericArray[4];             double[] dT = new double[] { 0 };             double[] dT1 = new double[] { 0,2 };

开题报告中的研究方法设计:AI能帮你做什么?

AIPaperGPT,论文写作神器~ https://www.aipapergpt.com/ 大家都准备开题报告了吗?研究方法部分是不是已经让你头疼到抓狂? 别急,这可是大多数人都会遇到的难题!尤其是研究方法设计这一块,选定性还是定量,怎么搞才能符合老师的要求? 每次到这儿,头脑一片空白。 好消息是,现在AI工具火得一塌糊涂,比如ChatGPT,居然能帮你在研究方法这块儿上出点主意。是不