arduino 机器视觉编程_万物皆可仿真的MATLAB/Simulink神奇在哪?解析如何将其应用于一整套机器人设计开发流程...

75bdcabdad3d04d48c0794f27ec3b125.png

MATLAB/Simulink:万物皆可仿真 MATLAB是由美国MathWorks公司出品的一款商业数学软件。它是一个多功能的科学计算平台,将算法开发、数据分析、矩阵计算等诸多强大功能集成在一个易于操作的视窗环境中。MATLAB下的Simulink更是被认为可以“仿真任何系统”。正是由于MATLAB/Simulink的强大功能,它在机器人领域得到了广泛的运用。
机器人系统主要由机械结构、传感器、嵌入式硬件、自动控制、决策执行算法这五个部分组成,MATLAB对这几大部分的开发研究都提供了很好的支持。
对于机器人算法研究人员(尤其是高校的硕士博士),首选工具必然是MATLAB,因为它简便快捷,封装性好,更重要的是全世界几乎所有的算法大牛、精英教授都会首先公布对应的MATLAB源码,然后在逐步改写成其他语言进行实际应用。相对于其他仿真环境,MATLAB在机器人的开发研究中有着极大的优势:硬件多样化:预设Arduino和树莓派的硬件包,支持微控制器、PLC、FPGA、GPU等多种设备。不仅仅可以仿真,更可以对硬件进行直接的控制。

0f2e82f988047b43c6a6066ca5afd524.png


Simulink直接仿真控制Arduino和树莓派编程环境多样化:支持C/C++,可以直接连接到ROS系统。

45c8f8d80b1c7652b071b4cd42992f4d.png


直接连接ROS系统可以自动生成代码:MATLAB Coder和Simulink Coder可以根据你建立的模型自动生成控制代码,大大减轻工作量,开发神器有木有? 工具箱:关于机器人设计开发,你想要的,这里都有
MATLAB/Simulink最强大的功能在于其针对各种特殊需求定制的工具箱,接下来我将按照机器人的开发流程为大家逐一介绍。1、 机器人机械结构设计
Simscape可以用来设计和分析三维刚体机械结构(譬如汽车平台、机械臂等等)。除此之外,它还可以使用电气、液压或气动以及其他组件进行多域系统建模。

de8c64a9fc7c91520ac3358665dc810b.png


Simscape
你可以直接在模型库(命令行输入sm_lib)里选择自己想要添加的块,模型库提供了常见的机械结构如简单的几何体、转动副、齿轮、带轮…当然对于复杂的零部件,你也可以先在SolidWorks里面建立好模型然后导入。

265c216f045bb9f4ffb465d9e85e36aa.png


Simscape三维模型库
如下图所示,我们用仿真实现控制机械将物体从一个传送到搬运到另一个上面。

4b8ed4566618dc6e56ef791b45240a11.gif


机械臂仿真2、 机器人传感器融合
机器人用传感器感知外部物理环境,常见的传感器有红外、超声、惯性姿态传感IMU、激光雷达、摄像头等等。
RoboticsSystem Toolbox可以让你通过ROS直接连接到传感器并且对传回来的信息进行校准、降噪等操作。

03f74277c9c93a7cc90db3d144d2f773.png


通过ROS连接到传感器
同时,针对机器视觉,MathWorks开发了单独的工具箱Computer Vision Toolbox。它支持单目、立体、鱼眼等相机的校准,提供了对象的检测跟踪,特征提取和匹配等算法,同时可以根据数据进行三维重建和3D点云处理。

ab7fb729bde009114bb1502eb2c30681.png


配准和拼接一系列点云3、嵌入式
Simulink提供了一系列的嵌入式硬件支持,你可以在Add-Ons的最后一行添加所需要仿真或者控制的硬件。

273366672d6dae03b164d12db83fae66.png


添加硬件支持
点开后下载相应的插件即可使用,这些插件不仅可以仿真,更可以直接控制单片机硬件。

5b16d03a62b1e08e25dd99d5508b1a08.png


Arduino插件下载4 、自动控制
你可以使用Simulink系统性地分析、设计复杂系统在时域和频域中的行为。对此用过Simulink的同学应该是再熟悉不过了。

e922797a46cf135089e7aabd30f00ca6.png


Simulink设计控制系统
你可以利用根轨迹法来自动调节补偿器参数,并且同时指定多个调节目标,比如干扰参考跟踪、稳定裕度等等。5、 决策执行算法
完成了上述步骤后,我们就可让机器人完成最终的执行和决策功能了。
使用雷达或者视觉传感器的数据,你可以通过Simultaneous Localization and Mapping (SLAM)创建环境地图,从而实现自动路径规划到达指定位置。
你也可以使用Deep Learning Toolbox深度学习工具箱或者强化学习来实现端到端的机器人控制策略。

