机器人控制系列教程之运动规划(2)

简介

在笛卡尔坐标空间中轨迹规划时,首先用位置矢量和旋转矩阵表示所有相应的机器人节点,其次在所有路径段插值计算相对的位置矢量和旋转矩阵,依次得出笛卡尔坐标空间中的轨迹序列通过求解运动学逆问题得到相应关节位置参数。

优点:

  1. 在笛卡尔坐标空间规划的轨迹比较直观,实际运动路径准确度高;
  2. 某些工作任务本身对在笛卡尔坐标空间中的轨迹有要求,必须首先在笛卡尔坐标空间规划。

缺点:

  1. 计算量远远大于关节空间法,控制时间间隔较长;
  2. 不能保证除预定的路径点外轨迹上其他的点都在机器人的运动空间,而关节空间轨迹规划可以;
  3. 轨迹路径有可能接近或通过操作空间的盲点。

规划方法

根据机器人的末端执行器的位置和姿态,该方法主要有以下几种:

MATLAB机器人工具箱ctraj函数解析

两个位姿之间的笛卡尔轨迹

  1. tc = ctraj(T0, T1, n)表示从位姿T0到T1的笛卡尔轨迹,其中n个点遵循沿路径的梯形速度分布。笛卡尔轨迹是一个齐次变换序列,最后一个下标是点索引,即T(:,:,i)是路径上的第i个点。

  2. tc = ctraj(T0, T1, s)如上所述,但S(Nx1)的元素指定了路径上的分数距离,这些值在[0 1]范围内。第i个点对应于S(I)沿路径的距离。

Note:
如果T0或T1等于[],则认为它是单位矩阵。在第二种情况下,S可以由标量轨迹生成器生成,如TPOLY(五次多项式)或LSPB(组合轨迹,默认)。

笛卡尔空间轨迹求解

相关代码:

% 导入机器人模型
% 这里输入你的机器人模型
clear,clc,close all;
%% 建立机器人DH参数,初始状态为竖直状态
L1=Link('d',162.50,'a',0,'alpha',0,'modified');
L2=Link('d',0,'a',0,'alpha',pi/2,'offset',pi/2,'modified');
L3=Link('d',0,'a',425,'alpha',0,'modified');
L4=Link('d',126.70+6.6,'a',392.25,'alpha',0,'offset',pi/2,'modified');
L5=Link('d',99.70,'a',0,'alpha',pi/2,'modified');
L6=Link('d',99.60-4.5,'a',0,'alpha',-pi/2,'modified');robot=SerialLink([L1 L2 L3 L4 L5 L6],'name','UR5')% M = [1 1 1 1 1 0];
qz = [0 0 0 0 0 0];
t = 0:0.01:2;
T = fkine(robot,qz);
%T(1,4:)  %T(2,4:)  %T(3,4:)
T10 = transl(4, -0.5, 0) * troty(pi/6); % 末端初始位姿
T11 = transl(4, -0.5, -2) * troty(pi/6); % 末端终止位姿
Ts = ctraj(T10, T11, length(t));% 末端执行器从初始位姿到末端位姿坐标系的平移变化
figure(1); 
TP=transl(Ts);
x=plot(t, TP(:,1));hold on;
y=plot(t, TP(:,2));hold on;
z=plot(t, TP(:,3));
legend([x,y,z],'X轴','Y轴','Z轴')
ylim([-3 5])%末端执行器从初始位姿到末端位姿坐标系旋转的变化
figure(2); 
Tr=tr2rpy(Ts);
x=plot(t, Tr(:,1),'-*');hold on;
y=plot(t, Tr(:,2),'LineStyle','--');hold on;
z=plot(t, Tr(:,3));
legend([x,y,z],'X轴','Y轴','Z轴')
ylim([-0.002 0.01])% 末端执行器从初始位姿到末端位姿的空间轨迹的规划图形投影到xOy坐标轴内的变化
u = Ts(1,4,:);v = Ts(2,4,:);w = Ts(3,4,:);
x = squeeze(u);y = squeeze(v);z = squeeze(w);
figure(3); 
subplot(3,1,1);
plot(t,x) 
xlabel('Time')
ylabel('x')
subplot(3,1,2);
plot(t,y) 
xlabel('Time')
ylabel('y')
subplot(3,1,3);
plot(t,z) 
xlabel('Time')
ylabel('z')

