机器人编程与仿真(matlab)
本文最后更新于588 天前,其中的信息可能已经过时,如有错误请发送邮件到525382782@qq.com

Matlab Mathematica Maple

这三种并称为三大数学软件

MATLAB是美国MathWorks公司出品的商业数学软件,用于数据分析无线通信深度学习图像处理计算机视觉信号处理、量化金融与风险管理、机器人,控制系统等领域。 [1]

Mathematica是一款科学计算软件,很好地结合了数值和符号计算引擎、图形系统编程语言、文本系统、和与其他应用程序的高级连接。很多功能在相应领域内处于世界领先地位,它也是使用最广泛的数学软件之一。

Maple 是一个数学软件,提供强大的公式推导功能、无限精度数值计算、丰富的可视化工具、完整的编程语言、广泛的接口、专业的技术文件等,可以轻松分析、探索、可视化和求解数学问题。

机器人运动学 机器人动力学 机器人轨迹规划 机器人控制

机器人运动学包括正向运动学和逆向运动学,正向运动学即给定机器人各关节变量,计算机器人末端的位置姿态; 逆向运动学即已知机器人末端的位置姿态,计算机器人对应位置的全部关节变量。

机器人动力学是复杂的动力学系统,对处理物体的动态响应取决于机器人动力学模型和控制算,主要研究动力学正问题和动力学逆问题两个方面,需要采用严密的系统方法来分析机器人动力学特性。

轨迹规划方法分为两个方面:对于移动机器人偏向于意指移动的路径轨迹规划,如机器人是在有地图条件或是没有地图的条件下,移动机器人按什么样的路径轨迹来行走;对于工业机器人则意指两个方向,机械臂末端行走的曲线轨迹,或是操作臂在运动过程中的位移、速度和加速度的曲线轮廓。

MATLAB相关 Robotics Toolbox 数值分析基础 人工智能基础

MATLAB 数据类型

在MATLAB中,默认的数值类型为双精度浮点型

数据类型与运算符——浮点数的取整

数据类型与运算符——算术运算符

数据类型与运算符——关系运算符

数据类型与运算符——逻辑运算符

数据类型与运算符——运算优先级

冒号运算符为步长为1的列表 将起点到终点位置的值列出来

MATLAB编程概述

在MATLAB中,用”%”表示注释

为了避免变量名相同引起冲突,一般在脚本文件的开始,都采用函数clear all

M文件的文件名命名必须以字母开头,且只能包括字母、数字和下划线

函数文件创立方法,输入和输出都可以有多个变量,函数更加的复合,建议多试试怎么做

  • 功能内聚、顺序内聚、通信内聚、过程内聚、时间内聚、逻辑内聚、偶然内聚

功能内聚是最理想的内聚类型,它指模块内的所有元素都共同完成一个单一的功能。可以想象成一个咖啡机,它的设计目的就是为了冲泡咖啡,所有部件都是为了这一功能服务的。

顺序内聚发生在一个模块中的元素输出是另一个元素的输入。比如,在汽车制造线上,一个工位负责安装轮胎,然后下一个工位是进行轮胎检验的,每个工位的任务都是顺序进行的。

通信内聚是指模块中的组件是为了操作同一数据集(例如数据库表)而工作的。例如,一个财务软件模块,它可以包括计算税收、生成财务报表等功能,这些功能都在处理同一批财务数据。

过程内聚是指模块中的元素是为了完成某个特定的过程而聚集的,但这些过程并非形成单一的功能。例如,一个文档处理模块可能会包括打开文件、格式化文本和打印文件的功能,这些功能都是按顺序执行的,但并不是为了完成一个独立的功能。

时间内聚是指模块中的功能是基于它们在同一时间执行的事实组合的。例如,程序启动时需要执行的一系列初始化功能,如配置内存、加载用户设置等,都是因为它们在相同的时期(启动时)执行。

逻辑内聚是指模块中的元素聚合在一起是因为它们逻辑上类似,通常通过一个控制逻辑(如if-else结构)来选择执行哪个功能。比如,一个应用程序可以有一个打印模块,用于打印文本文件、图像或PDF,用户选择什么文件类型,就执行相应的打印任务。

偶然内聚是最低级的内聚形式,指模块中的元素毫无逻辑地放在一起。这就像是一个工具箱,里面既有锤子也有螺丝刀和胶带,这些工具之间没有直接的关系,只是碰巧放在一起。

  • IPO方法

输入数据、处理数据、输出数据,这种简单明了的运算模式就形成了程序的基本编写方法,简称IPO方法。一个对象或模块与其它对象或模块之间的耦合度越低,它们之间的关系越少、越简单,这个对象的耦合性就越低。

  • 顺序结构,分支结构,循环结构

