MATLAB - 加载预定义的机器人模型

系列文章目录


前言


一、

要快速访问常见的机器人模型,可使用 loadrobot 功能,该功能可加载市售的机器人模型,如 Universal Robots™ UR10 cobot、Boston Dynamics™ Atlas 人形机器人和 KINOVA™ Gen 3 机械手。探索如何生成关节配置并与机器人模型交互。

要导入自己的通用机器人描述格式(URDF),请参阅 importrobot 功能。

以字符串形式向 loadrobot 函数指定机器人模型类型。利用制表符完成从提供的模型列表中选择输入。

若要使用列向量进行关节配置,请将数据格式指定为 "列"。

ur10 = loadrobot("universalUR10");
atlas = loadrobot("atlas");
gen3 = loadrobot("kinovaGen3","DataFormat","column");

loadrobot 函数返回一个刚体树(rigidBodyTree)对象,该对象表示每个机器人模型的运动学和动力学。某些模型可能没有加载刚体的动力学或惯性属性。请使用 Bodies 属性或 getBody 函数检查各个刚体。

disp(gen3);
  rigidBodyTree with properties:NumBodies: 8Bodies: {[1x1 rigidBody]  [1x1 rigidBody]  [1x1 rigidBody]  [1x1 rigidBody]  [1x1 rigidBody]  [1x1 rigidBody]  [1x1 rigidBody]  [1x1 rigidBody]}Base: [1x1 rigidBody]BodyNames: {'Shoulder_Link'  'HalfArm1_Link'  'HalfArm2_Link'  'ForeArm_Link'  'Wrist1_Link'  'Wrist2_Link'  'Bracelet_Link'  'EndEffector_Link'}BaseName: 'base_link'Gravity: [0 0 0]DataFormat: 'column'

调用 show 可视化主配置中的机器人模型。用其他模型替换 gen3 对象,使其可视化。

show(gen3);

show(atlas);

show(ur10);

 

二、生成关节配置

为 KINOVA Gen3 机器人生成随机配置。随机配置(randomConfiguration)函数可在模型限制范围内输出随机关节位置。为验证模型是否符合预期,可视化一组四种配置。

for i = 1:4subplot(2,2,i)config = randomConfiguration(gen3);show(gen3,config);
end

三、与机器人模型互动

要移动机器人模型并检查其行为,可加载交互式刚体树图形用户界面。您可以设置末端执行器的目标位置,手动移动关节,并选择模型中的各种元素。 

interactiveGUI = interactiveRigidBodyTree(gen3);

单击并拖动中心圆盘可自由移动目标末端执行器的位置。图形用户界面使用逆运动学求解每个肢体的关节位置。使用轴线进行线性移动,使用圆圈绕轴旋转。 

点击刚体可查看其具体参数。

右键单击可设置不同的目标标记体。更改目标体可更新逆运动学求解器的末端执行器。

要手动控制关节,请右击并切换标记控制方法。 

 

要控制所选肢体上一个旋进关节的旋转,请单击并拖动黄色圆圈。 

四、保存关节配置

保存使用 addConfiguration 函数设置的特定配置,该函数会将当前关节位置存储在 StoredConfigurations 属性中。本示例在存储前设置了一个随机配置。 

interactiveGUI.Configuration = randomConfiguration(gen3);

addConfiguration(interactiveGUI)
disp(interactiveGUI.StoredConfigurations)
   -0.4218-1.66471.3419-2.08181.8179-0.4140-1.4517

五、下一步

现在您已经在 MATLAB® 中建立了模型,您可能想要做许多不同的事情。

  • 执行逆运动学,根据所需的末端执行器位置获得关节配置。指定模型参数以外的其他机器人约束条件,包括瞄准约束条件、笛卡尔边界或姿势目标。
  • 利用梯形速度曲线、B-样条曲线或多项式轨迹,根据航点和其他参数生成轨迹。
  • 利用机器人模型和快速探索随机树 (RRT) 路径规划器执行机械手规划。
  • 检查与环境中障碍物的碰撞检测,确保机器人安全有效地运动。

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

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