1d4c7c491d2b4050ca497d838795165b.png


基于强化学习的机器人控制测量 MATLAB控制移动机器人的一个实例:TurtleBot1 、TurtleBot介绍
TurtleBot是一个低成本的、带有开源软件的个人机器人套件,它的目的是给入门级的机器人爱好者或从事移动机器人编程开发者提供一个基础平台。通过直接使用TurtleBot自带的软硬件,开发者可以专注于应用程序,避免了从头开始“造轮子”的麻烦。
TurtleBot可以说是搭载ROS系统中最为重要的机器人,每个版本的ROS测试都会以TurtleBot为主,包括ROS2也率先在TurtleBot上进行了大量测试。所以TurtleBot对ROS兼容性很好。你可以在ROS社区中获得大量关于TurtleBot的相关资源,很多功能包都能直接复用到自己的移动机器人平台上。

3e5c9d6a7ae9a37236fed751650fdcdf.png


TurtleBot全线产品2 、使用MATLAB进行建图和路径规划
我们的目标就是将TurtleBot从房间的开始位置移动到指定位置。

b2668c734aad0a91e5c6680cd0da65a8.png


Turtlebot开始和结束位置
使用MATLAB控制移动机器人的方法发如下图所示,主要分为导入地图、规划路径,循迹行走三个步骤。

8baa256eed473766ea15aab21497f955.png


MATLAB控制移动机器人步骤
在导入地图时,你可以使用二值图像直接建立栅格地图。

8baa256eed473766ea15aab21497f955.png


导入栅格地图
或者连接ROS,使用SLAM实时生成地图。

a730cb755ccebb7ed6af9b076c5dbdec.png


使用SLAM实时生成地图

f852fc3c2e0334c9599113fa374db5f5.gif


通过路径规划,可以寻找到起始点到目标位置距离最短的路径。

d4f314edebe97f7465e07d29bd000132.png


路径规划
你可以在MATLAB里让小车按照规划好路径行走。

12731515b00219d2cd0987892728a874.gif


循迹行走
当你对你的仿真结果满意后,你可以将相同的代码直接部署到实际的TurtleBot机器人上看看实际运行效果。

2c856b81b0cdc6b8479eae99599d09ec.gif


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/376215.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

boost 变量类型转换

如果vs版本比较低,会不支持一些std类型转换函数(vs2008就不支持),比如: std::to_string \\数字转字符串 std::stoll \\字符串转数字而且项目碰巧用boost库,可以考虑用下面的的方法来进行类型转换…

android 系统源码调试 局部变量值_如何方便快速的整编Android 9.0系统源码?

点击上方“刘望舒”,选择“星标”多点在看,就是真爱!作者 : 刘望舒 | 来源 :刘望舒的博客地址:http://liuwangshu.cn/framework/aosp/3-compiling-aosp.html前言在上一篇文章是时候下载Android 9.0系统源码了中&…

让“是男人就下到100层”在Android平台上跑起来

原工程:https://github.com/jeekun/DownFloors 移植后的代码:HelloCpp.zip 移植后的APK:HelloCpp.apk 说明:(cocos2d-x版本是“ 2.2) 1.该工程是直接在HelloCpp上修改完成,所以包名也不修改了 2.原工程里面可能是采用g…

Codeforces Round #277 (Div. 2) 题解

Codeforces Round #277 (Div. 2)A. Calculating Functiontime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputFor a positive integer n lets define a function f: f(n)   - 1  2 - 3  ..  ( - 1)nn Your …

QT 边框圆角处理

平时的边框是平角的: 如果需要圆角的话,就要加stylesheet加上这个: border-radius:3px;比如: QPushButton{ border-radius:3px; }就变成圆角了: px前面的数字越大就越圆,比如5px比3px圆 假如只需要某一…

3级调度 fpga_Vivado HLS学习笔记——1.了解FPGA架构

本篇文章为本人学习Xilinx的Vivado HLS教程记录的学习笔记,仅供学习参考。Vivado HLS官方视频教程:优酷视频​v.youku.com目录: Vivado HLS课程简介FPGA与CPU、GPU、DSP的区别FPGA的优势Xilinx FPGA架构:逻辑单元、算术逻辑单元、存储单元使用…

BZOJ2435 [Noi2011]道路修建