末端执行器从初始位姿到末端位姿坐标系的平移变化。

末端执行器从初始位姿到末端位姿坐标系旋转的变化。

机器人末端执行器从初始位姿到末端位姿的空间轨迹的规划图形投影到xOy坐标轴内的变化

往期推荐

在这里插入图片描述

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

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

相关文章

linux安装pack格式的文件

在Linux中安装.pack格式的文件通常涉及使用pack工具,这是一个早期的压缩工具,现在已经不是主流的压缩格式了。如果你确实需要安装一个.pack文件,你可以按照以下步骤操作: 确保你的系统上安装了pack工具。如果没有安装&#xff0c…

评测|贪吃小猫疯狂长肉,让它停不下嘴的希喂、鲜朗、帕特真实调研

我发现很多铲屎官存在一个误区,认为“进口即是高贵”,过度信赖进口产品。一见到进口宠物粮就冲动购买,甚至对国产品牌持贬低态度,贴上“质量不佳”、“不符合标准”等标签。 为了更深入地了解这一现象,我深入研究了主食…

探索1688.item_get接口:深入解析与技术实现

在当前的电商领域,数据驱动已经成为了一种趋势。对于电商平台、数据分析应用以及与之相关的服务开发者来说,获取商品的详细信息是一项至关重要的任务。1688作为中国最大的B2B电商平台,提供了丰富的API接口,其中1688.item_get接口尤…

kotlin——MVVM框架下的大型项目优化、以及activity和viewmodel臃肿的优化

目录 概要 优化思路 一、重构过长的Activity 二、优化臃肿的ViewModel 示例代码: 1.Activity封装到单独的Fragment中 2.把ViewModel拆分成多个子viewmodel 小结 概要 在大型项目中,随着项目越做越大,activity和viewmodel的代码会越来越多&am…

【Unity小技巧】记一个RenderTexture无法正确输出Camera视图下的Depth渲染的问题

问题 这个问题出现在使用URP管线时,我试图用Shader实现血条的制作,并用RenderTexture将视图渲染到RawImage上。 但是渲染结果出现了问题: 可以看到液体边缘的渲染出现了错误,原因不明 在StackFlow上查找后找到了类似的问题&…

Spring Cloud - 开发环境搭建

1、JDK环境安装 1、下载jdk17:下载地址,在下图中红色框部分进行下载 2、双击安装,基本都是下一步直到完成。 3、设置系统环境变量:参考 4、设置JAVA_HOME环境变量 5、在PATH中添加%JAVA_HOME%/bin 6、在命令行中执行:j…

第三十篇——等价性:如何从等价信息里找答案?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么? 四、总结五、升华 一、背景介绍 知道了等价性的逻辑,通过等价性去衡量事物,像是给…

QPaintEngine

当使用 Qt 进行绘图操作时&#xff0c;QPaintEngine 的方法在底层起着重要作用。以下是一个更详细的示例&#xff0c;展示了如何在自定义的 QWidget 子类中使用 QPaintEngine 的方法进行绘图操作&#xff1a; #include <QWidget> #include <QPaintEvent> #include…

1.1、Redis系列-Epoll 的高效工作流程

epoll 的高效工作流程 epoll 是 Linux 操作系统提供的一种高效 I/O 多路复用机制。它的设计初衷就是为了高效地处理大量并发连接&#xff0c;解决 select 和 poll 的性能瓶颈问题。下面详细解释 epoll 的高效工作流程&#xff0c;并重点突出其高效性。 一、创建 epoll 实例 …

Linux配置网卡详细教程

这个网卡配置然后头痛了两天&#xff0c;看了很多篇关于这方面的文章&#xff0c;但是都没让我成功&#xff0c;可惜工亏不负有心人&#xff0c;然后终于学会了下面此方法 实现完成的效果&#xff1a; 永久修改网卡IP vi /etc/sysconfig/network-scripts/ifcfg-ens33 TYPEEther…

