使用MATLAB完成一个双轮差速驱动的移动机器人“走8字”的仿真,,并生成视频

(一)任务目标
     完成一个双轮差速驱动的移动机器人“走8字”的仿真。
(二)问题描述
   1. 描述机器人运动的微分方程
     差速驱动轮式移动机器人的位置坐标和朝向角用 xi,yi,θi 表示,如图1所示。移动机器人的线速率为 vi,转向角速率为wi 。

         图1. 差速驱动移动机器人位姿表示

   根据刚体运动学的原理,可得到以下微分方程,简化描述机器人的运动行为。

    ( 式一)

   2. “8”字轨迹的方程
     期望机器人的运动轨迹为 xd(t)、yd(t) ,具体方程为:

       ( 式二)

  3. 工作任务
  (1)推导出合适的 vi(t)和 wi(t),即线速率和角速率随时间变化的函数,使得 xi(t)=xd(t), yi(t)=yd(t)。
  (2)根据上一步推导的 vi(t) 和 wi(t),编写MATLAB程序,数值求解式1中的微分方程,并绘制移动机器人走过的路径(看是否是“8”字)、朝向角随时间变化的曲线。
  (3)实现机器人运动过程的可视化,用“圆”代表机器人本体,用“箭头”代表机器人的运动方向。编写matlab程序,实现以下a和b两项功能,建议将画圆和箭头的程序封装成函数(输入一个坐标和朝向角,画出对应的圆和箭头)。
  .   a. 在“8”字曲线上选择若干位置,将机器人形状和运动方向绘制下来(选择的位置不要太多,画出的图案容易重叠)
    b. 将机器人运动过程录制成视频文件。(一种思路,等时间间隔选择数据,画一幅一幅figure,再用指令将其连成视频,注意设置帧速率)

步骤及思路(附程序代码):
     (由于第一次在CSDN发文章,排版尚不熟练,以下部分以图片形式展示,图片内容我会放在附件里)

























以上代码便可以生成matlab的仿真视频,以上步骤我会放在附件中的Word文档中

以下是运用matlab仿真的代码:

out=VideoWriter('robot3.avi');
out.FrameRate=25;
open(out);
syms t;
X=10*sin(t/10);
Y=10*sin(t/20);
X2=10*sin((t+0.1)/10);
Y2=10*sin((t+0.1)/20);
Q=atan((Y2-Y)/(X2-X));
w=diff(Q,1);
t0=[0:0.04:150];
f0=[0.4637,0,0];
[t,x]=ode45('car',t0,f0);
plot(x(:,2),x(:,03),'b')
axis([-13 13 -13 13]);
axis manual
title('机器人运动轨迹平面图');xlabel('x轴运动分量');ylabel('y轴运动分量');
hold on
for s=1:3750figure(s)plot(x(:,2),x(:,3),'b')axis([-13 13 -13 13]);axis manualtitle('机器人运动轨迹平面图');xlabel('x轴运动分量');ylabel('y轴运动分量');hold onr_x=x(s,2);r_y=x(s,3);r_Q=x(s,1);robot(r_x,r_y,0.5,r_Q)F=getframe(gcf);writeVideo(out,F);close all   %注意此语句不可省略,我第一次没有写导致画出来的figure一直在后台,我的电脑是32G内存,画到1400张左右的时候,内存占用98%,程序被系统杀死了,此语句可以在画下一幅之前把之前画的关掉,释放内存
end
close(out);

以下函数用于构造简易图形组合并将其画出
(x,y,r为圆的圆心坐标及半径,Q为当前机器人的运动方向与x轴夹角)

function [] = robot(x,y,r,Q)
%.该函数用于构造简易图形组合并将其画出
%x,y,r为圆的圆心坐标及半径,Q为当前机器人的运动方向与x轴夹角
rectangle('Position',[x-r,y-r,2*r,2*r],'Curvature',[1,1],'LineWidth',5),axis equal
hold on
x2=x+1.2*cos(Q);
y2=y+1.2*sin(Q);
Q2=Q-0.46364761;
Q3=Q+0.46364761;
x3=x+0.894427*cos(Q2);
y3=y+0.894427*sin(Q2);
x4=x+0.894427*cos(Q3);
y4=y+0.894427*sin(Q3);
plot([x,x2],[y,y2],'r','LineWidth',5)
plot([x2,x3],[y2,y3],'r','LineWidth',3)
plot([x2,x4],[y2,y4],'r','LineWidth',3)
end

以下是ode45求解时用到的函数

function r=car(t,x)
r=zeros(3,1);
r(1)=((cos(t/20)/2 - cos(t/20 + 1/200)/2)/(10*sin(t/10) - 10*sin(t/10 + 1/100)) - ((10*sin(t/20) - 10*sin(t/20 + 1/200))*(cos(t/10) - cos(t/10 + 1/100)))/(10*sin(t/10) - 10*sin(t/10 + 1/100))^2)/((10*sin(t/20) - 10*sin(t/20 + 1/200))^2/(10*sin(t/10) - 10*sin(t/10 + 1/100))^2 + 1);
r(2)=((cos(t/10)^2 + cos(t/20)^2/4)^(1/2))*cos(x(1));
r(3)=((cos(t/10)^2 + cos(t/20)^2/4)^(1/2))*sin(x(1));
end