这是NOI11年题,你在逗我? 直接dfs就可以了,Linux下貌似不会爆栈。。。 1 /**************************************************************2 Problem: 24353 User: rausen4 Language: C5 Result: Accepted6 Time:5184 …

Qt异常结束程序无法重新运行

有时候代码有问题会导致qt异常结束 修改完后重新运行又会出现 查看任务管理器又没有这个进程 可以使用资源管理器打开看看 也可以考虑使用process explorer查看 发现程序挂起来,结束掉它就可以重新运行了

Qt新添加的类无法链接

通过这个方法给工程添加了个类: 编译的时候就出现了这个问题: 执行一下qmake 然后再重新构建项目就可以了

按钮图片拉伸_图片墙有多香?高手都在用的PPT封面制作技巧!

大家好,我是李导~这次,冬天是真的来了,不知道大家有没有感觉,每次冷空气真正袭来之前我们都会以为今年是个暖冬,结果突然有一天气温从20度直降到个位数,我们都会认为今年比以往的冬天都冷。但是&#xff0c…

POJ 1745 Divisibility【DP】

题意:给出n,k,n个数,在这n个数之间任意放置,-号,称得到的等式的值能够整除k则为可划分的,否则为不可划分的。 自己想的是枚举,将所有得到的等式的和算出来,再判断它是否能够整除k,可是有10000个…

spring-session之一:简介、使用及实现原理

一、背景 http session(企业)一直都是我们做集群时需要解决的一个难题,我们知道HttpSession是通过Servlet容器创建和管理的,像Tomcat/Jetty都是保存在内存中的。而如果我们把web服务器搭建成分布式的集群,然后利用LVS或…

cad2017怎么改变选择方式_家用胎心仪怎么使用?建议孕妈妈选择数胎动的方式...

一般胎心仪都有说明书,孕妈妈可以根据说明书上的方法去做。 下面介绍比较通用的方法。时间:早中晚餐后的30-60分钟内 环境:周围没有电磁或辐射等干扰 辅助:耦合剂 步骤: 1、平躺,寻找适合胎心位置 在听胎心…

c#endread怎么打印出来_打印机打印出来是白板是怎么回事

引起针式打印纸空白的原因大多是由于色带油墨干涸、色带拉断、打印头损坏等,应及时更换色带或维修打印头。故障现象:针式打印机有打印声但打印空白。维修方法:具体解决方法如下:1) 检查打印机色带盒是否正确安装,如果安装不正确,重新安装色带…

使用dnspod遭遇的奇特问题以及背后的原因与临时解决方法

由于园子里有不少用户在使用dnspod,我们觉得有必要将这两天blogjava.net域名在dsnpod遇到的奇特问题分享一下,以免再有人踩着这个坑。 12月11日,我们登录到dnspod的后台时,大吃一惊,blogjava.net这个域名竟然消失了。 …

lgg6可以root的版本_Kali Linux 2020.1版本变更内容

kali2020.1于2020年1月28日发布,为2020年的第一个版本,由于此版本相较以前有较大变化,故专篇记录一下。根据官方说明,主要改变如下:默认用户改为非root用户针对不同需求出了单独的镜像文件nethunter改为非root用户改进…

icem密度盒怎么设置_怎么做好火灾自动报警系统施工安装?

关于火灾自动报警系统施工安装GB50166-2019 《火灾自动报警系统施工及验收标准》 中有明确规定:3.1 一般规定3.1.1 系统部件的设置应符合设计文件和现行国家标准《火灾自动报警系统设计规范》GB50116的规定。3.1.2 有爆炸危险性的场所,系统的布线和部件的…

python岗位 上海_上海黑马Python24期,平均薪资10150元,16个工作日就业率70.73%

黑马程序员上海中心月薪一万只是起点关注网红遍地起,颜值即正义,要说哪个网红靠实力,Python当属第一!Python作为时下最流行的一门网红语言,用一句话来证明它的实力就是:Python在手,天下我有&…

在IIS中部署Asp.net Mvc

概述: 最近在做一个MVC 3的项目,在部署服务器时破费了一番功夫,特将过程整理下来,希望可以帮到大家! 本文主要介绍在IIS5.1、IIS6.0、IIS7.5中安装配置MVC 3的具体办法! 正文: IIS5.1 1. 安装Mi…

idea在分屏拖不回来_朋友圈赏花晒照新玩法,宫格分屏视频!

∆ 点击上方【有科唠】一起涨姿势~近期的天气好的不要不要的,出去赏花是件很惬意的事情,继《城墙下》推出的近期赏花攻略,唠科粉们可以跟着攻略赏花一番,赏花的同时,大家肯定会发个朋友圈纪念一下,见过九宫…