MATLAB —— 机械臂工作空间分析
系列文章目录
前言
本示例展示了如何使用可操作性指数对不同类型的机械手进行工作空间分析。工作空间分析是一种有用的工具,可用于确定机器人工作空间中最容易改变末端效应器位置和方向的区域。本示例的重点是利用不同的可操控性指数类型来分析各种机械手的工作空间。了解工作空间对于优化位置和高效运动至关重要,可以精确定位机器人可以执行精确运动的区域。这将提高机器人操作的效率和安全性。
一、可操作性指数类型
1.1 指数类型概述
manipulabilityIndex 函数支持三种指数类型,用于计算操纵器的可操纵性: 吉川(Yoshikawa)、逆条件(Inverse Condition)和浅田(Asada)。这些类型以不同的方式量化机器人操作的能力。以下是每种指数的概述:
1.2 吉川指数
该指数量化机械手从给定配置向任意方向移动的能力。数值越高,表示机械手越容易改变末端执行器的位置和方向。该指数可用于优化路径规划。通过该指数类型,您可以确定具有高灵巧性的配置,确保运动平稳,不易出现奇异现象。
1.3 反向条件数
该指标衡量末端执行器速度对关节速度变化的敏感度。它能突出显示机械手在哪些配置下由于对关节速度变化高度敏感而难以执行精确动作。该指数在外科手术机器人的微操作等场景中非常有价值,在这些场景中,对轻微动作的精确控制至关重要。
1.4 Asada 指数
该指数衡量机器人在不同方向上移动和施力的能力,同时考虑机器人的结构和对力的反应。该指数考虑了机器人机械手的动态性能。它是评估机械手负载能力的有用指标。通过应用 Asada 指数,您可以确定优化机器人负载能力的配置,确保稳定性并将风险降至最低。
有关这些可操控性指数类型的更多信息,请参阅 IndexType 属性。
1.5 指数类型分析图
为了显示每种索引类型之间的差异,请使用每种索引类型分析 Universal UR5e 机械手的工作空间。
加载 Universal UR5e 机械手的机械手模型。
ur5e = loadrobot("universalUR5e",DataFormat="row");
ur5e.Gravity = [0 0 -9.81];
生成无环境障碍物的机械手工作空间。该工作空间由末端执行器位置及其相应的关节配置表示。
[wksp,cfgs] = generateRobotWorkspace(ur5e,{});
1.6 吉川指数
计算每个工作区配置的吉川可操控性指数值。
mIndexYoshikawa = manipulabilityIndex(ur5e,cfgs,IndexType="yoshikawa");
使用工作区点和索引值对机器人进行工作区分析。请注意,红色区域表示末端执行器无法顺利移动的位置。
show(ur5e);
hold on
showWorkspaceAnalysis(wksp,mIndexYoshikawa);
hold off
title("Yoshikawa index");
axis auto

1.7 逆条件指数
接下来,使用逆条件指数类型计算可操作性。
mIndexInvCond = manipulabilityIndex(ur5e,cfgs,IndexType ="inverse-condition");
使用工作空间点和索引值对机器人进行工作空间分析。请注意,红色区域表示关节角度变化对末端执行器姿势影响较大的位置。
show(ur5e);
hold on
showWorkspaceAnalysis(wksp,mIndexInvCond);
hold off
title("Inverse Condition Index");
axis auto

1.8 浅田指数
使用 Asada 指数计算可操作性。指定运动分量只根据线性 xyz 分量进行计算。当运动分量为线性时,这种指数类型的差异更容易看出。
mIndexAsada = manipulabilityIndex(ur5e,cfgs,IndexType="asada",MotionComponent="linear");
使用工作区点和索引值对机器人进行工作区分析。请注意,在蓝色区域,从关节向末端效应器传递力和速度的效率非常高。
figure
show(ur5e);
hold on
showWorkspaceAnalysis(wksp,mIndexAsada);
hold off
title("Asada Index")
axis auto