第二章 MATLAB中的矩阵

旋转矩阵一般形式

绕固定坐标系旋转的矩阵计算方法(回顾复习)

顾名思义,旋转过程始终以一个固定的坐标系为参考:

应按照矩阵依次左乘的方式计算旋转后的矩阵

绕当前坐标系旋转的矩阵计算方法

与前一种不同的是,按照矩阵依次右乘的方式计算旋转后的矩阵。

小结:

  • 绕当前轴进行ZYX旋转,最终得到的结果和绕固定轴进行XYZ旋转一致
  • 旋转矩阵的逆矩阵等于它的转置

MATLAB 中的矩阵和数组操作

创建矩阵和数组

  • 使用方括号 [ ] 来创建矩阵或数组
R1 = [-0.7500,-0.2500,0.6124;-0.2500,-0.7500,-0.6124;0.6124,-0.6124,0.5000];

索引和切片:

  • 使用冒号 : 来进行切片操作。
  • 例如,获取矩阵A的第一行:A(1, :);获取矩阵A的第一列:A(:, 1)
R1(1,3) //访问矩阵里面的元素

矩阵运算求逆矩阵转置矩阵矩阵相乘运算):

  • 使用 inv(A) 函数来求矩阵A的逆矩阵
  • 使用 transpose(A) 或 A' 来求矩阵A的转置矩阵
  • 使用 A * B 进行矩阵相乘运算

*形状操作(获取矩阵A的维度信息,矩阵A重塑为m行n列的矩阵,矩阵A复制为一个m行n列的块矩阵):

  • 使用 size(A) 可以获取矩阵A的维度信息。
  • 使用 reshape(A, m, n) 可以将矩阵A重塑为m行n列的矩阵。
  • 使用 repmat(A, m, n) 可以将矩阵A复制为一个m行n列的块矩阵。

产生矩阵(空矩,1矩,随机矩):

A=zeros(N):%产生N×N全零矩阵
A=zeros(M,N) %产生M×N全零矩阵
A=ones(N) %产生N×N全1矩阵
A=ones(M,N) %产生M×N全1矩阵
A=eye(N) %产生N维单位矩阵
A=rand(N) %产生N×N均匀分布随机矩阵,其中每个元素均在0~1之间随机生成
A=rand(M,N) %产生M×N均匀分布随机矩阵,其中每个元素均在0~1之间随机生成
A=randn(N) %产生N×N标准正态分布随机矩阵,其中元素的分布满足均值为0,方差为1
A=randn(M,N) %产生M×N标准正态分布随机矩阵,其中元素的分布满足均值为0,方差为1

求矩阵的秩,行列式,特征值,迹:

矩阵的秩:rank(A)

方阵的行列式:det(A)

方阵的特征值:eig(A)

方阵的迹:trace(A)

正交矩阵

MATLAB符号计算公式

syms

syms,在开始前,首先要保证自己的MATLAB安装了Symbolic Math Toolbox工具箱!

syms x y;

expand(f):“expand” 是 MATLAB 中用于展开代数表达式的一个函数。

simplify(f):用法:对一个符号式子同类项的系数进行合并同时按照幂次从高到底进行排列,有因子会被提取出。必须得是一个符号式子,否则没有意义

factor(f):当输入f为符号多项式时,对f进行因式分解

subs(f,old,new):将符号表达式中的符号变量old用数值型变量或符号变量new进行替换

diff(f,x,n):对符号表达式f中的x求n阶偏导

jacobian():求雅可比矩阵

雅可比矩阵 是一阶偏导数以一定方式排列成的矩阵, 其行列式称为雅可比行列式。

int(f,x):求不定积分

int(f,x,a,b):求[a,b]的定积分

inf(f,x,0,inf):求反常积分(inf表示无穷大)

fourier(f,x,w),对函数f中的x进行傅里叶变换,返回关于w的函数

ifourier(F,w,x),对F中的w进行傅里叶逆变换,返回关于x的函数

laplace(f,x,t),对函数f中的x进行拉普拉斯变换,返回关于t的函数

ilaplace(F,t,x),对F中的t进行拉普拉斯逆变换,返回关于x的函数

ztrans(f,k,w),对函数f中的k进行Z变换,返回关于w的函数

iztrans(F,w,k),对F中的w进行逆Z变换,返回关于k的函数

符号代数方程的建立

syms x
e1=str2sym('x2+2x+1=0')

符号代数方程组的求解