以上代码的matlab文件我也放在了附件中 ,欢迎大家积极交流

使用MATLAB完成一个双轮差速驱动的移动机器人“走8字”的仿真,并生成视频相关推荐

  1. 两轮差速驱动机器人轮间距校准方法

    关注同名微信公众号"混沌无形",有趣好文! 原文链接: 差速驱动机器人轮间距校准(包含原文PDF百度云下载链接) 如图 3.2所示,两轮差速驱动机器人是采用自旋(旋转)的方式来校准 ...

  2. car-like robot与两轮差速驱动机器人异同分析

    关注同名微信公众号"混沌无形",有趣好文! 原文链接:https://mp.weixin.qq.com/s/hCAzGJDSZFsFHoC5hTVsjA(包含原文PDF百度云下载链 ...

  3. 小型双轮差速底盘三灰度循迹功能的实现

    1. 功能说明 在小型双轮差速底盘样机前方安装3个 灰度传感器 ,实现机器人沿下图所指定的跑道路线进行运动的效果. 2. 使用样机 本实验使用的样机为R023样机. 3. 功能实现 3.1 电子硬件 ...

  4. 一种开环控制的两轮差速驱动小车的设计

    内容摘要:为了让电磁屏蔽效能自动测试装置能够在屏蔽室中按照已给定的路径运动,设计了一种开环控制的两轮差速驱动小车,对其运动学进行了分析,并采用双圆弧拟合曲线方法使小车实现按照给定曲线行走.通过大量运动 ...

  5. 四轮驱动移动机器人(SSMR)与两轮差速驱动机器人、car-like robot的对比分析

    关注同名微信公众号"混沌无形",有趣好文! 原文链接:https://mp.weixin.qq.com/s/Fzrpn5_3TB6apqG2Ds1v5Q(包含原文PDF百度云下载链 ...

  6. 两轮差速驱动机器人运动模型及应用分析

    关注同名微信公众号"混沌无形",有趣好文! 原文链接:https://mp.weixin.qq.com/s/Mj5iLR_4TKeJiaOVqJf6Vg 原文摘要:本文从分析两轮差 ...

  7. 小型双轮差速底盘实现触须避障

    1. 功能说明 在R023d机器人车体上安装2个 触须传感器 ,实现机器人小车避障功能. 2. 电子硬件 在这个示例中,我们采用了以下硬件,请大家参考: 主控板 Basra主控板(兼容Arduino ...

  8. 小型双轮差速底盘实现红外避障功能

    1. 功能说明 在R023e机器人车体上安装1个近红外传感器,实现机器人小车避障功能. 2. 电子硬件 在这个示例中,我们采用了以下硬件,请大家参考: 主控板 Basra主控板(兼容Arduino U ...

  9. 四种两轮差速驱动机器人底盘特性分析

    关注同名微信公众号"混沌无形",有趣好文! 原文链接:https://mp.weixin.qq.com/s/Mj5iLR_4TKeJiaOVqJf6Vg(包含原文PDF百度云下载链 ...

最新文章

  1. 【CTF】实验吧 传统知识+古典密码
  2. android binder
  3. 201521123108《Java程序设计》第14周学习总结
  4. python多级字典嵌套_python – 如何拆分字符串并形成多级嵌套字典?
  5. 浅析Java各种变量线程安全问题
  6. 【Python】学习笔记总结3(Python文件操作)
  7. 空之轨迹手游服务器维护,《空之轨迹》手游06月15日更新公告
  8. JavaScript中的Math方法演示
  9. Title:eNSP 映射到外网
  10. python基础之函数当中的装饰器
  11. JQuery:JQuery遍历详解
  12. Flink所使用到maven依赖
  13. StringBuffer的解读(一)
  14. 企业级自动化运维工具Ansible详解(上)
  15. 跳马周游c++_C++——跳马问题(广搜)
  16. windows磁盘管理压缩卷只能压缩一部分的问题解决办法
  17. 瑞吉外卖项目学习笔记01
  18. 2008年七月七日,按照要求我提前进入中心,今天就是我博士的第一天
  19. linux信号:SIGINT、SIGKILL、SIGSTOP、SIGCONT
  20. 凝胶负载染料行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)

热门文章

  1. cortona3d介绍以及软件下载安装使用
  2. 通过MySQL5.7子查询的坑联想到的MySQL查询优化规律与注意点
  3. JavaScript正则对象
  4. C# 数学表达式计算
  5. python之组合数据
  6. 链路聚合Eth-Trunk技术
  7. c语言求摸球游戏,Play In The Dark——走近视觉障碍玩家的世界
  8. Redrain仿酷狗音乐播放器开发完毕,发布测试程序
  9. 最常有用的英语口语900句
  10. 360集团产品校招面经