1.9 主要启示
图表显示,工作空间边缘的可操控性值明显较低,因为机器人在这些区域的操控范围已达到极限。这种限制阻碍了机器人操纵器有效执行操纵任务的能力。相反,向工作区中心移动时,可操控性值会增加。在这些中心区域,机器人表现出较高的可操控性,并且远离奇异点,从而提高了执行任务的效率。
在决定工作区的操作区域时,应避免可操控性值较低的区域,因为在这些区域内,机器人可能会在精度和速度上遇到困难。不同的可操控性指数能让人对机器人机械手的运动和动态能力有不同的了解。因此,根据具体应用选择合适的可操控性指数类型对于实现最佳性能至关重要。
二、运动组件
MotionComponent 的名-值参数决定了计算可操控性时要考虑的运动类型。几何雅可比有六行,分别表示末端效应器可能执行的三种旋转和三种平移运动。您可以使用 MotionComponent 参数根据应用情况筛选出特定行。
manipulabilityIndex 函数支持三种常用的自由度,以及一种自定义方式来选择六个自由度的组合:
- 组合自由度 - 同时考虑线性运动和角度运动。使用该选项时,可操控性指数计算将考虑雅各布的所有六行。
- 线性 - 只考虑线性运动。这意味着可操控性指数计算只考虑雅各布方程的第 4、5 和 6 行。
- 角度 - 只考虑角度运动。这意味着可操控性指数计算只考虑第 1、第 2 和第 3 行。
- 自定义 - 使用六元素向量指定在计算可操控性指数时要考虑的运动分量。
使用此信息对两关节刚体树(twoJointRigidBodyTree)机械手模型进行工作空间分析。这是一个平面机械手,末端效应器只能在 xy 平面内平移。
加载机械手并生成工作空间。
robot = twoJointRigidBodyTree("row");
[wksp,cfgs] = generateRobotWorkspace(robot,{});
为每个生成的配置计算可操控性指数值。使用组合选项可考虑几何雅各布的所有行。
mIndexCombined = manipulabilityIndex(robot,cfgs,MotionComponent="combined");
使用可操作性值进行工作空间分析。将视图设置为 xy 平面。
show(robot);
hold on
showWorkspaceAnalysis(wksp, mIndexCombined);
hold off
title("Workspace Analysis Using All Motion Components")
view(0,90)
axis auto

图中显示,当可操作性计算考虑到所有运动组件时,整个工作空间的可操作性为零。出现这种情况的原因是,函数考虑了雅各布方程中对末端效应器运动没有影响的行。如前所述,由于末端效应器只能在 xy 平面上运动,因此指定只考虑 x 和 y 线性分量。
mIndexCustom = manipulabilityIndex(robot,cfgs,MotionComponent=[0 0 0 1 1 0]);
使用可操作性值进行工作区分析。
show(robot);
hold on
showWorkspaceAnalysis(wksp,mIndexCustom);
hold off
title("Workspace analysis with X- and Y-Linear Components")
view(0,90)
axis auto

请注意,工作区边缘的可操控性最低,然后向底部增加,当数值接近底部时又会降低。因此,通过选择适当的运动组件,可以分析机器人的工作空间。
蓝色区域代表机器人可操作性最高的区域,表明这些区域是机器人执行高精度任务的最有效区域。因此,需要精细操作或精确控制的任务应计划在该区域进行。红色区域表示机器人可操控性较低的区域。这些区域可能不太适合执行操纵任务。选择正确的运动组件组合来计算可操控性也很重要,因为选择不正确的运动组件会导致工作区分析无法代表机器人的实际能力。
三、工作区分析的体素化
工作区分析的体素化与之前的所有绘图一样,可以简化工作区分析绘图。由于大量的工作区点可能会使显示混乱,因此使用体素化图更容易理解工作区中的可操作性分布。
不过,您也可以将 showWorkspaceAnalysis 函数的 Voxelize name-value 参数设置为 false,从而将非体素化曲线图可视化。如果工作空间点较少且稀疏,或者对于机器人来说体素尺寸过大,非体素化图可能比体素化图更有用。
使用上一节中的同一平面机械手机器人模型以及之前的工作空间点和可操控性指数值。
figure
show(robot);
hold on
showWorkspaceAnalysis(wksp,mIndexCustom,Voxelize=false);
hold off
title("Non-Voxelized Workspace Analysis")
view(0,90)
axis auto

