变量讲解:

L1,凸轮中心到前轮中心的距离,注意此时前轮为直行状态

L2,前轮中心与小车中心的距离,注意,前轮中心若在小车中心左边,则为负,右为正

L3,前轮直行时,前轮中心到与凸轮接触时的距离

max_rou,凸轮最长半径,该距离不得大于你的凸轮中心到底板的距离,除非你的凸轮是放在外面的

注意guiji001是由UG用样条曲线画出,再导出txt文档,放到MATLAB相应的目录下

我的guiji001放到另一文章中

效果图:

主函数脚本

clc
clearXYR=textread('guiji001.txt');% 此轨迹为小车中心所走的轨迹,且注意,该轨迹为决定了凸轮轨迹,所以,并非为前轮轨迹决定凸轮,而为中心(接受信号)轨迹L1=60.23;%基圆半径
L2=26.71; %前轮偏置距离
L3=30;%车把长
L31=L3+2;% 车把长 加上凸轮厚度
L4=141.45;%车长
L5=155.40; %小车宽度%% 计算区rr=1.5; % 摆杆半径
X=XYR(:,2);%轨迹X坐标
Y=XYR(:,3);%轨迹Y坐标
%R=XYR(:,5);如果你有曲率半径的数据,你就把下文计算曲率半径的函数部分注释掉
% 如果你的曲率半径是UG计算出来的,记住给曲率半径分正负号,UG是不分正负的,如下文[length_guiji,~]=size(XYR);% 计算曲率半径
%
% for i=1:1546
%     R(i,1)=R(i,1);
% end
% for i =1547:2884
%     R(i,1)=-R(i,1);
% end
% for i=2884:4258
%     R(i,1)=R(i,1);
% end
% for i=4258:5911
%     R(i,1)=-R(i,1);
% end
% for i=5912:6712
%     R(i,1)=R(i,1);
% end
% for i=6712:7355
%     R(i,1)=-R(i,1);
% end
% for i=7355:7679
%     R(i,1)=R(i,1);
% end
% for i=7680:10000
%     R(i,1)=-R(i,1);
% end% a1=zeros(length_guiji,1);
% 由于曲率半径正负及偏置引起的角度变化,故a1=actan(L4/(R(i,1)+L2 ) );
% for i=1:length_guiji
%     if R(i,1)<0     % R<0
%         a1(i,1)=actan(L4/(R(i,1)+L2 ) );
%
%     else     % R>0
%         a1(i,1)=actan(L4/( R(i,1)+L2 ));
%     end
% end% 计算总长
sum=0;
for i=2:length_guijidt_sum=sqrt(  (X(i-1,1)-X(i,1))^2+(Y(i-1,1)-Y(i,1))^2 );sum=sum+dt_sum;
end% 此为确定轨迹曲率半径正负
% 计算曲率
%
rl=zeros(length_guiji,1);
for i=2:9999rl(i,1)=PJcurvature([X(i-1,1),X(i,1),X(i+1,1)]',[Y(i-1,1),Y(i,1),Y(i+1,1)]');
end
rl(1,1)=rl(2,1);
rl(length_guiji,1)=rl(length_guiji-1,1);
% 计算曲率半径
R=zeros(length_guiji,1);
for i=1:length_guijiR(i,1)=1./rl(i,1);
end
R=-R;a1=zeros(length_guiji,1);
for i=1:length_guijia1(i,1)=atan( L4/ ( R(i,1)+L2 ) );
%     a1(i,1)=rad2deg(a1(i,1));
end% 换算为角度
aa=rad2deg(a1);% 计算相应轨迹长度
s=zeros(length_guiji,1);
s(1,1)=0;%路程赋初值
for i=2:length_guijis(i,1)=s(i-1,1)+sqrt((X(i)-X(i-1))^2+(Y(i)-Y(i-1))^2)*(R(i,1)-L5/2)/R(i,1);%计算小车走到第i点时主动轮走过路程
end% 计算角度,并开一缺口
ct=zeros(length_guiji,1);
for j=1:length_guijict(j,1)=2*pi*s(j,1)./s(length_guiji,1);
%ct(j,1)=2*358/360pi*s(j,1)./s(length_guiji,1);这个是开缺口
end% 计算相应摆杆长度
E=zeros(length_guiji,1);
for i=1:length_guijiif R(i,1)>0E(i,1)=L3/cos( a1(i,1) );endif R(i,1)<0E(i,1)=L31/cos( a1(i,1) );end
end
max_E=max(E);%计算凸轮rourou=zeros(length_guiji,1);
rou1=zeros(length_guiji,1);
dt=zeros(length_guiji,1);
dt_shiji=zeros(length_guiji,1); % 由于摆杆本身厚度,故与理想dt有一定的偏差for i=1:length_guijidt(i,1)=E(i,1).*sin( a1(i,1) );rou1(i,1)=dt(i,1)+L1;  % e + dt1dt_shiji(i,1)=dt(i,1)-rr*cos( a1(i,1)  ) ;rou(i,1)=dt_shiji(i,1)+L1;  % e + dt1
endmax_rou=max(rou);
pianzhi=dt-dt_shiji;
baoluo=rou1-rou;%% 绘画区 hold on
figure(1)
hold on
% 绘画场地和轨迹
rectangle('position',[-200,-400,4000+450,4000+700]);
% plot(X,Y,'b-');
% x00=[2486.564608   10.234419
% 1646.290621  495.484539
% 786.268087  765.096283
% 204.531723  1398.947983
% 398.263000  2034.411210
%  530.526031  2548.572331
%  629.999056  2821.920827   ]; %这里是你的拐点数据,UG可计算得出
% scatter(x00(:,1),x00(:,2),[],"red");
% title('轨迹拐点图');
% hold off
figure(2)
hold on
title('轨迹打卡图');
x01=[3750,200;2700,100;1750,150;1250,950;400,600;300,1600;400,2050;550,2600;1000,3500;2100,3800;];
rectangle('position',[-200,-400,4000+450,4000+700]);
plot(X,Y,'b-');
scatter(x01(:,1),x01(:,2),[],"green");
hold off%绘画凸轮
figure(3)
subplot(1,2,1)
r00=zeros(length_guiji,1);
r00(:,1)=L1;
polarplot(ct(:,1),rou(:,1));hold on;
title('理想凸轮与实际凸轮对比图');
polarplot(ct,rou1);hold off;
subplot(1,2,2)
polarplot(ct(:,1),rou(:,1));hold on;
title('实际凸轮与基圆对比图');
polarplot(ct,r00,'--');hold off;hold off%%  导出for i=1:10000x(i)=rou(i)*cos(ct(i));y(i)=rou(i)*sin(ct(i));z(i)=0;
end
tulun1=[x;y;z];
writematrix(tulun1','tulun001.txt');

曲率函数  PJcurvature

function [kappa,norm_k] = PJcurvature(x,y)x = reshape(x,3,1);y = reshape(y,3,1);t_a = norm([x(2)-x(1),y(2)-y(1)]);t_b = norm([x(3)-x(2),y(3)-y(2)]);M =[[1, -t_a, t_a^2];[1, 0,    0    ];[1,  t_b, t_b^2]];a = M\x;b = M\y;kappa  = 2.*(a(3)*b(2)-b(3)*a(2)) / (a(2)^2.+b(2)^2.)^(1.5);norm_k =  [b(2),-a(2)]/sqrt(a(2)^2.+b(2)^2.);
end

蓝奏云链接,除guiji001.txt外,其余两txt改为.m,化为MATLAB脚本

https://wwgr.lanzouw.com/b04q42geh
密码:e8kw

凸轮设计代码——轨迹逆推凸轮相关推荐

  1. matlab设计凸轮轮廓代码_机械设计基础之什么是凸轮机构,分类和常用运动规律是怎么样的?...

    本文约2900字,主要讲了凸轮机构的应用和分类以及从动件常用运动规律.带你了解机械设计的基础知识.本文全干货,新手必备,可收藏学习,感谢你的阅读,祝你学有所成,生活愉快! 想了解平面连杆机构相关内容( ...

  2. 摆动凸轮matlab程序,滚子摆动从动件凸轮设计matlab程序.doc

    滚子摆动从动件凸轮设计matlab程序 disp ' ******** 滚子摆动从动件凸轮设计 ********' disp '已知条件:' disp ' 凸轮作顺时针方向转动,从动件做摆动' dis ...

  3. 摆动凸轮matlab程序,滚子摆动从动件凸轮设计matlab程序

    disp ' ******** 滚子摆动从动件凸轮设计 ********' disp '已知条件:' disp ' 凸轮作顺时针方向转动,从动件做摆动' disp ' 从动件在推程作等加速/等减速运动 ...

  4. 凸轮结构c语言编程,凸轮设计_c语言编程

    凸轮设计_c语言编程 (4页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 一.编程:(注:程序中各个符号的含义)PI:常数 s0:理论廓 ...

  5. 凸轮,凸轮设计,凸轮设计软件,凸轮设计代做

    更多文章欢迎点击此处,访问我的博客 凸轮,凸轮设计,凸轮设计软件,凸轮设计代做 功能界面 需要软件可以联系作者qq:2967615343 或者可以加群:391760293 软件是我自己写的,现在支持一 ...

  6. [剑指offer][JAVA]面试题第[46]题[把数字翻译成字符串][递归][逆推]

    [问题描述][中等] 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 "l", ...

  7. 【鲁棒控制】平面2R型机器人的鲁棒逆推跟踪控制(matlab实现)

    鲁棒跟踪逆推控制器设计 前言:对于模型准确的对象,我们可以设计控制器直接进行控制,但通常实际情况下总是存在着种种不确定因素,如参数变化,未建模动态变化等,鲁棒控制就是在模型不精确和其他变化因素的条件下 ...

  8. Roguelike+RPG如何给玩家刺激的游戏体验? 《我功夫特牛》系统逆推

    一.游戏介绍及游玩情况 <我功夫特牛>是一款武侠题材,火柴人画风的休闲游戏,玩法上笔者认为它是Roguelike+RPG组合型游戏,即单局死亡重置+角色养成游戏.其游戏内核,既有战斗和探索 ...

  9. 全排列及相关扩展算法(四)——原始中介数通过逆推求原排列算法

    1.中介数逆推原排列:上一章我们讲到了中介数,通过一个排列可以很方便地求数它的中介数,通过中介数也可以很方便地求出排位序号.但是通过中介数逆推原排列就不是那么容易了.因为我们每求一位数,都需要对比其前 ...

最新文章

  1. 说一下你对多态的理解?_掌握了多态的特性,写英雄联盟的代码更少啦!
  2. Cassandra——类似levelDB的基于p2p架构的分布式NOSQL数据库
  3. ECharts的简单使用过程
  4. Docker(三):Dockerfile 命令详解
  5. 透视映射和射影映射的关系 Perspective and Projectivity
  6. Doc2Vec,Word2Vec文本相似度 初体验。
  7. 服务器的系统如何入账,云服务器费用如何入账
  8. Linux给Java程序设置端口_扫描服务端口的Java程序
  9. 个人房贷为啥又贵又难贷 一个房贷银行有3套逻辑
  10. python 中的 __name__
  11. 从零开始创建react项目的三种方法(转)
  12. 参考文献起止页码怎么写_参考文献起止页码格式
  13. iOS APP安全杂谈
  14. 软件测试微信钱包,面试官:请你说说微信发红包,有哪些测试点
  15. Chrom浏览器升级后检查元素时无法以html方式进行编辑
  16. 问题解决丨对不起,小米路由器出现网络连接问题无法打开网页
  17. 不能理解命令行选项 “n”_如何理解命令行
  18. 计算机应用技术题,计算机应用技术复习题.doc
  19. 小坤二次元炫酷导航HTML源码
  20. leetcode/求平方根

热门文章

  1. Guitar Pro新手教程
  2. 小程序知识点分享(一)
  3. W7级别的服务器系统,秘籍!从Win7旗舰版菜鸟升级到高手必看
  4. metasploit制作木马程序
  5. 超简单版模拟实现银行中用户存取款业务
  6. oracle awr top5,ORACLE AWR简介
  7. uboot 配制编译初体验
  8. 各位看下我们的绩效考核有什么意见
  9. python爬虫ip proxy_python爬虫ip代理服务器的简要思路
  10. 创作星-创意大爆发!AI文案生成器让创作轻松快捷,轻松撰写出热门标题。