【MATLAB习题】双摇杆机构的运动学分析
1.双摇杆机构概述
双摇杆机构的判别方法:
最长杆长度+最短杆长度 ≤ 其他两杆长度之和,连杆(机架的对杆)为最短杆时。
如果最长杆长度+最短杆长度 >其他两杆长度之和,此时不论以何杆为机架,均为双摇杆机构。
有1到2个死点位置,无急回特性
2.连杆机构组成类型
根据构件之间的相对运动为平面运动或空间运动,连杆机构可分为平面连杆机构和空间连杆机构。根据机构中构件数目的多少分为四杆机构、五杆机构、六杆机构等,一般将五杆及五杆以上的连杆机构称为多杆机构。当连杆机构的自由度为1时,称为单自由度连杆机构;当自由度大于1时,称为多自由度连杆机构。
根据形成连杆机构的运动链是开链还是闭链,亦可将相应的连杆机构分为开链连杆机构(机械手通常是运动副为转动副或移动副的空间开链连杆机构)和闭链连杆机构。单闭环的平面连杆机构的构件数至少为4,因而最简单的平面闭链连杆机构是四杆机构,其他多杆闭链机构无非是在其基础上扩充杆组而成;单闭环的空间连杆机构的构件数至少为3,因而可由三个构件组成空间三杆机构。
3. 连杆机构理论应用
动力机的驱动轴一般整周转动,因此机构中被驱动的主动件应是绕机架作整周转动的曲柄在形成铰链四杆机构的运动链中,a、b、c、d既代表各杆长度又是各杆的符号。当满足最短杆和最长杆之和小于或等于其他两杆长度之和时,若将最短杆的邻杆固定其一,则最短杆即为曲柄。
若铰链四杆机构中最短杆与最长杆长度之和小于或等于其余两杆长度之和,则
取最短杆的邻杆为机架时,构成曲柄摇杆机构;
取最短杆为机架时,构成双曲柄机构;
取最短杆为连杆时,构成双摇杆机构;
若铰链四杆机构中最短杆与最长杆长度之和大于其余两杆长度之和,则无曲柄存在,不论以哪一杆为机架,只能构成双摇杆机构。
3.1 急回系数
在曲柄等速运动、从动件变速运动的连杆机构中,要求从动件能快速返回,以提高效率。即k称为急回系数。
3.2 压力角
曲柄摇杆机构,若不计运动副的摩擦力和构件的惯性力,则曲柄a通过连杆b作用于摇杆c上的力P,与其作用点B的速度vB之间的夹角α称为摇杆的压力角,压力角越大,P在vB方向的有效分力就越小,传动也越困难,压力角的余角γ称为传动角。在机构设计时应限制其最大压力角或最小传动角。
3.3 死点
在曲柄摇杆机构中,若以摇杆为主动件,则当曲柄和连杆处于一直线位置时,连杆传给曲柄的力不能产生使曲柄回转的力矩,以致机构不能起动,这个位置称为死点。机构在起动时应避开死点位置,而在运动过程中则常利用惯性来过渡死点。
4. 平面四杆机构的运动特性
4.1 定理
杆长之和条件:平面四杆机构的最短杆和最长杆的长度之和小于或者等于其余两杆长度之和。
在铰链四杆机构中,如果某个转动副能够成为周转副,则它所连接的两个构件中,必有一个为最短杆,并且四个构件的长度关系满足杆长之和条件。
在有整装副存在的铰链四杆机构中,最短杆两端的转动副均为周转副。此时,
- 如果取最短杆为机架,则得到双曲柄机构;
- 若取最短杆的任何一个相连杆为机架,则得到曲柄摇杆机构;
- 如果取最短杆对面构件为机架,则得到双摇杆机构。
如果四杆机构不满足杆长条件,则不论选取哪个构件为机架,所得到机构均为双摇杆机构。
上述系列结论称为
格拉霍夫定理
。
4.2 急回特性
在曲柄摇杆机构中,当摇杆位于两个极限位置时,曲柄两个对应位置夹的锐角被称为极位夹角
。用表示通常用行程速度变化系数K来衡量急回运动的相对程度。偏置曲柄滑块机构和摆动导杆机构同样具有急回特性。对心曲柄滑块机构无急回特性。
文章部分引用工程造价网
5. 双摇杆机构运动分析
5.1 分析过程
双摇杆机构其实还是属于铰链四杆机构,所以运动分析的MATLAB代码和铰链四杆机构大同小异。只要修改一下杆的数据即可。
5.2 双摇杆机构存在的条件
- 最长杆长度+最短杆长度 ≤ 其他两杆长度之和,此条件称为杆长条件。
- 如果铰链四杆机构各杆的长度不满足杆长条件,则无周转副,此时不论以何杆为机架,均为双摇杆机构。
- 在满足杆长条件的四杆机构中,如果以最短杆为连杆(即图中的AB杆,CD杆为机架),则该机构为双摇杆机构。
5.3 matlab 代码
function main
%输入已知数据
clear;
i1=0.60;
i2=0.240;
i3=0.500;
i4=0.400;
omega1=0.001;
alpha1=0;
hd=pi/180;
%一弧度
du=180/pi;
%2调用子函数求出铰链的机构位移,角速度,角加速度
theta_1=acos((840*840+400*400-500*500)/(2*840*400)); %单位:rad 0.4126
theta_2=acos((600*600+400*400-740*740)/(2*600*400)); %单位:rad 1.6283
% theta_2_2=rad2deg(theta_2);
for n1=1:100
theta1(n1)=theta_1+((theta_2-theta_1)/100)*n1; %theta_1到theta_2 单位是rad
[theta,omega,alpha]=crank_cocker(theta1(n1),omega1,alpha1,i1,i2,i3,i4);%返回的是一个确定的值的矩阵
theta2(n1)=theta(1);theta3(n1)=theta(2);
omega2(n1)=omega(1);omega3(n1)=omega(2);
alpha2(n1)=alpha(1);alpha3(n1)=alpha(2);
end
for n1=101:200
theta1(n1)=theta_2-((theta_2-theta_1)/100)*(n1-100); %theta_1到theta_2 单位是rad
[theta,omega,alpha]=crank_cocker(theta1(n1),omega1,alpha1,i1,i2,i3,i4);%返回的是一个确定的值的矩阵
theta2(n1)=theta(1);theta3(n1)=theta(2);
omega2(n1)=omega(1);omega3(n1)=omega(2);
alpha2(n1)=alpha(1);alpha3(n1)=alpha(2);
end
%3角位移,角速度,角加速度的图形输出
figure(1);%figure是建立图形的意思。系统自动从1,2,3,4来建立图形,数字代表第几幅图形
n1=1:200;%建立一个行向量
subplot(2,2,1);%绘制位移线图
plot(n1,theta2(n1),n1,theta3(n1),'k');
% set(get(gcf,'CurrentAxes'),'xtick',theta_1:(theta_2-theta_1)/10:theta_2);
% axis([theta_1 theta_2 -1 3])
title('角位移线图')%设置图形标题为。。。
xlabel('曲柄转角\theta_1/rad')%设置x轴标签
ylabel('角位移/rad')
grid on ;%显示坐标轴网格线,grid off则关闭坐标轴网格线
hold on;%hold on是当前轴及图像保持而不被刷新,准备接受此后将绘制的图形,多图共存。hold off(默认)则相反
%绘制角速度线图
subplot(2,2,2);
H2=plot(n1,omega2(n1),n1,omega3(n1),'k');
% set(get(H2,'xlabel'),'xtick',theta_1:(theta_2-theta_1)/10:theta_2);
title('角速度线图')
xlabel('曲柄转角\theta_1/cicr')
ylabel('角速度/rad\cdots^{-1}')
grid on;hold on;
%角加速度线图
subplot(2,2,3);
H3=plot(n1,theta2(n1),n1,alpha3(n1),'k')
% set(get(H3,'xlabel'),'xtick',theta_1:(theta_2-theta_1)/10:theta_2);
title('角加速度线图');
xlabel('曲柄转角\theta_1/\circ')
xlabel('角加速度/rad\cdots^{-2}')
grid on;hold on;
% text(230,244,'\alpha_2')
% set(gca,'xtick',[theta_1:0.1:theta_2]); %设置x轴的刻度为0:15:100
% text(30,734,'\alpha_3')
%铰链四杆机构图形输出
subplot(2,2,4);
x(1)=0;y(1)=0;
x(2)=i1*cos(theta1(50));y(2)=i1*sin(theta1(50));
x(3)=i4+i3*cos(theta3(50));y(3)=i3*sin(theta3(50));
x(4)=i4;y(4)=0;
x(5)=0;y(5)=0;
grid on;hold on;
plot(x,y)
plot(x(1),y(1),'o')
plot(x(2),y(2),'o')
plot(x(3),y(3),'o')
plot(x(4),y(4),'o')%描点,点的格式是小圆
title('铰链四杆机构')
xlabel('m');
xlabel('m');
axis([0 1 0 1]);
gtext('杆1');
gtext('杆2');
gtext('杆3');
gtext('杆4');
%4 铰链四杆机构运动仿真
figure(2)
%创建电影动画的开始
m=moviein(20)%这个函数在2014版本之后已经无效了
j=0;
for n1=1:5:200
j=j+1;
clf;
x(1)=0;
y(1)=0;
x(2)=i1*cos(theta1(n1));
y(2)=i1*sin(theta1(n1));
x(3)=i4+i3*cos(theta3(n1));
y(3)=i3*sin(theta3(n1));
x(4)=i4;
y(4)=0;
x(5)=0;
y(5)=0;
plot(x,y);
grid on;
hold on;
plot(x(1),y(1),'o');
plot(x(2),y(2),'o');
plot(x(3),y(3),'o');
plot(x(4),y(4),'o');
axis([-1 1 -1 1]);%axis([xmin xmax ymin ymax]) [ ]中分别给出x轴和y轴的最大值、最小值
title('铰链四杆机构');
xlabel('m');ylabel('m');
%以上都是用来生成图形的,画n1=X时的图形
m(j)=getframe;
%{该函数格式有:
% (1)F=gefframe,从当前图形框中得到动画帧
% (2)F=gefframe(h),从图形句柄h中得到动画帧
% (3)F=getframe(h,rect),从图形句柄h的指定区域rec中得到动画帧
end
movie(m,2);
% 该函数的主要格式有:
% (1)movie(M),将矩阵M中的动画帧播放一次
% (2)movie(M,n),将矩阵M中的动画帧播放n次
% (3)movie(M,n,fps),将矩阵M中的动画帧以每秒fps帧的速度播放n次
%movie2avi()
end
%创建动画电影的步骤:
%001——》调用moviein函数对内存进行初始化(该步骤在Matlab5.3以上均可省略),
% 创建一个足够大的矩阵,使之能够容纳基于当前坐标轴大小的一系列指定的图形(此处称为帧)。
%002——》%使用getframe调用getframe函数生成每个帧。该函数返回一个列矢量,利用这个矢量,
%就可以创建一个电影动画矩阵.
%003——》调用movie函数按照指定的速度和次数运行该电影动画。
%004——》调用movie2avi函数可以将矩阵中的一系列动画帧转换成视频文件avi文件。
% 这样,即使脱离了matlab环境都可以播放动画。
function[theta,omega,alpha]=crank_cocker(theta1,omega1,~,i1,i2,i3,i4)
%1.计算从动件角位移
L=sqrt(i4*i4+i1*i1-2*i1*i4*cos(theta1));
phi=asin((i1./L)*sin(theta1));
beta=acos((L*L+i3*i3-i2*i2)/(2*i3*L));
if beta<0
beta=beta+pi;
end
theta3=pi-phi-beta;%theta3是杆3转过的角度
theta2=asin((i3*sin(theta3)-i1*sin(theta1))/i2);%theta2是杆2转过的角度
theta=[theta2;theta3];
%2.计算从动件的角速度
A=[-i2*sin(theta2),i3*sin(theta3);
i2*cos(theta2),-i3*cos(theta3)];%机构从动件位置参数矩阵
B=[i1*sin(theta1);-i1*cos(theta1)]; %原动件位置参数矩阵
omega=A\(omega1*B);
omega2=omega(1);omega3=omega(2);
%3.计算从动件的角加速度
A=[-i2*sin(theta2),i3*sin(theta3);
i2*cos(theta2),-i3*cos(theta3)];
At=[-omega2*i2*cos(theta2),omega3*i3*cos(theta3);
-omega2*i2*sin(theta2),omega3*i3*sin(theta3)];
B=[i1*sin(theta1);
-i1*cos(theta1)];
Bt=[omega1*i1*cos(theta1);
omega1*i1*sin(theta1)];
alpha=[A\(-At*omega+omega1*Bt)];
end
4.分析结果
【MATLAB习题】双摇杆机构的运动学分析的更多相关文章
- matlab中运用项目思维分析问题并解决问题
我们将沿着以下几步思考:1.State the problem关于这个例子陈述问题很简单.我们想写一个判定二元一次方程的程序:是否有两个实根,重复实根,或者两个复数根2.Define the inpu ...
- 层次分析法、模糊综合评测法实例分析(涵盖各个过程讲解、原创实例示范、MATLAB源码公布)
目录 一.先定个小目标 二.层次分析法部分 2.1 思路总括 2.2 构造两两比较矩阵 2.3 权重计算方法 2.3.1 算术平均法求权重 2.3.2 几何平均法求权重 2.3.3 特征值法求权重 2 ...
- 并联机构逆运动学用MapleSim符号来解决
在多体机械中,平台的运动学分析(运动学问题)可以分为两类:正向运动学问题和逆向运动学问题.所谓正向运动学是指研究机构中一点(例如,机械手臂上终端操作机构或由并联机械操纵器支持的平台的中心)在空间中的位 ...
- 《量化投资:以MATLAB为工具》连载(2)基础篇-N分钟学会MATLAB(中)
http://www.matlabsky.com/thread-43937-1-1.html <量化投资:以MATLAB为工具>连载(3)基础篇-N分钟学会MATLAB(下) ...
- 《量化投资:以MATLAB为工具》连载(1)基础篇-N分钟学会MATLAB(上)
http://blog.sina.com.cn/s/blog_4cf8aad30102uylf.html <量化投资:以MATLAB为工具>连载(1)基础篇-N分钟学会MATLAB(上) ...
- 【分享】Matlab R2015a 发布啦!
本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html Matlab和C#混合编程文章目录:http://www.cnblogs.com ...
- 以神经网络使用为例的Matlab和Android混合编程
由于需要在一个Android项目中使用神经网络,而经过测试发现几个Github上开源项目的训练效果就是不如Matlab的工具箱好,所以就想在Android上使用Matlab神经网络代码(可是...) ...
- Matlab的libsvm的安装
最关键的是compilers的选择(对于把Microsoft visual stdio 2005或者其他的编译器安装在自定义目录下的这一步非常关键) 以下是步骤:>> mex -setu ...
- 数据分析系统DIY3/3:本地64位WIN7+matlab 2012b訪问VMware CentOS7+MariaDB
数据分析系统DIY中要完毕的三个任务. 一.用VMware装64位CentOS.数据库服务端用CentOS自带的就好. 二.数据採集与预处理用Dev-C++编程解决. 三.用本地Win7 64上的MA ...
- 四轴飞行器1.4 姿态解算和Matlab实时姿态显示
原创文章,欢迎转载,转载请注明出处 MPU6050数据读取出来后,经过一个星期的努力,姿态解算和在matlab上的实时显示姿态终于完成了. 1:完成matlab的串口,并且实时通过波形显示数据 2:添 ...
随机推荐
- 关于Qt选择qml还是widget的深度思考
在Qt界始终有两大阵营产生激烈的纷争,那就是选用qml还是widget好,大量初学者也会问这个问题,有以下几点总结. widget属于传统界面开发,和VB/VC/Delphi等拖曳控件开发类似,走CP ...
- Qt开源作品9-扁平化样式flatui
一.前言 对于现在做前端开发人员来说,FlatUI肯定不陌生,最近几年扁平化的设计越来越流行,大概由于现在PC端和移动端的设备的分辨率越来越高,扁平化反而看起来更让人愉悦,而通过渐变色产生的质感色彩反 ...
- 阿里云maven仓库地址的配置
两种配置方式: 1. maven 配置文件配置settings.xml中设置mirror节点 <mirror> <id>nexus-aliyun</id> < ...
- .Net程序员机会来了,微软官方新推出一个面向Windows开发者本地运行AI模型的开源工具
想要开发AI产品的.Net程序员机会来了,这个项目应该好好研究. 虽然说大模型基本都有提供网络API,但肯定没有直接使用本地模型速度快. 最近微软官方新推出AI Dev Gallery开源项目,可以帮 ...
- 零基础Windows Server搭建部署Word Press 博客系列教程(1):从萌新到菜鸡之云主机配置与备案
不知道这个教程能帮助到多少想要长期建站的新手朋友. 下面进入正题.如果你想搭建一个基于wordpress的个人博客或者网站,但是不懂Linux,也没有命令行的操作经验,更不懂复杂的代码,那么找这篇文章 ...
- 前端学习openLayers配合vue3(圆形形状的绘制)
上节课我们学了加载了矢量图片,这节我们来学绘制圆形 关键代码,第一段呢是设置圆点的操作,第二步是点击地图获取地图位置来设置圆点,ol还有很多类,各种形状的 //设置圆点 // let anchorLa ...
- Solution -「ZJOI 2015」「洛谷 P3343」地震后的幻想乡
\(\mathscr{Description}\) Link. 给定连通图简单无向 \(G=(V,E)\),对于 \(e\in E\),有边权 \(t_e\) 独立均匀随机生成自 \([0,1 ...
- x86平台SIMD编程入门(3):浮点指令
1.算术指令 算术类型 函数示例 备注 加 _mm_add_sd._mm256_add_ps 减 _mm_sub_sd._mm256_sub_ps 乘 _mm_mul_sd._mm256_mul_ps ...
- 【java提高】---细则(1)
异常 一.异常与错误的区别 再讲异常之前我们就应该要知道异常和错误的区别 Error类和Exception类的父类都是throwable类,他们的区别是: Error类一般是指与虚拟机相关的问题,如系 ...
- Nityacke's 分块(未补全)
P2801 教主的魔法 区间加区间查询一个数排名. 对于每个块,维护其有序序列.修改时散块暴力重构,整块打tag. 查询是简单的.时间复杂度 \(O(n\log B+\dfrac{qn}{B}\log ...