三自由度并联机构

1.运动学分析

目标物体由前后的电动缸进行控制,通过给定前后缸的伸缩长度,来控制目标的位置姿态,实现目标物体的上下,前后,俯仰这三个自由度的运动。

机械机构如下图所示,左侧为前电动缸,右侧为后电动缸。


标出所需的量,设未知数如下图所示。设控制前电动缸长度为LA,设控制后电动缸长度为LB,在目标物体上的末端位置取一点设为(x0,y0)。通过以下公式可得末端位置的位姿:

对该执行机构的各部分设置未知参数对该执行机构的各部分设置未知参数对该执行机构的各部分设置未知参数


得到末端位置的数学公式


通过α与β计算出铰接点坐标(xa,ya)和滚轮圆心的坐标(xb,yb)再通过相似原理计算出并联机构与水平面的倾斜角γ和末端位置的坐标(x0,y0)


2.可行范围内的拟合

末端位置由A位置移动到B位置,有一个x方向和y方向上的差值,即ΔxΔy


根据末端位置的运动范围,将步数分为100个路径点,拟合得到系数a1、b1、a2、b2

再由自变量ΔxΔy得到电动缸的伸缩量,即ΔLAΔLB

此时就可以通过x和y方向上的差值,得到电动缸的伸缩量。


3.代码实现

  • 拟合路径得到系数
clear
clc
x=7100;
y=850;
xx=[];yy=[];cy1=[];cy2=[];
k=1;
n=101;
for i = 1:nx0 = x + 2 * (i-1);for j = 1:ny0 = y - 1 * (j-1);[ LA , LB , theta ] = cylength_inclinationangle ( x0 , y0 );xx(k)=x0;yy(k)=y0;cy1(k)=LA;cy2(k)=LB;theta1(k)=theta;k=k+1;end
end
cftool

以x的路径点为X轴,y的路径点为Y轴,拟合出 LA 和 LB 的系数



黑点为实际路径点,彩色平面为拟合路径点。由图像可知,大部分的黑点都在该平面上,因此拟合的效果较好。

以系数和自变量ΔxΔy得到缸长伸缩量

function [ deltaLA , deltaLB ] = Deviation_cylinder( deltax,deltay )% x、y要移动的距离deltax;deltay;%拟合曲线缸A长度的系数aA = -0.1507;bA = -0.02793 ;%-2.82e-14;%拟合曲线缸B长度的系数aB = 0.01158;bB = 0.1867;deltaLA = aA * deltax + bA* deltay;deltaLB = aB * deltax + bB* deltay;end
  • 倾斜角变化
ii=[];jj=[];xx=[];yy=[];tt=[];la=[];lb=[];k=1;
for i = 1:51x0 = 7000 + 4*(i-1);for j=1:51y0 = 800 + 2*(j-1);[ LA , LB ,t1 ] = cylength_inclinationangle ( x0 , y0 );xx(k)=x0;yy(k)=y0;tt(k)=t1;la=LA;lb=LB;k=k+1;end
end
max1=max(abs(tt))
min1=min(abs(tt))
mac=max1-min1

得到倾斜角约等于 的结果,因此在移动过程中不需要考虑末端姿态的调整。

  • 逆解
    输入A位置B位置的坐标差值(x0,y0),得到两电动缸的长度和机构下底面对地的倾斜角。
function [ LA , LB , t ] = cylength_inclinationangle ( x0 , y0 )x0;y0;x1=0;y1=821;x2=600;y2=0;x3=1910;y3=666;x4=2196.8;y4=211;h = 200;l = 7000;L12=sqrt((x1-x2)^2+(y1-y2)^2);L34=sqrt((x3-x4)^2+(y3-y4)^2);%     gamma=atan(h/l);L1=sqrt(h^2+l^2);L2=1385;L3=350;L4=sqrt((x0-x1)^2+(y0-y1)^2);% Angle to store alpha series
%     alpha1=rad2deg(atan(abs(y0-y1)/(x0-x1)))
%     alpha2=rad2deg(atan(abs(y2-y1)/(x2-x1)))
%     alpha3=rad2deg(acos((L2^2+L4^2-L1^2)/(2*L2*L4)))
%     alpha=alpha1+alpha2+alpha3alpha1=atan(abs(y0-y1)/(x0-x1));alpha2=atan(abs(y2-y1)/(x2-x1));alpha3=acos((L2^2+L4^2-L1^2)/(2*L2*L4));alpha=alpha1+alpha2+alpha3;[ x7 , y7 ,t ] = cy3( x0 , y0 );% position fo B and angle of bridge%     L6=1370;
%     L7=1045;
%     L8=sqrt((x4-x7)^2+(y7-y4)^2);
%     beta=rad2deg(acos((L6^2+L34^2-L8^2)/(2*L6*L34)));L6=1370;L7=1045;L8=sqrt((x4-x7)^2+(y4-y7)^2);beta=acos((L6^2+L34^2-L8^2)/(2*L6*L34));    %ideal value of LA and LBLA=sqrt(L3^2+L12^2-2*L3*L12*cos(alpha));LB=sqrt(L34^2+L7^2-2*L34*L7*cos(beta));
%     LA=sqrt(L3^2+L12^2-2*L3*L12*cosd(alpha));
%     LB=sqrt(L34^2+L7^2-2*L34*L7*cosd(beta));end