相关文章

小程序基础库与Android之间通信优化的可能

最近在学习graalvm,发现有一个graaljs项目,项目中介绍可以让java与JavaScript做数据转换,比如JavaScript中可以使用java的数据类型与结构。突然想到之前遇到的一个问题,小程序中开发的代码和基础库的部分代码都是j2v8来执行的&…

深入理解 Spark(二)SparkApplication 提交和运行源码分析

spark 核心流程 yarn-client yarn-cluster spark 任务调度 spark stage 级别调度 spark task 级别调度 失败重试和白名单 对于运行失败的 Task,TaskSetManager 会记录它失败的次数,如果失败次数还没有超过最大重试次数,那么就把它放回待调…

【Docker构建MySQL8.0镜像】

Docker构建MySQL8.0镜像 部署流程1. 拉取docker镜像2. 创建数据卷,存放MySQL数据3. 启动MySQL镜像4. 初始化sql放入MySQL镜像5. 执行MySQL脚本6. MySQL镜像打包7. MySQL镜像迁移 部署流程 1. 拉取docker镜像 docker pull mysql:8.0.35拉取成功后就可以看到镜像了&…

NFS(Network File System 网络文件服务)

一,nfs 简介 1,nfs 性质 NFS(Network File System 网络文件服务) 文件系统(软件)文件的权限 NFS 是一种基于 TCP/IP 传输的网络文件系统协议 通过使用 NFS 协议,客户机可以像访问本地目录一样…

【NI国产替代】NI-9231,8通道,51.2 kS/s/ch,-5至5 V,C系列声音和振动输入模块

8通道,51.2 kS/s/ch,-5至5 V,C系列声音和振动输入模块 NI-9231是一款高密度声音和振动模块,能够测量来自速度计、转速计和接近式探针等集成电子压电(IEPE)和非IEPE传感器的信号。该模块可以执行现代麦克风和加速计所需的高动态范围…

verilog编程题

