【MATLAB习题】牛头刨床机构的运动学分析
1. 数学模型
已知牛头刨床主运动机构各构件的尺寸为: \(l1=125mm,l3=600mm,l4=150mm,l6=275mm,l'6=575mm\),原动件1以匀角速度ω1=1rad/s逆时针转动,计算该机构中各从动件的角位移、角速度和角加速度以及刨头5上E点的位置、速度和加速度,并绘制出运动线图





2. matlab代码
function main
% 输入已知数据
clear;
i1=0.125;
i3=0.6;
i4=0.15;
i6=0.275;
i61=0.575;
omega1=1;
alpha1=0;
hd=pi/180;
du=180/pi;
%调用子函数,six_bar返回牛头刨床的位移,角速度,角加速度
for n1 = 1:459
theta1(n1)=-2*pi+5.8119+(n1-1)*hd;
ii=[i1,i3,i4,i6,i61];
[theta,omega,alpha]=six_bar(theta1(n1),omega1,ii);
s3(n1)=theta(1);
theta3(n1)=theta(2);
theta4(n1)=theta(3);
sE(n1)=theta(4);
v2(n1)=omega(1);
omega3(n1)=omega(2);
omega4(n1)=omega(3);
vE(n1)=omega(4);
a2(n1)=alpha(1);
alpha3(n1)=alpha(2);
alpha4(n1)=alpha(3);
aE(n1)=alpha(4);
end
%3.位移,角速度,角加速度和牛头刨床图形输出
figure(1);
n1=1:459;
t=(n1-1)*2*pi/360;
subplot(2,2,1);%绘角位移及位移线图
plot(t,theta3*du,'r-.'); %'r-.'表示线条是红色的,并且线型是点画线
grid on;
hold on;
title('角位移及位移线图')
axis auto;
[haxes,~,~]=plotyy(t,theta4*du,t,sE); %
grid on;
hold on;
xlabel('时间/s');
axes(haxes(1));%haxes(1)表示左边的坐标轴的句柄,这行代码表示下面的代码是在左边的坐标轴上作图,修改
ylabel('角位移/\circ');
axes(haxes(2));
ylabel('位移/m');
hold on;
grid on;
text(1.15,-0.65,'\theta_3');
text(3.4,0.27,'\theta_4');
text(2.25,-0.15,'\s_E');
subplot(2,2,2); %绘角速度及速度线图
plot(t,omega3,'r-.'); %'r-.'表示线条是红色的,并且线型是点画线
grid on;
hold on;
title('角速度及速度线图')
axis auto;
[haxes,~,~]=plotyy(t,omega4,t,vE); %
grid on;
hold on;
xlabel('时间/s');
axes(haxes(1));%haxes(1)表示左边的坐标轴的句柄,这行代码表示下面的代码是在左边的坐标轴上作图,修改
ylabel('角速度/rad\cdots∧{-1}');
axes(haxes(2));
ylabel('速度/m\cdots∧{-1}');
hold on;
grid on;
text(3.1,0.35,'\omega_3');
text(2.1,0.1,'\omega_4');
text(5.5,0.45,'\v_E');
subplot(2,2,3); %绘角加速度及加速度线图
plot(t,alpha3,'r-.'); %'r-.'表示线条是红色的,并且线型是点画线
grid on;
hold on;
title('角加速度及加速度线图')
axis auto;
[haxes,~,~]=plotyy(t,alpha4,t,aE); %
grid on;
hold on;
xlabel('时间/s');
axes(haxes(1));%haxes(1)表示左边的坐标轴的句柄,这行代码表示下面的代码是在左边的坐标轴上作图,修改
ylabel('角加速度/rad\cdots∧{-2}');
axes(haxes(2));
ylabel('加速度/m\cdots∧{-2}');
hold on;
grid on;
text(1.5,0.3,'\alpha_3');
text(3.5,0.51,'\alpha_4');
text(1.5,-0.11,'\a_E');
subplot(2,2,4); %牛头刨床机构
n1=20;
x(1)=0;y(1)=0;
x(2)=(s3(n1)*1000-50)*cos(theta3(n1));
y(2)=(s3(n1)*1000-50)*sin(theta3(n1));
x(3)=0;y(3)=i6*1000;
x(4)=i1*1000*cos(theta1(n1));
y(4)=s3(n1)*1000*sin(theta3(n1));
x(5)=(s3(n1)*1000+50)*cos(theta3(n1));
y(5)=(s3(n1)*1000+50)*sin(theta3(n1));
x(6)=i3*1000*cos(theta3(n1));
y(6)=i3*1000*sin(theta3(n1));
x(7)=i3*1000*cos(theta3(n1))+i4*1000*cos(theta4(n1));
y(7)=i3*1000*sin(theta3(n1))+i4*1000*sin(theta4(n1));
x(8)=i3*1000*cos(theta3(n1))+i4*1000*cos(theta4(n1))-900;
y(8)=i61*1000;
x(9)=i3*1000*cos(theta3(n1))+i4*1000*cos(theta4(n1))+600;
y(9)=i61*1000;
x(10)=(s3(n1)*1000-50)*cos(theta3(n1));
y(10)=(s3(n1)*1000-50)*sin(theta3(n1));
x(11)=x(10)+25*cos(pi/2-theta3(n1));
y(11)=y(10)-25*sin(pi/2-theta3(n1));
x(12)=x(11)+100*cos(theta3(n1));
y(12)=y(11)+100*sin(theta3(n1));
x(13)=x(12)-50*cos(pi/2-theta3(n1));
y(13)=y(12)+50*sin(pi/2-theta3(n1));
x(14)=x(10)-25*cos(pi/2-theta3(n1));
y(14)=y(10)+25*sin(pi/2-theta3(n1));
x(15)=x(10);
y(15)=y(10);
x(16)=0;
y(16)=0;
x(17)=0;
y(17)=i6*1000;
k=1:2;
plot(x(k),y(k));
hold on;
k=3:4;
plot(x(k),y(k));
hold on;
k=5:9;
plot(x(k),y(k));
hold on;
k=10:15;
plot(x(k),y(k));
hold on;
k=16:17;
plot(x(k),y(k));
hold on;
grid on;
axis ([-500 600 0 650]);
title('牛头刨床');
grid on;
xlabel('mm');
ylabel('mm');
plot(x(1),y(1),'o');
plot(x(3),y(3),'o');
plot(x(4),y(4),'o');
plot(x(6),y(6),'o');
plot(x(7),y(7),'o');
hold on;
grid on;
xlabel('mm');
ylabel('mm');
axis([-400 600 0 650]);
end
function [theta, omega, alpha]=six_bar(theta1,omega1,ii)
i1=ii(1);
i3=ii(2);
i4=ii(3);
i6=ii(4);
i61=ii(5);
%1.计算角位移和线位移
s3 =sqrt((i1*cos(theta1))*(i1*cos(theta1))+(i6+i1*sin(theta1))*(i6+i1*sin(theta1)));
%s3表示滑块2相对于CD杆的位移
theta3 =acos((i1*cos(theta1 ))/s3 );
%theta3表示杆3转过角度
theta4 =pi-asin((i61-i3*sin(theta3 ))/i4);
%theta4表示杆4转过角度
sE =i3*cos(theta3 )+i4*cos(theta4 );
%sE表示杆5的位移
theta(1)=s3;
theta(2)=theta3;
theta(3)=theta4;
theta(4)=sE;
%2.计算角速度和线速度
A=[sin(theta3 ),s3 *cos(theta3 ),0,0;
-cos(theta3 ),s3 *sin(theta3 ),0,0;
0,i3*sin(theta3 ),i4*sin(theta4 ),1;
0,i3*cos(theta3 ),i4*cos(theta4 ),0];
B=[i1*cos(theta1 );i1*sin(theta1 );0;0];
omega=A\(omega1*B);
v2 =omega(1);
%滑块2的速度
omega3 =omega(2);
%构件3的角速度
omega4 =omega(3);
%构件4的角速度
vE =omega(4);
%构件5的速度
%3.计算角加速度和加速度
A=[sin(theta3 ),s3 *cos(theta3 ),0,0;
%从动件位置参数矩阵
cos(theta3 ),-s3 *sin(theta3 ),0,0;
0,i3*sin(theta3 ),i4*sin(theta4 ),1;
0,i3*cos(theta3 ),i4*cos(theta4 ),0];
At=[omega3 *cos(theta3 ),(v2 *cos(theta3 )-s3*omega3 *sin(theta3 )),0,0;
-omega3 *sin(theta3 ),(-v2 *sin(theta3 )-s3 *omega3 *cos(theta3 )),0,0;
0,i3*omega3 *cos(theta3 ),i4*omega4 *cos(theta4 ),0;
0,-i3*omega3 *sin(theta3 ),-i4*omega4 *sin(theta4 ),0];
Bt=[-i1*omega1*sin(theta1 );-i1*omega1*cos(theta1 );0;0];
alpha=A\(-At*omega+omega1*Bt);
%机构从动件的加速度列阵
a2 =alpha(1);
%a2表示滑块2的加速度
alpha3 =alpha(2);
%alpha3表示杆3的角加速度
alpha4 =alpha(3);
%alpha4表示杆4的角加速度
aE =alpha(4);
%构件5的加速度
end
3. 运行结果

【MATLAB习题】牛头刨床机构的运动学分析的更多相关文章
- MATLAB PCHIP函数一阶求导分析
MATLAB PCHIP函数一阶求导分析 摘要:本文首先根据三次立方插值的一般表达式,得出分段三次立方插值时,每个小区间上的各次项系数.分析发现,三次项.二次项.一次项系数都与小区间端点处的一阶导数值 ...
- Matlab imshow, image, imagesc 三者详细分析
1.显示RGB图像 相同点:这三个函数都是把m*n*3的矩阵中的数值当做RGB值来显示的. 区别:imshow将图像以原始尺寸显示,image和imagesc则会对图像进行适当的缩放(显示出来的尺寸大 ...
- MATLAB灰色关联度分析
目录 1.释名 2.举例 3.操作步骤与原理详解 4.总结 5.附录:MATLAB代码 @ 1.释名 灰色关联度分析(Grey Relation Analysis,GRA),是一种多因素统计分析的方法 ...
- orocos_kdl学习(二):KDL Tree与机器人运动学
KDL(Kinematics and Dynamics Library)中定义了一个树来代表机器人的运动学和动力学参数,ROS中的kdl_parser提供了工具能将机器人描述文件URDF转换为KDL ...
- 并联机构逆运动学用MapleSim符号来解决
在多体机械中,平台的运动学分析(运动学问题)可以分为两类:正向运动学问题和逆向运动学问题.所谓正向运动学是指研究机构中一点(例如,机械手臂上终端操作机构或由并联机械操纵器支持的平台的中心)在空间中的位 ...
- [matlab] MATLAB 界面编程 傻瓜教程
>_<:在 MATLAB 的命令窗口(Command Window)中运行 guide 命令,来打开 GUIDE 界面,如下: >_<:然后,选择空模板(Blang GUI), ...
- 【分享】Matlab R2015a 发布啦!
本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html Matlab和C#混合编程文章目录:http://www.cnblogs.com ...
- [转载]高效使用matlab之四:一个加速matlab程序的例子
原文地址:http://www.bfcat.com/index.php/2012/11/speed-up-app/ 这篇文章原文是matlab网站上的,我把它翻译过来同时自己也学习一下.原文见这里 这 ...
- im2uint8函数分析
环境:Win7 64位 + Matlab R2010a 本次分析的函数为im2uint8,这个函数在图像处理中要用到,主要把图像数据类转换到uint8 uint8函数有效的输入的图像数据类为:logi ...
- R语言︱情感分析—词典型代码实践(最基础)(一)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:词典型情感分析对词典要求极高,词典中 ...
随机推荐
- 如何使用Jet家软件进行学习(intellij、idea、IDEA、Pycharm……)
如何使用Jet家软件进行学习 本文档提供方法只用于学习研究,不得用于其他用途 以下,萌狼蓝天将会提供两种方式 目录 如何使用Jet家软件进行学习 第一种方式:使用EAP版本 第二种方式:使用插件 (1 ...
- IDEA批量实现CRLF转换成LF问题
需要注意idea项目中右下角:选择LF,否则到时候部署到生产环境上会报错'\r\n'问题,之前的解决方案是 dos2unix 然后很多文件报这个问题,索性进行批量转换,但是很快拉去的新项目又会出现同样 ...
- 如何调整Linux系统为正确时区
如果你的 Linux 系统时区配置不正确,必需要手动调整到正确的当地时区.NTP 对时间的同步处理只计算当地时间与 UTC 时间的偏移量,因此配置一个 NTP 对时间进行同步并不能解决时区不正确的问题 ...
- python安装pip出现No package python-pip available
安装pip: 使用yum进行安装 yum install python-pip 1 若出现 No package python-pip available. 则解决方法如下: yum -y ins ...
- Qt音视频开发06-海康sdk内核linux客户端
一.前言 海康sdk的示例在官方是提供了的,但是无论UI还是交互简直是宇宙无敌的垃圾,猜测应该是初学者编写的,估计练手用的,所以老早就想把这个linux支持集成到自己的示例中,既然已经支持了windo ...
- [转]BeanUtils.copyProperties使用总结以及注意事项
1.前言开发过程中,讲一个对象的属性和值赋值到另一个对象上,大量使用了get.set方法,看着很臃肿,思考下肯定不只有我有这种想法,所以技术上肯定有方法能解决这个问题,所以查阅了一些资料发现了Bean ...
- [LC1302] 层数最深叶子节点的和
题目概述 给你一棵二叉树的根节点 root ,请你返回 层数最深的叶子节点的和 . 基本思路 这是一个简单的树的遍历的问题,可以用bfs或者dfs来解题.这里采用dfs来解,在遍历的过程中,只需要用全 ...
- .NET8.0多线程编码结合异步编码示例
1.创建一个.NET8.0控制台项目来演示多线程的应用 2.快速创建一个线程 3.多次运行程序,可以得到输出结果 这就是多线程的特点 - 当多个线程并行执行时,它们的具体执行顺序是不确定的,除非我们使 ...
- Pebbles pg walkthrough Easy
NMAP ┌──(root㉿kali)-[/home/ftpuserr] └─# nmap -p- -A -sS 192.168.239.52 Starting Nmap 7.95 ( https:/ ...
- 一文读懂ROS开发,解锁RK3562J + Ubuntu工业平台应用
在工业智能化浪潮中,智能机器人设备是成为工业自动化体系的璀璨之星,而其核心 --ROS系统,更是机器人领域的集大成者.今天,和大家分享一个ROS开发案例,基于RK3562J + Ubuntu工业平台. ...