其中,cy3代码如下。

function [ x7 , y7 , theta ]=cy3( x , y )%已知理想值的坐标,求滚轮圆心坐标x1=x;y1=y;x2=0;y2=821;x3=1910;y3=666;h=200;l=7000;r=100;L3=1370;L=sqrt((x1-x2)^2+(y1-y2)^2);L1=1385;L2=sqrt(h^2+l^2);phi=atan((y1-y2)/(x1-x2));gamma=acos((L1^2+L^2-L2^2)/(2*L1*L));x4=x2+L1*cos(gamma+phi);y4=y2+L1*sin(gamma+phi);alpha=atan(h / l);a=atan((y1-y4)/(x1-x4));a1 = a + alpha;x5=x1+r*sin(a1);y5=y1-r*cos(a1);ka=tan(a1);x6=(ka*x5-y5+y3+(x3/ka))/(ka+(1/ka));y6=ka*(x6-x5)+y5;L4=sqrt((x3-x6)^2+(y3-y6)^2);L5=sqrt(L3^2-L4^2);x7=x6+L5*cos(a1);y7=y6+L5*sin(a1);theta = rad2deg(a1);
end
  • 正解

通过解出的电动缸长度,正解出机构末端的位置和姿态。

function [ x0 , y0 ,gamma4 ] = slove_coordinate( LA , LB )L1 = LA;L2 = LB;x1=0;y1=821;x2=600;y2=0;x3=1910;y3=666;x4=2196.8;y4=211;h = 200; l = 7000; r = 100;L12=sqrt((x1-x2)^2+(y1-y2)^2);L34=sqrt((x3-x4)^2+(y3-y4)^2);a1=350;a2=1385;b1=1045;b2=1370;alphaa = rad2deg(acos((L12^2+a1^2-L1^2)/(2*L12*a1)));alphaa1 = rad2deg(atan(abs(y2-y1)/abs(x2-x1)));alphaa2 = alphaa - alphaa1;xa = a2 * cosd(alphaa2) + x1;ya = a2 * sind(alphaa2) + y1;betaa = rad2deg(acos((L34^2+b1^2-L2^2)/(2*L34*b1)));betaa1 = rad2deg(atan(abs(y3-y4)/abs(x3-x4)));betaa2 = betaa - betaa1;xb = b2 * cosd(betaa2) + x3;yb = b2 * sind(betaa2) + y3;d1 = sqrt((xa-xb)^2+(ya-yb)^2);d12 = d1 / (1 + h / r);d11 = (h / r) * d12;l11 = sqrt( d11^2 - h^2 );gamma2 = rad2deg(acos((xb-xa) / d1));gamma3 = rad2deg(acos( l11 / d11 ));gamma4 =  gamma3 - gamma2 ;xh = xa + h * sind(gamma4);yh = ya - h * cosd(gamma4);x0 = xh + l * cosd(gamma4);y0 = yh + l * sind(gamma4);end
  • 误差分析
