解析如何将MATLABSimulink应用于一整套机器人设计开发流程
MATLAB/Simulink:万物皆可仿真
MATLAB是由美国MathWorks公司出品的一款商业数学软件。 它是一个多功能的科学计算平台,将算法开发、数据分析、矩阵计算等诸多强大功能集成在一个易于操作的视窗环境中。MATLAB下的Simulink更是被认为可以“仿真任何系统”。正是由于MATLAB/Simulink的强大功能,它在机器人领域得到了广泛的运用。
机器人系统主要由机械结构、传感器、嵌入式硬件、自动控制、决策执行算法这五个部分组成,MATLAB对这几大部分的开发研究都提供了很好的支持。
对于机器人算法研究人员(尤其是高校的硕士博士),首选工具必然是MATLAB,因为它简便快捷,封装性好,更重要的是全世界几乎所有的算法大牛、精英教授都会首先公布对应的MATLAB源码,然后在逐步改写成其他语言进行实际应用。
相对于其他仿真环境,MATLAB在机器人的开发研究中有着极大的优势:
硬件多样化: 预设Arduino和树莓派的硬件包,支持微控制器、PLC、FPGA、GPU等多种设备。不仅仅可以仿真,更可以对硬件进行直接的控制。
Simulink直接仿真控制Arduino和树莓派
编程环境多样化: 支持C/C++,可以直接连接到ROS系统。
直接连接ROS系统
可以自动生成代码: MATLAB Coder和Simulink Coder可以根据你建立的模型自动生成控制代码,大大减轻工作量,开发神器有木有?
工具箱:关于机器人设计开发,你想要的,这里都有
MATLAB/Simulink最强大的功能在于其针对各种特殊需求定制的工具箱,接下来我将按照机器人的开发流程为大家逐一介绍。
1、 机器人机械结构设计
Simscape可以用来设计和分析三维刚体机械结构(譬如汽车平台、机械臂等等)。除此之外,它还可以使用电气、液压或气动以及其他组件进行多域系统建模。
Simscape
你可以直接在模型库(命令行输入sm_lib)里选择自己想要添加的块,模型库提供了常见的机械结构如简单的几何体、转动副、齿轮、带轮…当然对于复杂的零部件,你也可以先在SolidWorks里面建立好模型然后导入。
Simscape三维模型库
如下图所示,我们用仿真实现控制机械将物体从一个传送到搬运到另一个上面。
机械臂仿真
2、 机器人传感器融合
机器人用传感器感知外部物理环境,常见的传感器有红外、超声、惯性姿态传感IMU、激光雷达、摄像头等等。
RoboticsSystem Toolbox可以让你通过ROS直接连接到传感器并且对传回来的信息进行校准、降噪等操作。
通过ROS连接到传感器
同时,针对机器视觉,MathWorks开发了单独的工具箱Computer Vision Toolbox。它支持单目、立体、鱼眼等相机的校准,提供了对象的检测跟踪,特征提取和匹配等算法,同时可以根据数据进行三维重建和3D点云处理。
配准和拼接一系列点云
3、嵌入式
Simulink提供了一系列的嵌入式硬件支持,你可以在Add-Ons的最后一行添加所需要仿真或者控制的硬件。
添加硬件支持
点开后下载相应的插件即可使用,这些插件不仅可以仿真,更可以直接控制单片机硬件。
Arduino插件下载
4 、自动控制
你可以使用Simulink系统性地分析、设计复杂系统在时域和频域中的行为。对此用过Simulink的同学应该是再熟悉不过了。
Simulink设计控制系统
你可以利用根轨迹法来自动调节补偿器参数,并且同时指定多个调节目标,比如干扰参考跟踪、稳定裕度等等。
5、 决策执行算法
完成了上述步骤后,我们就可让机器人完成最终的执行和决策功能了。
使用雷达或者视觉传感器的数据,你可以通过Simultaneous Localization and Mapping (SLAM)创建环境地图,从而实现自动路径规划到达指定位置。
你也可以使用Deep Learning Toolbox深度学习工具箱或者强化学习来实现端到端的机器人控制策略。
基于强化学习的机器人控制测量
MATLAB控制移动机器人的一个实例:TurtleBot
1 、TurtleBot介绍
TurtleBot是一个低成本的、带有开源软件的个人机器人套件,它的目的是给入门级的机器人爱好者或从事移动机器人编程开发者提供一个基础平台。通过直接使用TurtleBot自带的软硬件,开发者可以专注于应用程序,避免了从头开始“造轮子”的麻烦。
TurtleBot可以说是搭载ROS系统中最为重要的机器人,每个版本的ROS测试都会以TurtleBot为主,包括ROS2也率先在TurtleBot上进行了大量测试。所以TurtleBot对ROS兼容性很好。你可以在ROS社区中获得大量关于TurtleBot的相关资源,很多功能包都能直接复用到自己的移动机器人平台上。
TurtleBot全线产品
=
2 、使用MATLAB进行建图和路径规划
我们的目标就是将TurtleBot从房间的开始位置移动到指定位置。
Turtlebot开始和结束位置
使用MATLAB控制移动机器人的方法发如下图所示,主要分为导入地图、规划路径,循迹行走三个步骤。
MATLAB控制移动机器人步骤
在导入地图时,你可以使用二值图像直接建立栅格地图。
导入栅格地图
或者连接ROS,使用SLAM实时生成地图。
使用SLAM实时生成地图
通过路径规划,可以寻找到起始点到目标位置距离最短的路径。
路径规划
你可以在MATLAB里让小车按照规划好路径行走。
循迹行走
当你对你的仿真结果满意后,你可以将相同的代码直接部署到实际的TurtleBot机器人上看看实际运行效果。
TurtleBot实际运行效果
尾声
本文着重讲解了MATLAB/Simulink以及一系列工具箱在机器人开发中的使用。 梳理了整个机器人开发流程和MathWorks公司相对应的产品线。并通过TurtleBot的一个实例来介绍MATLAB如何仿真并实际控制机器人硬件的。受于篇幅限制,本文只列举MATLAB/Simulink部分功能,你可以在官网查看更多相关信息。
随着“中国制造2025”和“工业4.0”的提出,中国机器人领域在最近几年也得到了飞速的发展。而作为机器人开发研究的重要工具,MATLAB/Simulink也将赋予机器人更多可能。
了解更多机器人解决方案:(复制到浏览器打开)
https://ww2.mathworks.cn/solutions/robotics.html?s_eid=PEP_23453
你可以申请30天免费试用的MathWorks工具包:(复制到浏览器打开)
https://ww2.mathworks.cn/campaigns/products/trials.html?s_eid=PEP_23453
基于单片机的起步意图仿真设计与电路实现
刘欣,丁殿磊,郭晓亮,巨环
(大连理工大学 机械工程学院, 辽宁 大连 116024)
摘要 :针对汽车起步过程中驾驶员起步意图的不同,基于油门开度和油门变化率的模糊控制仿真,利用单圈滑动变阻器模拟油门机构设计电路,并且使用单片机实现。给出了油门开度、油门变化率以及核心算法的设计及软件运行流程图。通过在单片机平台上实现,表明这种方法能够很好地表达驾驶员的起步意图。
0引言
随着人们生活水平的提高,汽车在人们的生活中日益普及,它以便捷、快速的优势逐步取代了人们以往的出行方式,而人们对它的舒适性和智能简单化的要求也越来越高[1]。简便的自动档和半自动档汽车的应用会越来越广,这两种汽车主要通过驾驶员的意图来进行汽车起步和自动选换档的操作。汽车起步时的操作最具有代表性,研究驾驶员起步意图意义重大。当前,大部分起步意图的实现都采用MATLAB进行模拟仿真[2],以油门开度和油门变化率为输入量,利用模糊控制算法来实现起步意图的输出。受实际情况的限制,真实的仿真并不多。本文利用单片机来实现驾驶员起步意图的仿真,将线性模拟的起步意图转换为对应时间的数字值来表达起步缓急,并且在LCD1602屏上显示出来。这种方法简便易懂,为起步意图的实际仿真提供了一种方法。
1使用MATLAB进行仿真
汽车在起步时,首先是驾驶员接触到外部环境信息,然后决定起步的快慢,最后控制油门踏板进行起步。因此驾驶员的起步意图通常是通过油门开度和油门变化率来判断的,油门开度大,油门开度变化率高,表明驾驶员急于起
步;反之亦然。起步过程随驾驶员操纵意图的不同可分为慢起步、正常起步和快起步。在对起步意图进行判断时采用双输入单输出的结构,如图1所示。
油门开度的基本论域为[0,1],论域设定为{0,1,2,3,4,5,6,7,8};量化因子的计算值为8;油门开度变化率的基本论域为[-3,3],论域设定为{-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6},量化因子为2;起步意图本身是一个模糊量,设其论域为[0,l,2,3,4,5,6],采用高斯型隶属度函数,建立模糊推理规则集如表1所示[34]。经MATLAB建立仿真模型可得到汽车起步时的起步意图三维图,如图2所示。
2系统总体设计及实现
不同的起步意图对离合器的结合速度有不同的要求。在起步控制中应能对不同的驾驶意图进行识别和判断,并采取相应的策略进行控制。控制不当便会影响车辆平顺性,造成较大的滑摩功并使发动机运转不稳定。所以对起步意图进行识别和判断显得尤为重要[5]。
图3所示为总体方案图,采用一个单圈滑动变阻器来模拟油门机构。首先将滑动变阻器所加载的电压通过A/D转换模块传送到单片机中,将电压由模拟信号转换为数字信号,根据数值大小来表现油门的开度,同时利用定时器记录其变化的时间差,在同等油门开度的前提下可以直接使用时间差来表现油门开度的变化率;然后使用查表法来表现模糊控制器的运算过程;最后同样使用数字来表现起步意图。将输入输出同时在LCD1602屏上显示,验证方案的正确性。
图3总体方案图
图4油门模拟电路图使用滑动变阻器来模拟油门时,采用电压分压的方法,如图4所示,当滑动变阻器处于最小值时,ACC端电压为5 V,当滑动变阻器为最大值时,ACC端电压为1 V,所以ACC端的电压值为1~5 V,然后经过ADC0832进行A/D转换处理,得到的对应数值为51~255(对应的单片机为8位单片机),51对应的油门开度为0,255对应的油门开度为100,设定呈线性关系,将其转换为函数关系式为:
y=2.04x+51(1)
其中, y代表油门开度,x代表AD转换值。
用此数值来模拟表示油门的开度。同时,在开始转换的同时使用定时器计数,记录单圈滑动变阻器转动的时间,在同样的油门开度前提下,起步所需时间可以间接表示油门开度变化率的情况。
使用单片机进行数据处理时,可以采用查表法来模拟模糊控制的运算过程。将油门开度分为5份:0~20、20~40、40~60、60~80、80~100,分别表示油门开度变化很小、小、中等、大、很大;设定踩下油门的时间最长为2 s,同样将其分为5份:0~0.4 s、0.4~0.8 s、0.8~1.2 s、1.2~1.6 s和1.6~2 s,对应表示所需时间很快、快、中等、慢、很慢;同样将起步意图分为5种情况,用1~5表示很慢、慢、正常、急、很急,如表2所示。
按照表2建立起一个数组,在系统运算过程中,首先得到AD转换的数值,经式(1)计算得到油门开度的数值,利用定时器计数得到所用时间;然后,就能根据上述两个数值所在范围确定数组的两个指针;最后将数组中指针所对应的起步意图输出到LCD1602显示屏上,可以是数字1~5,也可以用语言直接描述。这样,就能直接得到驾驶员的起步意图了[67]。
3软件流程图
按照系统总体设计的要求, 单片机控制要能做到实时对驾驶员的起步意图作出正确响应。 整个控制系统由信号检测与处理、模糊运算、 结果输出显示3部分组成。首先进行初始化,包括定时器、AD转换,初始化成功后读取油门模拟电路转换的数字电压值,将其代入式(1)中求得数字化的油门开度,同时利用定时器计时功能记录滑动变阻器转动的时间,最后根据查表法完成驾驶员起步意图程度的判定,并且进行输出。软件流程如图5所示。
在进行计算处理时,因为式(1)中的相关参数为小数形式,可以采用分数形式进行计算,计算结果直接取整即可。在LCD1602显示屏上可以同时显示油门开度、起步所用时间以及驾驶员的起步意图程度,这样,可以使结果的表现更加清晰,验证的结果更加准确。本文使用51单片机作为ECU进行实验,采用KEIL开发平台,并通过 JLINK仿真器将程序下载到单片机上,通过串口调试助手,对驾驶员起步意图的快、正常、慢3种情形进行了验证。结果表明这种方法可以很好地表现驾驶员的起步意图。
4结论
经过多年的发展,汽车现在已经变得越来越智能化了。由于自动变速车辆在运行过程中换挡更加简单、操纵更加方便、减小了不同驾驶技巧间的差距,因此普及程度越来越高。自动变速器的核心和重点难点就在于根据驾驶员操纵意图与行驶环境而自动进行选换挡。 目前,针对自动变速器在汽车上的自动换挡策略的研究越来越多,而且对于自动变速器换挡策略的研究由最初的单参数、两参数、三参数换挡策略发展到现在的考虑车辆运行状况和驾驶员意图的模糊控制和神经网络控制等换挡策略。但是在进行实验验证时,有时会受条件限制,驾驶员的起步意图只能在MATLAB上进行软件仿真。本文在模糊控制的基础上,提出了一种利用单片机表现驾驶员起步意图的方法,研究结果表明,该控制策略可以充分反映驾驶员的意愿,为更好地研究自动换档策提供了帮助。
参考文献
[1] 陈虹,宫洵,胡云峰,等.汽车控制的研究现状与展望[J].自动化学报,2013,39(4):322346.
[2] 王旭东,谢先平,吴晓刚,等.自动离合器起步模糊控制[J].农业机械学报,2008,39(12):1822.
[3] 许男. 自动离合器接合规律及控制系统的研究[D].哈尔滨:哈尔滨工业大学,2009.
[4] 罗石,章丹丹,朱长顺,等.纯电动客车起步仿真研究[J].机电工程,2015,32(1):141145.
[5] 余春晖,陈慧岩,丁华荣.车辆离合器起步阶段模糊控制的研究[J]. 汽车工程,2005,27(4):423425,430.
[6] 周鹏.基于STC89C52单片机的多功能测温仪设计[J].微型机与应用,2013,32(1):2629.
[7] 戚伟,邱旭伟,刘劲松,等.基于PIC16单片机的正弦调光电路[J].电子技术用,2014,40(10):3032,36.
相关问答
怎样才能成为 单片机 工程师?一般来说,单片机属于硬件工程师的工作范畴。毕竟单片机驱动编程和电路设计是分不开,只有明白了单片机如何驱动才能设计出更为合理的电路产品。如果想更好的从...
单片机 gui交互原理?原理如下单片机gui交互原理,一般的情况可以用串口来通讯,matlabGUI可以直接读取串口中的数据,因此如果选用串口通讯的话,想实现matlabGUI和单...原理如下...
黑龙江科技大学自动化专业书有哪些?黑龙江科技大学自动化专业书主要包括:自动控制原理,电工电子技术、模拟电路、数字电路、古典控制理论,现代控制理论,计算机控制理论、信号与系统,计算机组成...
要用来学习 单片机 ,还有一些 matlab 之类的软件,应该买什么电脑呢,预算5000左右?学习单片机、MATLAB配置不需要有多高,相对来说占系统资源比较少,价格5000的绰绰有余了。我也是做嵌入式单片机的,我一直使用的是Dell笔记本,到现在都没出过啥...
各位好基友,谁清楚!宁德本地五色草 仿真 ,五色草 仿真 价格高吗??[回答]1.首先,你要确定你要做哪方面的仿真研究,是研究单片机还是电路,或是电力系统等等;确定了研究方向以后,才能决定用那种软件更可靠;2.proteus是仿真...
matlab 六脉冲触发器怎么用?脉冲触发是按脉冲的数量来触发的,多用于计数等,大多是通过高低电平的翻转如门电路、单片机的数字量输入等来实现。边沿触发是通过脉冲上升或下降时的边沿触发...
单片机 与DSP的区别?单片机(MCU)和数字信号处理器(DSP)是两种不同的微控制器,它们在计算速度、资源分配、软件编程和应用场景等方面有着显著的不同。1.计算速度:DSP的主要优势是它...
Proteus 仿真 为什么蜂鸣器一直不响? - 酱果儿 的回答 - 懂得蜂鸣器直接接单片机I/0口就响了,不要三极管,制作硬件再加上。那你直接接一个一定频率的方波试试看咯!Proteus仿真蜂鸣器一直不响的原因及解决办法...
Proteus 仿真 为什么蜂鸣器一直不响? - MirandaShek 的回答 - 懂得Proteus仿真蜂鸣器一直不响的原因及解决办法:1、buzzer选着active。需要将该选择项去掉;2、buzzer驱动电压过高。双击buzzer看看驱动电压大小,默认...
有初学者学习python实用的编辑器吗?最近看到学习群里面的小伙伴,对于PythonIDE都比较纠结,希望找到一些适合自己的、Python开发工具。小编向企业级大佬请教之后,给大家分享几款Python开发工具,...