matlab如何求变换矩阵,如何用Matlab实现机器人的变换矩阵
如何用Matlab实现机器人的变换矩阵
如何用Matlab实现机器人的变换矩阵
前言
其中有些思路参考了这篇博客,有兴趣的同学可以看一下博客参考(关于位姿变换矩阵)
刚开始学工业机器人的时候,大家都先学到了其中的一些矩阵变换,但是计算过程还是不太熟悉,如果想要有较深的体验,可以从本文中获取一些经验,具体实例以我上一个博客中的两个三棱柱为主。
1.确定初始位姿
以我上一篇博客为例,那么初始位姿已经确定了代码如下
V1=[
-1,0,2;
-1,4,0;
-1,0,0;
1,0,2;
1,4,0;
1,0,0];
这里每一行是每一个顶点的x,y,z坐标值
2.矩阵方程
那么如果我要对这样一个点集做转换,就需要位移变换矩阵以及角度变换矩阵,所以这里做两个function,具体代码如下
function fx=Trans(a,b,c)
fx=[1,0,0,a;
0,1,0,b;
0,0,1,c;
0,0,0,1;];
end
function fx=Rot(a,b)
switch a
case 'X轴'
fx=[1,0,0,0;
0,cos(b),-sin(b),0;
0,sin(b),cos(b),0;
0,0,0,1];
case 'Y轴'
fx=[cos(b),0,sin(b),0;
0,1,0,0;
0,-sin(b),0,cos(b);
0,0,0,1];
case 'Z轴'
fx=[cos(b),-sin(b),0,0;
sin(b),cos(b),0,0;
0,0,1,0;
0,0,0,1]; %具体内容属于机器人学内容,这里不做赘述
end
于是后续可以直接调用该方程
3.最终变换过程
初始位姿如下图所示
而需求的最终的位姿如下图
所以具体实现代码如下
clc
clear
syms pi; %这里定义pi是为了使cos(pi)=0
V1=[-1,-1,-1,1,1,1;
0,0,4,4,0,0;
2,0,0,0,0,2;
1,1,1,1,1,1;];
%这里是设置了各个顶点的坐标,这里是每一个列值都是一个点的x,y,z坐标,而1是齐次坐标,这里不做赘述。
V2=Rot('Z轴',pi/2)*Rot('X轴',pi/2)*V1;
%这里是将初始矩阵,绕x轴逆时针旋转90°,再绕z轴逆时针旋转90°的操作
V3=V2([1 2 3 ],[1 2 3 4 5 6]);
%因为后续要进行画图操作,所以将齐次坐标去除了
V4=double(V2); %这里是为了将具体内容显示在工作区中
V5=double(V3);
V6=V5.'; %这里是将变换后的矩阵进行转置操作
F1=[
1,2,3,1;
1,2,5,6;
1,3,4,6;
3,2,5,4;
4,6,5,4];
patch('Faces',F1,'Vertices',V6,'FaceColor','none',...
'LineWidth',1,'EdgeColor','red');
grid minor;
axis([-2 2 -3 3 0 5]);
xlabel('x轴'); ylabel('y轴');zlabel('z轴');
set(gca,'XDir','reverse')
set(gca,'YDir','reverse')
4.附录
上接上一个博客的内容,设计了两个直三棱柱,并将这两个直三棱柱转换为一个立方体的过程。
最终参考代码如下:
clc
clear
syms pi;
V1=[-1,-1,-1,1,1,1;
0,0,4,4,0,0;
2,0,0,0,0,2;
1,1,1,1,1,1;];
V2=Rot('Z轴',pi/2)*Rot('X轴',pi/2)*V1;
V3=V2([1 2 3 ],[1 2 3 4 5 6]);
V4=double(V2);
V5=double(V3);
V6=V5.';
F1=[
1,2,3,1;
1,2,5,6;
1,3,4,6;
3,2,5,4;
4,6,5,4];
patch('Faces',F1,'Vertices',V6,'FaceColor','none',...
'LineWidth',1,'EdgeColor','red');
grid minor;
axis([-2 2 -3 3 0 5]);
xlabel('x轴'); ylabel('y轴');zlabel('z轴');
set(gca,'XDir','reverse')
set(gca,'YDir','reverse')
clc
clear
syms pi;
V1=[-1,-1,-1,1,1,1;
0,0,4,4,0,0;
2,0,0,0,0,2;
1,1,1,1,1,1;];
V2=Rot('Z轴',pi/2)*Rot('X轴',pi/2)*V1;
V3=V2([1 2 3 ],[1 2 3 4 5 6]);
V4=double(V2);
V5=double(V3);
V6=V5.';
V7=[-1,-1,-1,1,1,1;
5,5,9,9,5,5;
2,0,0,0,0,2;
1,1,1,1,1,1;];
V8=Trans(0,0,4)*Trans(2,0,0)*Rot('Z轴',pi/2)*Rot('X轴',-pi/2)*Trans(0,-5,0)*V7;
V9=V8([1 2 3],[1,2,3,4,5,6]);
V10=double(V8);
V11=double(V9);
V12=V11.';
F1=[
1,2,3,1;
1,2,5,6;
1,3,4,6;
3,2,5,4;
4,6,5,4];
F2=[
1,2,3,1;
1,2,5,6;
1,3,4,6;
3,2,5,4;
4,6,5,4];
patch('Faces',F1,'Vertices',V6,'FaceColor','none',...
'LineWidth',1,'EdgeColor','red');
patch('Faces',F2,'Vertices',V12,'FaceColor','none',...
'LineWidth',1,'EdgeColor','red');
grid minor;
axis([-2 2 -3 3 0 5]);
xlabel('x轴'); ylabel('y轴');zlabel('z轴');
set(gca,'XDir','reverse')
set(gca,'YDir','reverse')
初始位姿如图
最终位姿如图
我的上一个博客参考
如何用Matlab实现机器人的变换矩阵相关教程
[ STK ](八)使用 Matlab,在 STK 中建立卫星间连线
[ STK ](八)使用 Matlab,在 STK 中建立卫星间连线 星间距离小于 3e+07 时建立卫星间连线 星间距离是动态变化的,所以连线也是 每分钟建立一次完整连接,但是建立一次完整连接就需要218秒,就有点,, 开始建立连接,连接数目逐渐增多 一次完整连接,如下图
Echarts实战案例代码(44):同时渲染折线图实现和虚线渲染实现已
Echarts实战案例代码(44):同时渲染折线图实现和虚线渲染实现已发生和预测趋势的解决方案 实线和虚线,都是折线图lineStyle固有的属性; 分成同样数据的两组series,一段为实线,一段为虚线; option = { xAxis: { type: 'category', data: ['Mon', 'Tue', 'W
剑指offer编程题----Java实现
剑指offer编程题----Java实现 剑指offer编程题----Java实现 JZ37 数字在升序数组中出现的次数 JZ57 二叉树的下一个结点 JZ37 数字在升序数组中出现的次数 题目描述 统计一个数字在升序数组中出现的次数。 题解 1. 类似双指针的方法 1.1 分析 传入的参数是:有
CentOS7安装MyCli实现MySQL自动补齐与语法高亮
CentOS7安装MyCli实现MySQL自动补齐与语法高亮 MyCli是一款命令行模式下实现MySQL语法高亮和自动补齐的工具 最近百度安装方法时发现前几页基于Python2.7的安装方法均已失效,所以写一篇新的分享出来供大家参考,理论上复制粘贴可以100%成功,遇到问题可以留言,解
实现点击微信链接自动跳转外部浏览器
实现点击微信链接自动跳转外部浏览器 正常情况下在微信中打开链接会有各种各样的限制,无法在微信内打开常用下载软件,APP等,链接发到微信中,微信会判断是不是可以让你从里面打开,识别是否合法,网上流传的各种微信打开下载链接,微信一更新基本失效。下面给大
剑指 Offer 09.用两个栈实现队列
剑指 Offer 09.用两个栈实现队列 这道题其实我有点蒙,只看题干信息的话,回答这个问题不难,可是我搞不清楚测试数据的输入输出QAQ 思路 用两个栈来实现队列功能,栈可以逆转数据的顺序,两次逆转就会变回来。 准备两个栈,一个作为中间过渡栈,“入栈”;一
使用springMVC实现图片上传
使用springMVC实现图片上传 在添加学生的时候添加图片 addStu.jsp添加图片代码 form action=../addStuResult method=post enctype=multipart/form-data table tr td学生编号/td tdinput type=text name=snum/td /tr tr td学生姓名/td tdinput type=text name=
【SpringBoot+Mybatis】bootstrap/sematic UI与pagehelper实现分
【SpringBoot+Mybatis】bootstrap/sematic UI与pagehelper实现分页 1.引入paging.js //分页,页码导航,要求参数为一个对象function createPageNav(opt) { opt= opt || {}; var $container = opt.$container || null, //必需,页码容器,请确保这个容器只用来
matlab如何求变换矩阵,如何用Matlab实现机器人的变换矩阵相关推荐
- matlab seed函数_如何用matlab生成随机数函数_matlab随机数生成函数
如何用matlab生成随机数函数 1. MATLAB 函数 rand 产生在区间 (0, 1)的均匀随机数,它是平均分布在 (0,1)之间.一个称为seed的值则是用来控制产生随机数的次数.均匀随机数 ...
- 利用matlab处理表格数据,/如何用matlab处理多个excel表格中的数据
excel最大可处理多少条数据 理论上可以处理59999条(行)数据 但是实际上同一个工作表中无法处理这么多数. Excel 怎样做一个客户多个数据的表 1.首先,简单描述问题,在如下的表格中想姓名一 ...
- matlab三元函数泰勒展开,如何用matlab绘制三元函数f(x,y,z)=x^2 y^3 z^4在[-1,1]x[-2,2]x[-3,3] 上的各...
问题描述: 如何用matlab绘制三元函数f(x,y,z)=x^2 y^3 z^4在[-1,1]x[-2,2]x[-3,3] 上的各种切片图. 还有怎么绘制f(x,y,t)=10*exp(1-t)*s ...
- 用matlab s函数 阶梯,如何用matlab使用函数式M文件计算s=n!,要具体的步骤。谢谢...
先写个2113m文件function s=qiuhe(n)s=sum(cumprod(1:n))end其中5261cumprod是求某数的阶乘,4102sum是求和调用输入1653qiuhe(10) ...
- 用matlab画出ex,如何用matlab画函数图形
1.首先打开matlab应用程序,输入下方的代码:2.然后按确定会出现一张图,如下图所示,这就是 怎么用matlab画函数图形?请看下面方法. 方法 打开Matlab. r0=5;b=1;t0=2;s ...
- matlab波形相似系数,如何用matlab计算波形相似系数
. 低通采样定理实验 1.1 实验目的 1.了解数字信号处理系统的一般构成: 2.掌握奈奎斯特抽样定理. 1.2 实验仪器 1.YBLD智能综合信号源测试仪 1台 2.双踪示波器 1台 3.MCOM- ...
- matlab中求虚数的模,matlab计算带有复数的函数,最后求复数函数的模,结果里面却有...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 matlab计算带有复数的函数,最后求复数函数的模,结果里面却有复数标志i,输入自变量,得到的结果确实是实数,不知道怎么回事; 代码如下: syms n2 ...
- matlab坐标污染物浓度,如何用MATLAB画粒子空间分布图,并以颜色的深浅表示浓度?...
问题描述: 现有一组室内飞沫污染物的空间分布数据,由于飞沫个数很多,为了更加清晰准确的表示飞沫个数浓度(个/m³)的空间分布,将房间按0.4m×0.4m×0.4m划分成多个小立方体,并将这个小立方体内 ...
- 用matlab画出典型函数,如何用matlab画出函数曲线
使用matlab绘制函数曲2113线的方法和操作步5261骤如下:1.首先,使用matlabc打开命令行窗口,然后4102直接输入相1653关内容,如下图所示.2.其次,完成上述步骤后,请根据实际情况 ...
最新文章
- go interface转int_图解go反射实现原理
- Win10开启Administrator超级管理员账户
- Java容器Stack
- 用nifi把hdfs数据导到hive
- linux p 参数,tar的-p参数解决方案
- 大型企业网络配置系列课程详解(六) --PPP链路的配置与相关概念的理解
- 一个必用的javascript框架:underscore.js - wine的思考 - ITeye技术网站
- Google earth
- 送给python初学者在简单编程练习题中的小技巧
- UG基础知识学习视频目录整理(制图篇)
- License information could not be obtained from Elasticsearch due to Error: Request Timeout after 300
- [生存志] 第101节 九歌道尽楚芳华
- 底物的分子描述符计算及 CYP450 酶-底物选择性技术研究
- react+antd搭建后台管理系统
- kettle入门(二) 之 kettle连接oracle报的坑爹错误 Error occured while trying to connect to the database 的几种情况
- 2019年全国大学生“TI杯”电子设计竞赛综合测评电路仿真
- 基于am5718的【ARM-Linux开发】wayland和weston的介绍
- 我的编程奋斗历程[四部曲之三]-成为金子篇
- UE4 Pak跨引擎版本错误记录
- 微信服务号开发之jssdk-微信充值、支付见解
热门文章
- 口袋网咖已有服务器在使用怎么注销,口袋网咖_口袋网咖常见问题_口袋网咖专区...
- 自动化测试的一些面试题分享
- SPSS_Logistic回归分析结果表中的英文字母意思
- 世界地球日 | 成功解锁首件烤仔时尚单品
- python linux apt,Linux Mint 19上的Python3.7“No module named apt_pkg”错误
- 笔记本连接苹果耳机的方法
- 抖音短视频开发项目跨入社交圈,头条实现社交梦?
- 面向服务的面向业务基础
- 论坛发文求助看法一二。
- 逻辑回归Logistics--简述