clear;
clc;
%true position with idea position input
%The starting point
x0 = 7100;% 7217 7200
y0 = 950 ;% 840  750
%The initial distancedeltax =  100;
deltay = -110;
xi1 = x0 + deltax;% targrt x
yi1 = y0 + deltay;% target y
deltaxx = 0;
deltayy = -90;
xi2 = xi1 + deltaxx ;
yi2 = yi1 + deltayy ;
deltaxxx = deltax + deltaxx;
deltayyy = deltay + deltayy;%输入理想缸长得到的理想坐标
[ LAi0 , LBi0 ] = cylength_inclinationangle ( x0 , y0 );
[ xi00 , yi00 ] = slove_coordinate( LAi0 , LBi0 );[ LAi1 , LBi1 ] = cylength_inclinationangle ( xi1 , yi1 );
[ xi01 , yi01 ] = slove_coordinate( LAi1 , LBi1 );[ LAi2 , LBi2 ] = cylength_inclinationangle ( xi2 , yi2 );
[ xi02 , yi02 ] = slove_coordinate( LAi2 , LBi2 );%输入拟合缸长得到真实坐标
%第一步,移动到正上方
[ LAi0 , LBi0 ] = cylength_inclinationangle ( x0 , y0 );
LA = round( LAi0 ); LB = round( LBi0 );[ deltaLA , ~ ] = Deviation_cylinder( deltaxxx , deltayyy );
[ ~ , deltaLB ] = Deviation_cylinder( deltax , deltay );
LA1 = round( LA + deltaLA );
LB1 = round( LB + deltaLB );
[ x01 , y01 ] = slove_coordinate( LA1 , LB1 );
deltax1 = round( xi1 - x01 );
deltay1 = round( yi1 - y01 );
Error1=sqrt(deltax1^2 + deltay1^2);[ deltaLA1 , deltaLB1 ] = Deviation_cylinder( deltax1,deltay1 );
LA2 = round( LA1 + deltaLA1 );
LB2 = round( LB1 + deltaLB1 );
[ x02 , y02 ] = slove_coordinate( LA2 , LB2 );
deltax2 = round( xi1 - x02 )+2;
deltay2 = round( yi1 - y02 )+2;
Error2=sqrt(deltax2^2 + deltay2^2);% 第二步,实现位姿
deltax21 = 0 ; deltay21 = deltayy ;
[ ~ , deltaLB2 ] = Deviation_cylinder( deltax21,deltay21 );
LA3 = LA2 ;
LB3 =round ( LB2 + deltaLB2 );
[ x03 , y03 ] = slove_coordinate( LA3 , LB3 );
deltax3 = round (xi2 - x03 ) ; deltay3 = round ( yi2 - y03 ) ;
Error3=sqrt(deltax3^2 + deltay3^2);[ deltaLA3 , deltaLB3 ] = Deviation_cylinder( deltax3,deltay3 );
LA4 = LA3 ;
LB4 = round ( LB3 + deltaLB3 );
[ x04 , y04 ] = slove_coordinate( LA4 , LB4 );
deltax4 = round (xi2 - x04 ); deltay4 = round ( yi2 - y04 );
Error4 = sqrt(deltax4^2 + deltay4^2);

完整的代码如下:https://download.csdn.net/download/AlbertDS/12840033