syms x y z
e1=str2sym('2*x+3*y-2*z=4');
e2=str2sym('4*x-y+5*z=6');
e3=str2sym('-x+y+z=0');
g=solve(e1,e2,e3)
%solve(e1,e2,……,en):求解由n个代数方程e1,e2,……,en组成的代数方程组

符号微分方程的建立和求解

S=dsolve('Du=v,Dv=w,Dw=-u','u(0)=0,v(0)=0,w(0)=1')
S.u
S.v
S.w

常见的初等函数

补充1:Matlab中不同于其他语言的循环和判断用法

for 循环变量 = 向量或矩阵
    循环体
end
if 表达式
    执行体
end

while 表达式
    循环体
end

第三章 位姿描述

旋转矩阵一般形式(常用旋转算子)

平移算子

绘制旋转矩阵

  • figure:创建一张新的“空白画布”,以便后面的图在它上面生成
  • 若绘图命令前没有这一句,则后生成的图会覆盖掉先生成的图
  • trplot(R):绘制经旋转矩阵R变换后的坐标轴
  • tranimate(R):以动画的形式表现坐标轴在旋转矩阵R下的旋转,绘制的图仅播放一次动画。

什么是齐次变换矩阵

求平移矩阵

例3.2 坐标系{B}与坐标系{A}有着相同的方位,但坐标系{B}的原点在坐标系{A}下记为[2,1,3]T。求这一变换的齐次矩阵T。

transl(px,py,pz):求沿x轴平移px单位长,沿y轴平移py单位长,沿z轴平移pz单位长,这一平移变换的齐次矩阵

求复合变换

例3.3 已知坐标系{B}绕坐标系{A}的Z 轴旋转了30°,沿X A平移10个单位,再沿Y A平移5个单位。已知BP=[3,7,0]TAP 。

trotz(a):绕z轴旋转a角度的齐次矩阵,类似的,有trotx(a)和troty(a)

  • cosd(a):求角度a的余弦值
  • cos(a):求弧度a的余弦值类似还有sind(a),tand(a)等

什么是 XYZ固定角?

XYZ角又可以称作回转角、俯仰角、偏转角。每次旋转都是绕着固定参考系A的轴进行的!!这种姿态表示法就是“X-Y-Z固定角”,绕固定坐标系旋转角度。首先将坐标系{B}和一个已知参考坐标系{A}重合。先将{B}绕XA旋转γ角,再绕YA旋转β角,最后绕ZA旋转α角。
每个旋转都是绕着固定参考坐标系{A}的轴。我们规定这种姿态的表示法为X-Y-Z固定角。“固定”一词是指旋转是在固定(即不运动的)参考坐标系中确定的。有时把它们定义为回转角、俯仰角和偏转角。但是使用中应注意,因为这个定义经常与其他定义不同的问题相关。

什么是欧拉角

欧拉角是一种基于三种较简单旋转运动(称为俯仰、滚动和偏航)创建一般旋转的机制。如下图,一架沿x轴方向飞行的飞机可以通过转向左或转向右(偏航),朝上飞或朝下飞(俯仰),或简单绕x轴旋转(滚动)来改变飞行方向。

首先将坐标系{B}和一个已知参考坐标系{A}重合。先将{B}绕ZB旋转α角,再绕YB旋转β角,最后绕XB旋转γ角。按照旋转顺序故称该方法为Z-Y-X欧拉角。

欧拉角和xyz角之间的区别

欧拉角指的是旋转是绕物体自身的坐标轴(local axis)旋转。固定角指的是旋转绕世界坐标系的轴(local axis)旋转。

例3.6 坐标系{B}与坐标系{A}在初始状态下重合。{B}绕{B}的z轴旋转45°,再绕{B}的y轴旋转60°,最后绕{B}的z轴旋转135°。求Z-Y-Z欧拉角。

显然,Z-Y-Z欧拉角为(45°,60°,135°)

tr2eul(R):将旋转矩阵R转为Z-Y-Z欧拉角,输出值的单位为弧度(注意 这里matlab只提供了能转换ZYZ欧拉角函数)

从旋转矩阵计算欧拉角

从旋转矩阵中找到所有可能的欧拉角的简单方法,在计算机图形学、视觉学、机器人学和运动学中,欧拉角的确定有时是必要的一步。然而,解决方案可能是明显的,也可能不是。

如果不用matlab自带的函数快速求出欧拉角,那么我们就要从欧拉角的计算公式中仔细求解

  • atan2函数提供y/x的反正切值,范围在[-π, π]。适用于标量和向量输入,能处理x=0的情况,不同于普通反正切函数。
  • atan2(y,x)的输出范围为[-180°, 180°],且输出单位为弧度

