当前位置: 首页 > news >正文

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

http://www.lryc.cn/news/494381.html

相关文章:

  • 向日葵连接xrdp虚拟桌面
  • AI智算-正式上架GPU资源监控概览 Grafana Dashboard
  • goframe框架bug-记录
  • 对偶分解算法详解及其Python实现
  • C# WinForm怎么使用COM组件
  • 【Python】深入理解Python的字符串处理与正则表达式:文本处理的核心技能
  • 【开源项目】2024最新PHP在线客服系统源码/带预知消息/带搭建教程
  • OpenCV从入门到精通实战(五)——dnn加载深度学习模型
  • 【Leetcode Top 100】142. 环形链表 II
  • 嵌入式Qt使用ffmpeg视频开发记录
  • iOS 17.4 Not Installed
  • CTF之WEB(sqlmap tamper 参数)
  • 多点DMALL启动招股:将在港交所上市,聚焦数字零售服务
  • 【c++篇】:解读Set和Map的封装原理--编程中的数据结构优化秘籍
  • ollama部署bge-m3,并实现与dify平台对接
  • 在并发情况下,Elasticsearch如果保证读写一致?
  • AMD的AI芯片Instinct系列介绍
  • 【知识科普】设计模式之-责任链模式
  • fiddler安卓雷电模拟器配置踩坑篇
  • 机器学习5-多元线性回归
  • Linux kernel 堆溢出利用方法(三)
  • 对于GC方面,在使用Elasticsearch时要注意什么?
  • Xilinx PCIe高速接口入门实战(一)
  • Flume 监控配置和实践
  • 深度学习基础1
  • 《FPGA开发工具》专栏目录
  • 李春葆《数据结构》-查找-课后习题代码题
  • 【Git】:分支管理
  • C、C++ 和 Java的区别
  • 【Python-Open3D学习笔记】005Mesh相关方法