代码复制的有问题,详细见本楼,谢谢。

clc;clear;

DR=pi/180;

%time

j = 1;

for i = 0 : 0.1 : 2

%input

theta= 45 * DR *(1+6*exp((-1)*i/0.3)-8*exp((-1)*i/0.4));

theta_d= (-9*pi)/20*exp(-0.3*i)+20*exp(-2.5*i);

theta_dd= (27*pi/200)*exp(-0.3*i) - 50*exp(-2.5*i);

% DH parameters

the(1) = theta*DR; d(1)=2; a(1)=0; alp(1)=0;

the(2) = theta*DR; d(2)=0; a(2)=0; alp(2)=90*DR;

the(3) = theta*DR; d(3)=0; a(3)=3; alp(3)=0;

the(4) = 0; d(4)=0; a(4)=4; alp(4)=0;

%base link

w00=[0;0;0]; v00=[0;0;0]; w00d=[0;0;0];v00d=[0;9.8;0];

% rotation matrix

T01=[cos(the(1)), (-1)*sin(the(1)), 0, a(1); sin(the(1))*cos(alp(1)), cos(the(1))*cos(alp(1)), -sin(alp(1)), -sin(alp(1))*d(1); sin(the(1))*sin(alp(1)), cos(the(1))*sin(alp(1)), cos(alp(1)), cos(alp(1))*d(1); 0,0,0,1];

T12=[cos(the(2)), (-1)*sin(the(2)), 0, a(2); sin(the(2))*cos(alp(2)), cos(the(2))*cos(alp(2)), -sin(alp(2)), -sin(alp(2))*d(2); sin(the(2))*sin(alp(2)), cos(the(2))*sin(alp(2)), cos(alp(2)), cos(alp(2))*d(2);0,0,0,1];

T23=[cos(the(3)), (-1)*sin(the(3)), 0, a(3); sin(the(3))*cos(alp(3)), cos(the(3))*cos(alp(3)), -sin(alp(3)), -sin(alp(3))*d(3); sin(the(3))*sin(alp(3)), cos(the(3))*sin(alp(3)), cos(alp(3)), cos(alp(3))*d(3);0,0,0,1];

T34=[cos(the(4)), (-1)*sin(the(4)), 0, a(4); sin(the(4))*cos(alp(4)), cos(the(4))*cos(alp(4)), -sin(alp(4)), -sin(alp(4))*d(4); sin(the(4))*sin(alp(4)), cos(the(4))*sin(alp(4)), cos(alp(4)), cos(alp(4))*d(4);0,0,0,1];

R01= T01(1:3,1:3); R12= T12(1:3,1:3); R23= T23(1:3,1:3); R34= T34(1:3,1:3);

R10= R01'; R21= R12'; R32= R23'; R43= R34';

T10=T01';T21=T12';T32=T23';T43=T34';

p10= T10(1:3,4);p21= T12(1:3,4); p32= T23(1:3,4); p43= T34(1:3,4);

%center distance

pc11=[2;0;0]; pc22=[3;0;0];pc33=[4;0;0];

z=[0;0;1];

% link mass

m1=4; m2=2; m3=2;

% inertia tensor

Ic1=0; Ic2=0; Ic3=0;

% outward recrusion

%link1

w11 = R10*w00 + theta_d*z;

w11d = R10*w00d + cross(R10*w00, z*theta_d) + theta_dd*z;

v11d = R10*(cross(w00d, p10) + cross(w00, cross(w00, p10)) + v00d);

vc11d = cross(w11d, pc11) + cross(w11, cross(w11, pc11)) + v11d;

F11 = m1*vc11d;

N11 = Ic1*w11d + cross(w11, Ic1*w11);

% link2

w22 = R21*w11 + theta_d*z;

w22d = R21*w11d + cross(R21*w11, z*theta_d) + theta_dd*z;

v22d = R21*(cross(w11d, p21) + cross(w11, cross(w11, p21)) + v11d);

vc22d = cross(w22d, pc22) + cross(w22, cross(w22, pc22)) + v22d;

F22 = m2*vc22d;

N22 = Ic2*w22d + cross(w22, Ic2*w22);

% link3

w33 = R32 * w22 + theta_d * z;

w33d = R32*w22d + cross(R32*w22, z*theta_d) + theta_dd*z;

v33d = R32*(cross(w22d, p32) + cross(w22, cross(w22, p32)) + v22d);

vc33d = cross(w33d, pc33) + cross(w33, cross(w33, pc33)) + v33d;

F33 = m3*vc33d;

N33 = Ic3*w33d + cross(w33, Ic3*w33);

% Inward iterations: i: 3->1

f44 = [0; 0; 0]; n44 = [0; 0; 0];

% i = 3

f33 = R34*f44 + F33;

n33 = N33 + R34*n44 + cross(pc33, F33) + cross(p43, R34*f44);

tau3 = n33'* z;

Tau_3(j) = tau3;

%plot(i,Tau_3,'-b')

% i = 2

f22 = R23*f33 + F22;

n22 = N22 + R23*n33 + cross(pc22, F22) + cross(p32, R23*f33);

tau2 = n22'* z;

Tau_2(j) = tau2;

%plot(i,Tau_2,'-k')

% i =1

f11 = R12*f22 + F11;

n11 = N11 + R12*n22 + cross(pc11, F11) + cross(p21, R12*f22);

tau1 = n11'* z;

Tau_1(j) = tau1;

%plot(i,Tau_1,'-r')

j = j + 1;

%tau4 = tau1+ tau2+tau3