相关文章:
MATLAB —— 机械臂工作空间分析
系列文章目录 前言 本示例展示了如何使用可操作性指数对不同类型的机械手进行工作空间分析。工作空间分析是一种有用的工具,可用于确定机器人工作空间中最容易改变末端效应器位置和方向的区域。本示例的重点是利用不同的可操控性指数类型来分析各种机械手的工作空间…...
向日葵连接xrdp虚拟桌面
x2go的虚拟性没有那么好。而xrdp,可以实现较好的配置,并且能适应本机电脑的分辨率,非常方便。 配置xrdp可以参考这个: https://blog.csdn.net/weixin_54227557/article/details/143303803 然后就是重启相关服务了。 sudo pkill…...
AI智算-正式上架GPU资源监控概览 Grafana Dashboard
下载链接 https://grafana.com/grafana/dashboards/22424-ai-gpu-20241127/...
goframe框架bug-记录
implement not found for interface ICompany, forgot register? 错误解决检查: 1.有没有init 2. 注入问题 3. 注入问题...
对偶分解算法详解及其Python实现
目录 对偶分解算法详解及其实现第一部分:对偶分解算法概述1.1 什么是对偶分解算法1.2 应用场景1.3 算法优点第二部分:对偶分解算法的数学推导2.1 问题形式2.2 对偶问题2.3 算法框架第三部分:对偶分解算法的Python实现第四部分:案例1——支持向量机中的对偶分解(策略模式)…...
C# WinForm怎么使用COM组件
首先在右边自己的项目上右键→添加→引用 然后在 引用管理器 的 COM 分页下选择自己要添加的COM组件,当然前提是你已经用 regsvr32 命令注册过了此COM组件到注册表,如果还没有注册在这个列表里是看不到的。 选择好后点确定,就会在右边你的工程…...
【Python】深入理解Python的字符串处理与正则表达式:文本处理的核心技能
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 字符串处理和正则表达式是数据清洗和文本分析中的重要工具,广泛应用于自然语言处理、数据爬取和格式化输出等领域。本文章详细讲解Python中的字符串操作技巧,以及如何高效使用正则表达式完成复杂文本匹配…...
【开源项目】2024最新PHP在线客服系统源码/带预知消息/带搭建教程
简介 随着人工智能技术的飞速发展,AI驱动的在线客服系统已经成为企业提升客户服务质量和效率的重要工具。本文将探讨AI在线客服系统的理论基础,并展示如何使用PHP语言实现一个简单的AI客服系统。源码仓库地址:ym.fzapp.top 在线客服系统的…...
OpenCV从入门到精通实战(五)——dnn加载深度学习模型
从指定路径读取图像文件、利用OpenCV进行图像处理,以及使用Caffe框架进行深度学习预测的过程。 下面是程序的主要步骤和对应的实现代码总结: 1. 导入必要的工具包和模型 程序开始先导入需要的库os、numpy、cv2,同时导入utils_paths模块&…...
【Leetcode Top 100】142. 环形链表 II
问题背景 给定一个链表的头节点 h e a d head head,返回链表开始入环的第一个节点。 如果链表无环,则返回 n u l l null null。 如果链表中有某个节点,可以通过连续跟踪 n e x t next next 指针再次到达,则链表中存在环。 为了…...
嵌入式Qt使用ffmpeg视频开发记录
在此记录一下Qt下视频应用开发的自学历程,可供初学者参考和避雷。 了解常用音频格式yuv420p、h264等了解QML,了解QVideoOutput类的使用,实现播放yuv420p流参考ffmpeg官方例程,调用解码器实现h264解码播放 不需要手动分帧。ffmpeg…...
iOS 17.4 Not Installed
0x00 系统警告 没有安装 17.4 的模拟器,任何操作都无法进行! 点击 OK 去下载,完成之后,依旧是原样! 0x01 解决办法 1、先去官网下载对应的模拟器: https://developer.apple.com/download/all/?q17.4 …...
CTF之WEB(sqlmap tamper 参数)
apostropheask.py 作用:将单引号替换为UTF-8,用于过滤单引号。 base64encode.py 作用:替换为base64编码。 multiplespaces.py 作用:绕过SQL关键字添加多个空格。 space2plus.py 作用:用号替换…...
多点DMALL启动招股:将在港交所上市,聚焦数字零售服务
近日,多点数智有限公司(Dmall Inc.,下称“多点”或“多点DMALL”)发布全球发售文件,于11月28日至12月3日招股,预计将于2024年12月6日在港交所主板挂牌上市。 招股书显示,多点DMALL本次全球发售的…...
【c++篇】:解读Set和Map的封装原理--编程中的数据结构优化秘籍
✨感谢您阅读本篇文章,文章内容是个人学习笔记的整理,如果哪里有误的话还请您指正噢✨ ✨ 个人主页:余辉zmh–CSDN博客 ✨ 文章所属专栏:c篇–CSDN博客 文章目录 前言一.set和map的初步封装1.树的节点封装修改2.Find()查找函数3.红…...
ollama部署bge-m3,并实现与dify平台对接
概述 这几天为了写技术博客,各种组件可谓是装了卸,卸了装,只想复现一些东西,确保你们看到的东西都是可以复现的。 (看在我这么认真的份上,求个关注啊,拜托各位观众老爷了。) 这不,为了实验在windows上docker里运行pytorch,把docker重装了。 dify也得重装: Dify基…...
在并发情况下,Elasticsearch如果保证读写一致?
大家好,我是锋哥。今天分享关于【在并发情况下,Elasticsearch如果保证读写一致?】面试题。希望对大家有帮助; 在并发情况下,Elasticsearch如果保证读写一致? 1000道 互联网大厂Java工程师 精选面试题-Java…...
AMD的AI芯片Instinct系列介绍
AMD最强AI芯片发布! 在旧金山举行的Advancing AI 2024大会上,AMD推出Instinct MI325X AI加速器(以下简称MI325X),直接与英伟达的Blackwell芯片正面交锋。 现场展示的数据显示,与英伟达H200的集成平台H200 …...
【知识科普】设计模式之-责任链模式
这里写自定义目录标题 概述责任链模式的详细描述责任链模式的使用场景 使用场景举例1. 审批流程示例:2. 过滤器链示例:3. 事件处理系统示例:4. 插件系统示例: Java代码示例及注释代码解释 概述 责任链模式的详细描述 责任链模式…...
fiddler安卓雷电模拟器配置踩坑篇
一、fiddler端配置 和网页版fiddler一样,需要首先再本机安装证书,可以参考我之前的fiddler浏览器配置文章,前期操作一致: 此处需要注意的是connections里面需要勾选allow remote这个选项,这个主要是为了后来再安卓模拟…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...