verilog编程题 文章目录 verilog编程题序列检测电路(状态机实现)分频电路计数器译码器选择器加减器触发器寄存器 序列检测电路(状态机实现) module Detect_101(input clk,input rst_n,input data,o…

力扣每日一练(24-1-15)

重复n次检查&#xff0c;几乎都用双指针。。。 固然双指针就是题解&#xff1a; if len(nums) < 3:return len(nums)p1 2 for p2 in range(2, len(nums)):if nums[p2] ! nums[p1 - 2]:nums[p1] nums[p2]p1 1return p1 可以重复两次&#xff0c;那么隔一个检查就行&#…

vtk9.3 配置 visual studio 2019 运行环境 和运行实例详解

&#xff08;1&#xff09;包含文件配置&#xff1a; 项目--属性--VC目录&#xff0c;在包含目录中把include文件夹的地址加进去&#xff0c;一直要到下一级 vtk-9.3目录下&#xff0c; 小知识&#xff1a; 在Visual Studio 2019中运行项目时&#xff0c;如果项目中使用了第三…

网络安全笔记-SQL注入

文章目录 前言一、数据库1、Information_schema2、相关函数 二、SQL注入分类1、联合查询注入&#xff08;UNION query SQL injection&#xff09;语法 2、报错注入&#xff08;Error-based SQL injection&#xff09;报错注入分类报错函数报错注入原理 3、盲注布尔型盲注&#…

【Java 设计模式】创建型之抽象工厂模式

文章目录 1. 定义2. 应用场景3. 代码实现4. 应用示例结语 在软件开发中&#xff0c;抽象工厂模式是一种常见的创建型设计模式&#xff0c;它提供了一种创建一系列相关或相互依赖对象的接口&#xff0c;而无需指定它们具体的类。抽象工厂模式的核心思想是将一组相关的产品组合成…

docker screen 常用基础命令

1.docker基础命令 1.1开启docker systemctl start docker #开启docker service docker restart #重启docker systemctl stop docker #关闭docker 1.2查看命令 docker images #查看docker镜像docker ps #查看正在运行的镜像或者容器docker ps -a #查看所有容器1.3运…

刘知远LLM入门到实战——自然语言基础

文章目录 自然语言处理基础词表示语言模型N-gram ModelNeural Language Model: 为什么NLP等领域的模型越来越大&#xff1f; 大模型会带来哪些新的范式和挑战&#xff1f; 自然语言处理基础 让计算机理解人类语言&#xff0c;图灵测试就是基于对话的方式。 研究历史&#xff…

FlinkAPI开发之处理函数

案例用到的测试数据请参考文章&#xff1a; Flink自定义Source模拟数据流 原文链接&#xff1a;https://blog.csdn.net/m0_52606060/article/details/135436048 概述 之前所介绍的流处理API&#xff0c;无论是基本的转换、聚合&#xff0c;还是更为复杂的窗口操作&#xff0c…

cron表达式大全

简介 Cron表达式是一种用于指定定时任务的时间表达式&#xff0c;常用来指定任务的执行时间、执行频率和执行间隔。它由6&#xff5e;7个字段组成&#xff0c;分别表示秒、分、时、日期、月份、星期、年份&#xff08;可省略&#xff09;。 Cron表达式基本语法如下&#xff1a;…

人工智能 | ChatGPT 和文心一言哪个更好用?

github&#xff1a;https://github.com/MichaelBeechan CSDN&#xff1a;https://blog.csdn.net/u011344545 ChatGPT 和文心一言哪个更好用&#xff1f; ChatGPT 和文心一言哪个更好用&#xff1f;方向一&#xff1a;ChatGPT主要优势局限性和挑战如何克服chatGPT的局限性和挑战…

全罐喂养一个月多少钱?适合全罐喂养的猫罐头推荐

不少铲屎官一直没有办法get到猫罐头对猫咪的好处&#xff0c;或者get到了又觉得给猫咪买猫罐头好贵&#xff0c;看到其他铲屎官都开始全罐喂养了&#xff0c;但是自己却迟迟下不了手&#xff0c;犹犹豫豫的不知道全罐喂养一个月多少钱&#xff1f; 今天&#xff0c;铲龄15年的…

Python实现Excel切片删除功能(附源码)

使用Python实现Excel中的“切片删除”功能&#xff08;附源码&#xff09; 先上效果图&#xff01;&#xff01;&#xff01; 如下是需要处理的Excel文件&#xff0c;可以看到在27行和117行处的E列存在数据不一致情况&#xff0c;需进行“切片删除” 运行结果图如下&#xff…

【前端架构】前端通用架构

一个强大的前端通用架构应该具备多种能力&#xff0c;以支持现代化的应用程序开发和提高开发效率。以下是一些前端通用架构应该具备的关键能力&#xff1a; 模块化和组件化&#xff1a;支持模块化开发和组件化架构&#xff0c;能够将应用拆分为独立的模块和组件&#xff0c;以便…

leetcode 2418. 按身高排序

题目 给你一个字符串数组 names &#xff0c;和一个由 互不相同 的正整数组成的数组 heights 。两个数组的长度均为 n 。 对于每个下标 i&#xff0c;names[i] 和 heights[i] 表示第 i 个人的名字和身高。 请按身高 降序 顺序返回对应的名字数组 names 。 解题方法&#xff…

Go新项目-为何选Gin框架?(0)

先说结论&#xff1a;我们选型Gin框架 早在大概在2019年下旬&#xff0c;由于内部一个多线程上传的需求&#xff0c;考虑到Go协程的优势&#xff1b; 内部采用Gin框架编写了内部的数据上传平台BAP&#xff0c;采用GinVue开发&#xff0c;但前期没考虑到工程化思维&#xff0c;导…