end

i = 0: 0.1:2

plot(i, Tau_3,'-b')

hold on;

plot(i, Tau_2,'-r')

hold on;

plot(i, Tau_1,'-g')

hold on;

matlab欧拉迭代,matlab机械臂正逆运动学求解问题,使用牛顿-欧拉迭代算法相关推荐

  1. 修正逆解文章——六轴UR机械臂正逆运动学求解_MATLAB代码(标准DH参数表)

    如下参考链接1的作者大大实现了UR5机械臂的正运动学和逆运动学的Matlab代码.但逆解部分在不同版本的Matlab中运行有错误. 本篇文章是MatlabR2016a下完成的,并说明一下原代码错误的原 ...

  2. UR机械臂正逆运动学求解

    最近有个任务:求解UR机械臂正逆运动学,在网上参考了一下大家的求解办法,众说纷纭,其中有些朋友求解过程非常常规,但是最后求解的8组解,只有4组可用.在这里我介绍一个可以求解8组解析解的方法,供大家参考 ...

  3. UR5构型机械臂正逆运动学

    前言 整理之前的一个项目,当时看着一个博客硬生生计算了差不多一个星期.尝试用MatLab符号推导工具箱化简一部分工作.我使用的大象机器人一款开源入门级协作机器人产品myCobot,开发文档十分完善,但 ...

  4. 机械臂正逆运动学-----数值解

    机械臂正逆运动学-----数值解 建立DH坐标系 求正运动学 单关节齐次传递矩阵 正运动学:返回齐次矩阵 正运动学:返回欧拉角向量 求雅可比矩阵 求机械臂逆运动学 合成通用运动学类 机械臂的运动学包括 ...

  5. 实验一 机械臂正逆运动学

    实验一 机械臂正逆运动学 一.实验目的 1.巩固正逆运动学基础概念. 2.了解正逆运动学在机械臂控制中的实际用途. 二.实验内容 1.机械臂模型DH参数的计算. 2.机械臂正运动学的计算. 3.机械臂 ...

  6. 五自由度机械臂正逆运动学算法(C语言+Matlab)

    五自由度机械臂建模 学习代码都记录在个人github上,欢迎关注~ Matlab机器人工具箱版本9.10 机械臂还是原来的机械臂,之前用ROS做底层驱动,不需要写正逆运动学和相关算法就能得到一些简单的 ...

  7. ROS机械臂正逆运动学

    这里做一个六轴机械臂用于正逆运动学实验. 这里其实一共只有3轴,只有3轴位置没有姿态.所以urdf文件里我在末端做了3个虚拟关节,以便将kdl的frame能够填满,使得齐次坐标变换是规则的. 1.ur ...

  8. 用matlab实现机械臂正逆运动学控制

    设计要求: 1.建立一个三自由度的机器人 2.建立坐标系,给出 D-H 参数表: 3.推导正运动学,并写出机器人的齐次变换矩阵: 4.推导逆运动学,并让机器人完成按要求绘制给定图形. 5.MATLAB ...

  9. MATLAB机器人工具箱【1】——建模+正逆运动学+雅克比矩阵

    MATLAB机器人工具箱[1]-- 机械臂建模+正逆运动学+雅克比矩阵 1. 二维空间位姿描述 2. 三维空间位姿描述 3. 建立机器人模型 3.1 Link 类 3.2 SerialLink 类 3 ...

最新文章

  1. ​2021年机器学习什么风向?谷歌大神Quoc Le:把注意力放在MLP上
  2. qt定时连续发送udp数据包_TCP和UDP
  3. yolo 负样本_目标检测介绍之YOLO与SSD
  4. CSDN如何居中对齐
  5. JS Ajax异步请求发送列表数据后面多了[]
  6. mllib协同过滤 java实现_协同过滤(ALS)算法介绍及Spark MLlib调用实例(Scala/Java/Python)...
  7. iOS convertRect:view.frame toView: x 异常翻倍?
  8. 受网友U2U之托,DevComponents出品的TreeGX最新版本Patch出炉
  9. python创建多个文件_Python创建文件夹与文件的快捷方法
  10. hdu 1421 搬寝室 动态规划
  11. mysql 自动 分库 备份_MySQL分库备份的方法
  12. PyCharm——如果不小心修改了第三方库文件,怎么办?
  13. TCP/IP 原理 -- ICMP:因特网控制报文协议
  14. 冰点文库下载器,文库免费下载(唯一可用的版)
  15. eoeandroid社区转发
  16. 塑料盖行业调研报告 - 市场现状分析与发展前景预测
  17. PC端后台项目的总结
  18. 董小刚先生担任BCF新闻理事
  19. 基于TCP协议网上聊天程序(python)带界面
  20. stm32 IIC ACK与NACK的理解

热门文章

  1. c语言用fread读取全部文本,C中用fread()从文件读取数据问题
  2. 日期Date和字符串之间转换
  3. win7怎么修改oracle登陆密码,win7账户密码如何修改|win7修改账户密码的详细步骤...
  4. 用计算机唱卡拉ok的配制,在电脑里面可以唱卡拉ok吗?应该怎么做?
  5. apache2.4.9 开启path_info访问_【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6)...
  6. 享元模式 Flyweight Pattern
  7. 多条SQL语句同时执行方法
  8. init-connect mysql_MySQL利用init-connect增加访问审计功能异常
  9. a:hover代表什么含义_板式热交换器型号该如何看?代表什么含义?
  10. 允许其它网段访问centos服务器_访问控制列表-ACL