node带参数命令

不带参数命令示例&#xff1a; node /www/wwwroot/server 带参数命令示例&#xff1a; node /www/wwwroot/server arg1 arg2 arg3 在启动页进行参数处理&#xff1a; // 获取启动参数(除去前2个默认参数&#xff0c;示例&#xff1a;node /www/wwwroot/server arg1 arg2 …

西门子840dsl机床仿真软件配置opcua说明

需要的安装包如下&#xff0c;可在百度网盘中下载 主软件包&#xff1a;sinutrain-v4.7-ed4&#xff08;也可在官网中下载最新版本&#xff09; 用户文件&#xff1a;UserDataBase 授权sinutrain&#xff1a;Sim_EKB_Install_2021_06_22 链接&#xff1a;https://pan.baidu.c…

小阿轩yx-用户管理与高级SQL语句

小阿轩yx-用户管理与高级SQL语句 MySQL 进阶查询 运维工作中可以提供不小的帮助&#xff0c;运维身兼数职&#xff0c;可能会有不少数据库的相关工作 常用查询介绍 对查询的结果集进行处理 按关键字排序 使用 SELECT 语句可以将需要的数据从 MySQL 数据库中查询出来 对结…

1.0.计算机系统知识

考点分布&#xff1a;3 ~ 7分&#xff0c;历史平均5分&#xff0c;选择题 CPU 运算器和控制器的组件及它们的功能和特点。 数据的表示 定点数 原码、反码、补码、移码的计算 浮点数 阶码表示范围 尾数表示精度 校验码 奇偶校验、CRC循环冗余校验、海明校验。 其中 CRC循…

第一百二十六节 Java面向对象设计 - Java枚举类

Java面向对象设计 - Java枚举类 枚举类型的超类 编译枚举类型时&#xff0c;编译器会创建一个类。 枚举类型可以具有构造函数&#xff0c;字段和方法。枚举类型仅在编译器生成的代码中实例化。 每个枚举类型都隐式地扩展java.lang.Enum类。 Enum类中定义的所有方法都可以与…

PostgreSQL 索引优化与性能调优(十一)

1. 索引基础知识 1.1 什么是索引 索引是一种数据结构&#xff0c;用于快速定位和访问数据库表中的特定行。在 PostgreSQL 中&#xff0c;常见的索引类型包括 B-tree、哈希、GiST 和 GIN 等。 1.2 创建索引 1.2.1 创建 B-tree 索引 CREATE INDEX idx_column ON table_name …

从一到无穷大 #29 ByteGraph的计算,内存,存储三级分离方案是否可以通用化为多模数据库

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作)&#xff0c;由 李兆龙 确认&#xff0c;转载请注明版权。 文章目录 引言ByteGraph现有架构阿里云Lindorm腾讯YottaDB多模型化修改点ByteGraph论文中的优化…

PD虚拟机支持M3吗 PD虚拟机怎样配置图形卡

最近有很多人在问M3芯片的苹果电脑和M2相比&#xff0c;有哪些提升的功能。实际上&#xff0c;M3芯片的苹果电脑拥有与M2相同的CPU与GPU数量&#xff0c;但比M2多50亿个晶体管&#xff0c;并引入了动态缓存、增强型神经网络引擎等技术&#xff0c;性能、功能均进一步加强。面对…

Ubuntu22 更新内核后终端输入卡顿,最简单的解决方案

在系统升级后相信很多人都遇到了这个问题&#xff0c;系统终端输入卡顿&#xff0c;但是ssh远程进来不卡&#xff0c;使用第三方终端也不卡,…&#xff0c;今天终于忍不了&#xff0c;解决了 现象&#xff1a; 更新Nvidia驱动后,内核进行了自动编译升级。 之后的一段时间使用…

从零开始做题:修猫

修猫 1 题目 2 解题 2.1 使用Stegslove分析图片 (base) ┌──(holyeyes㉿kali2023)-[~/Misc/tool-misc] └─$ java -jar Stegsolve.jar 2.2 analyse -frame browser 2.3 得到flag DASCTF{818ca3a840e768da7d5fcdeaedd5012f}