*等效角度-轴线表示法

复数与四元数——四元数

  • 四元数由实数加上三个虚数单位 i、j和k组成
  • 四元数形如a+bi+cj+dk,a、b、c、d为实数
  • i2= j2 = k2 =-1
  • ij=k, jk=i, ki=j
  • ji=-k, kj=-i, ik=-j
  • 四元数乘法通常不满足交换律,但满足结合律和分配律、

四元数相关运算

p1=a1+b1i+c1j+d1k

p2=a2+b2i+c2j+d2k

加法:p1+p2 =(a1+a2)+ (b1+b2)i+ (c1+c2)j+ (d1+d2)k

模长:||p1|| =(a12+b12+c12+d12)0.5

乘法:p1 p2 =(a1+b1i+c1j+d1k)(a2+b2i+c2j+d2k)

点乘:p1 ·p2 =a1a2+b1b2+c1c2+d1d2

共轭:p1*=a1-b1i-c1j-d1k

第四章 机器人运动学

DH参数法建系方法

分析方法例子(左边是前置坐标系,右边是后置)

答案

创建机器人(matlab实践)

link_name=Link([theta,d,a,alpha,link_type],DH_type);

连杆与关节

操作臂可以看成由一系列刚体通过关节连接而成的一个运动链,把这些刚体称为连杆。在进行操作臂的结构设计时,通常选择仅具有一个自由度的关节作为连杆的连接方式。通常采用转动关节或移动关节连接连杆。

dh参数创建连杆

用连杆参数描述机构运动关系的规则称为Denavit-Hartenberg参数,简称为D-H参数。在D-H参数描述下,每个连杆都可以用四个运动学参数描述。两个参数用于描述连杆本身,另外两个参数用于描述连杆之间的连接关系。

对于一个n关节机器人,约定末端连杆为第n个连杆,固定基座为第0个连杆。连接连杆i-1和连杆i的关节为第i个关节。
描述连杆本身的参数:

  • 连杆转角αi-1:连杆i-1的扭转角
  • 连杆长度ai-1:关节i-1和关节i之间公垂线的长度(都是关于轴的)

描述连杆之间连接关系的参数:

  • 关节角θi:连杆i-1和连杆i绕公共轴线旋转的夹角
  • 连杆偏距di:连杆i-1和连杆i沿公共轴线方向的距离

小结:DH参数不唯一

  • 转动关节的关节角θ是关节变量,其余三个参数不变
  • 移动关节的连杆偏距d是关节变量,其余三个参数不变

link函数

L =Link([theta D A alpha sigma offset], CONVENTION)

可以参考

与Link对象相关方法如下:

写入/读取Link的参数如下所示:

options:

可知道
关节角为theta,单位为弧度
连杆转角为alpha,单位为弧度
连杆偏距为d,单位为米
连杆长度为a,单位为米
当link_type=1时,连接此连杆的关节为移动关节
当link_type=0时,连接此连杆的关节为转动关节
当DH_type=‘standard’时,表示采用标准D-H参数描述
当DH_type=‘modified’时,表示采用改进D-H参数描述

注意:
当创建第i个连杆时,实际上是在同时创建第i个连杆和第i个关节
连杆的D-H参数和连杆的类型一起以1×5矩阵形式输入
MATLAB中,函数名和变量名区分大小写。要注意这里的首字母为大写。
第0个连杆(基座)默认已创建,这里创建的是1~n个连杆和1~n个关节。

Link:创建机器人的连杆对象
(1)L= Link()是具有默认参数的Link对象;
(2)L= Link(link)是一个Link对象,它是连杆对象link的副本
(3)L= Link( options)是指定了运动和动态参数的连杆对象。

SerialLink函数
可以将关节连接起来

正向运动学和逆向运动学

DH参数分为分为标准DH参数和改进DH参数两种
std_dh mod_dh

超越方程

工作空间

https://www.bilibili.com/read/cv22217905

多项式插值:https://blog.csdn.net/qq_41848675/article/details/99345194

包括拉格朗日插值法

当数学模型不能得到精确解时,通常要用数值方法求它的近似解,其近似解与精确解之间的误差称为截断误差(或方法误差)

牛顿插值法

https://eol.ctbu.edu.cn/meol/common/script/preview/download_preview.jsp?fileid=6932580&resid=1925732808&lid=66715

例6.8错误修改

共轭转置矩阵:AH

伪逆矩阵

摩尔彭罗斯方程(MP方程)

最大秩分解 https://blog.csdn.net/weixin_43752761/article/details/125929635

线性多步法(简答题)

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
颜文字
Emoji
上一篇
下一篇