基于Matlab对三自由度并联机构的正逆解相关推荐

  1. 【数学建模】基于matlab船舶三自由度MMG模型【含Matlab源码 1925期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[数学建模]基于matlab船舶三自由度MMG模型[含Matlab源码 1925期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式 ...

  2. matlab机器人轨迹规划仿真程序,基于MATLAB的六自由度机器人轨迹规划与仿真.pdf...

    基于MATLAB的六自由度机器人轨迹规划与仿真 学兔兔 l 訇 似 基于MATLAB的六自由度机器人轨迹规划与仿真 Trajectory planning and simulation of six- ...

  3. 多自由度机械臂运动学正-逆解|空间轨迹规划控制|MATLAB仿真+实际机器调试

    多自由度机械臂运动学正-逆解|空间轨迹规划控制|MATLAB仿真+实际机器调试 ) DH建模法可以参考这个博客: 还有<机器人>这本书,一定要理论实践相结合,理解后可以用几何法建模也可以用 ...

  4. 基于matlab的三相逆变器,基于matlab的三相三电平逆变器SVPWM算法

    基于matlab的三相三电平逆变器SVPWM算法 摘要:本文介绍了二极管中点箝位式三电平电压型逆变器为主电路的逆变装置,详细分析了三相三电平逆变器SVPWM传统算法的原理,详细阐述了SVPWM波形发生 ...

  5. matlab求解多自由度振动系统,【2017年整理】1-《机械振动基础》大作业,基于matlab的多自由度振动.doc...

    [2017年整理]1-<机械振动基础>大作业,基于matlab的多自由度振动 <机械振动基础>大作业 (2016年春季学期) 题目多自由度振动系统的固有频率和固有阵型 姓 名学 ...

  6. matlab实现三自由度机械臂旋转

    matlab实现三自由度的机械臂旋转 1 内容与要求 根据表一机械臂长度,以及图一机械臂配置为机械臂开发一个控制器,使其能够执行特定的任务.更具体地说,让机械臂的末端执行器移动到特定的点.项目要求: ...

  7. matlab计算结构自振频率,基于Matlab的多自由度系统固有频率及振型计算

    基于Matlab的多自由度系统固有频率及振型计算 阅读:25212010-04-13 21:38 标签:杂谈 可参考文涛,基于Matlab语言的多自由度振动系统的固有频率及主振型计算分析,2007 对 ...

  8. 6轴机器人运动学逆解matlab,六轴机器人建模方法、正逆解、轨迹规划实例与Matalb Robotic Toolbox 的实现...

    摘要 本文主要是给大家一个系统的概念,如何用Matlab实现六轴机器人的建模和实现轨迹规划.以后将会给大家讲解如何手写正逆解以及轨迹插补的程序.程序是基于Matlab2016a,工具箱版本为Robot ...

  9. 【机器人原理与实践(三)】六轴机械臂正逆解控制

    文章目录 3.1 空间转换矩阵的理解 3.1.1平移变换 3.1.2旋转变换 3.2 D-H参数法 3.3 建立机械臂模型 3.3.1 机械臂模型介绍 3.3.2 使用Matlab进行示教仿真 3.4 ...

  10. MATLAB机器人正逆解

    MATLAB机器人求正逆解 手把手教你MATLAB Robotics Toolbox工具箱③ Matlab RoboticToolBox(一)Link参数.三自由度/四自由度逆运动学 https:// ...

最新文章

  1. 【微信小程序企业级开发教程】界面刷新获取新更新数据
  2. Spring Boot + IntelliJ IDEA——自动部署[Spring Boot热部署]+LiveReload[前端自动刷新、热加载]解决方案
  3. 窗口分析函数_16_找出最后一个元素
  4. 《30天自制操作系统》笔记(04)——显示器256色
  5. mac微软雅黑字体_“微软雅黑”有坑,小编向你推荐免费的开源字体
  6. 浏览器 UC 自动添加关键字 去掉关键字
  7. Asp.Net4.0/VS2010新变化(2):网站自动预热
  8. Atitit 软件理论方面的书籍 目录 1. 计算机科学分为计算机理论和计算机应用。 计算机基础理论包含以下几部分: 2 1.1. ( 1) 程序理论( 程序逻辑、程序正确性验证、形式开发方法等
  9. B2B网站平台建设:优势、功能、模块三大方向解析
  10. C++中typedef用法说明
  11. 佳能7660cdn 评价_佳能Canon LBP7660Cdn 驱动
  12. 魔兽世界国服服务器稳定,《魔兽世界》国服大服务器功能实装启动
  13. python脚本 游戏赚金币_一种王者荣耀刷金币方法(python脚本)
  14. unity3D professional专业主题——黑色主题设置
  15. 联想小新 mini 主机 评测
  16. 揭秘V神的以太坊账户,曾神秘套现5000万美金!
  17. Excel 撤消工作表保护密码
  18. 开源项目管理软件排名_2015年排名前5位的开源项目管理工具
  19. macOS开启高性能模式
  20. 让阿里再次伟大--钉钉如何长成独角兽的?

热门文章

  1. 1016day3:city查询系统json模块、餐厅点菜系统、点餐系统(class类)
  2. android 解压zip工具,ZArchiver解压缩工具
  3. 圆形连接器工业M8连接器M12连接器UL认证安装螺钉扭力测试国际IEC标准
  4. vs2019(C语言) 使用教程
  5. 打印机可以打印不能扫描怎么弄_惠普打印机可以打印但无法扫描的解决办法
  6. 设备\Device\Harddisk0\D 有一个不正确的区块
  7. 磁盘分区助手使用心得
  8. 第二代支付系统专题之报文篇(二)大额支付报文完整版(含二代新增功能业务说明)
  9. 小程序的通知授权功能
  10. 微信小程序的Django后端极简部署