万物皆可仿真的MATLAB/Simulink神奇在哪?解析如何将其应用于一整套机器人设计开发流程
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部分功能,你可以在官网查看更多相关信息。
了解更多机器人解决方案:(复制到浏览器打开)
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