0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何利用MATLAB以及改进的iRobot可编程机器人

454398 来源:wv 2019-10-09 09:39 次阅读

步骤1:零件和材料

MATLAB 2018a

-MATLAB是2018年的首选版本,主要是因为它与连接到移动设备的代码配合使用效果最佳。但是,我们的大多数代码都可以在大多数MATLAB版本中进行解释。

iRobot创建设备

-该设备是专用的特殊设备目的是用于编程和编码。 (这不是实际的真空)

Raspberry Pi(带相机)

-作为iRobot的大脑的主板。它可能很小,但是可以处理许多事情。相机是附加附件。它还使用树莓派获取其所有功能和命令。上图所示的摄像机安装在田纳西大学工程基础系创建的3D打印支架上。

步骤2:Roomba数据库文件

您需要一个主文件,以便为Roomba使用适当的功能和命令。您可以在此文件中编写代码来借鉴功能,以使Roomba的操作更易于管理。

您可以从此链接下载文件,也可以从下面的可下载文件下载

https://ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php

步骤3:连接到Roomba

首先,您必须确保将机器人连接到树莓派通过使用微型USB插头安装主板。然后,您需要将计算机和机器人正确连接到同一WiFi。完成此操作后,您可以打开机器人电源并使用机器人数据库文件中的给定命令连接到它。 (在使用机器人前后,请务必对其进行硬重置)。例如,我们使用命令“ r.roomba(19)”连接到我们的机器人,将变量r分配给我们的设备。这是指数据库文件,该文件将我们的变量设置为可以在任何给定时刻引用的结构。

第4步:代码

我们在下面附加了完整的代码,但这是一个简要概述,突出显示了脚本中的重要元素。我们利用了所有传感器以及摄像头,以充分发挥机器人的潜力。我们还包含了允许我们将移动设备连接到机器人并使用其Gryoscope手动控制它的代码。

我们从简单的命令“ r.setDriveVelocity(.06)”开始,该命令将机器人的前进速度设置为.06 m/s。这只是为了让机器人事先移动。

然后,我们的主脚本从一个while循环开始,该循环通过创建可以在下面的条件语句中引用和使用的结构来检索给定机器人的数据。我们告诉机器人根据机器人用其传感器读取的结构数据执行某个命令。我们对其进行设置,以便机器人读取其悬崖传感器并遵循一条黑色路径。

while true%while循环会一直进行到出现“ false”(在这种情况下,它会无限进行)。

data = r.getCliffSensors; data2 = r.getBumpers;%连续获取有关悬崖传感器值的数据,并将其分配给变量%img = r.getImage; %从已安装的相机拍摄照片%image(img); %显示拍摄的图像。%red_mean = mean(mean(img(:,:,1)));%如果data.rightFront 《2000 r.turnAngle(-2);则获取绿色的平均值。一旦右前悬崖传感器的值降至2000 r.set%以下,Room将Roomba旋转约.2度C.setDriveVelocity(.05); elseif data.leftFront 《2000 r.turnAngle(2);一旦左前侧悬崖传感器的值降至2000 r。%以下,Room将Roomba逆时针旋转约0.2度。setDriveVelocity(.05); elseif 2000》 data.leftFront && 2000》 data.rightFront r.moveDistance(.1); %指示Roomba如果来自右前传感器和左前传感器的两个值都低于2000%r.turnAngle(0),则继续以大约.2 m/s的速度前进。 %告诉Roomba如果上述条件为真,则不要打开

elseif data2.right == 1 r.moveDistance(-。12); r.turnAngle(160); r.setDriveVelocity(0.05); elseif data2.left == 1 r.moveDistance(-。2); r.turnAngle(5); r.setDriveVelocity(0.05); elseif data2.front == 1 r.moveDistance(-。12); r.turnAngle(160); r.setDriveVelocity(.05);

此while循环之后,我们进入另一个while循环,该循环触发通过摄像机获取的数据。而且,我们在while循环中使用了if语句,该语句使用特定程序(alexnet)识别图像,并且一旦识别出图像,就会立即触发移动设备的远程控制。

anet = alexnet; %将alexnet深度学习分配给变量

while true%无限while循环img = r.getImage; img = imresize(img,[227,227]);标签= classify(anet,img);如果label ==“纸巾” || label ==“ refrigerator” label =“ water”;结束图片(img);标题(炭(标签)); Drawnow;

while循环使我们可以用手机控制设备,从手机的陀螺仪中检索该数据,然后将其插入矩阵,该矩阵将数据连续地流回计算机上的MATLAB中。我们使用一条if语句,该语句读取矩阵的数据,并根据电话陀螺仪的某些值提供输出以移动设备。重要的是要知道我们使用了移动设备的方向传感器。上面提到的一乘三矩阵按电话方向传感器的每个元素分类,即方位角,间距和侧面。 if语句创建的条件表明当边超过50或低于-50时,机器人将向前(正50)或向后(负50)移动一定距离。音调值也一样。如果螺距值超过落在-25以下的25个值,则机器人将以1度(正25度)或负1度(负25度)的角度旋转。

,而true

pause(.1)%暂停0.5秒,然后取每个值Controller = iphone.Orientation; %将iPhone方向值的矩阵分配给变量Azimuthal = Controller(1); %将矩阵的第一个值分配给变量Pitch = Controller(2); %将矩阵的第二个值分配给一个变量(将iPhone侧放时向前和向后倾斜)Side = Controller(3); %将矩阵的第三个值分配给变量(当iPhone侧向倾斜时,向左和向右倾斜)%如果Side》 130 ||,则基于电话的方向进行输出侧面《-130%如果手机正面朝下翻转,它将停止Roomba并退出循环r.stop break elseif侧面》 25 r.moveDistance(-。1)%如果iPhone是iPhone,则将Roomba向后移动约.1米向后倾斜至少25度,否则Side 《-25 r.moveDistance(.1)%如果iPhone向前倾斜至少25度,则将Roomba向前移动约0.1米,否则如果俯仰》 25 r.turnAngle(-1)%旋转如果iPhone向左倾斜至少25度,则将Roomba逆时针旋转1度左右;如果Pitch 《-25 r.turnAngle(1)%如果将iPhone倾斜至少25度,则将Roomba逆时针旋转1度。

这些只是我们代码主要部分的重点内容,如果您需要快速复制并粘贴一段内容以利于您,我们将其中包含这些内容。但是,如果需要,我们的整个代码附在下面。

步骤5:结论

我们编写的这段代码是专门为机器人以及项目的总体愿景而设计的。我们的目标是利用我们所有的MATLAB编码技能,以设计出能够充分利用机器人大部分功能的精心设计的脚本。使用电话控制器并不像您想像的那么困难,我们希望我们的代码可以帮助您更好地理解对iRobot进行编码的概念。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • matlab
    +关注

    关注

    175

    文章

    2914

    浏览量

    228373
  • 机器人
    +关注

    关注

    206

    文章

    26944

    浏览量

    201198
  • 可编程
    +关注

    关注

    2

    文章

    755

    浏览量

    39089
  • iRobot
    +关注

    关注

    0

    文章

    32

    浏览量

    14361
收藏 人收藏

    评论

    相关推荐

    YXC可编程晶振,频点15MHz,工作电压3.3V,应用于机器人

    机器人是一种自动化的机器,具备一些与人或生物相似的智能能力,如感知能力、规划能力、动作能力和协同能力。它能够在计算机控制下进行可编程操作,根据所处的环境和作业需要,执行各种任务,包括作业、移动
    的头像 发表于 03-28 15:20 84次阅读
    YXC<b class='flag-5'>可编程</b>晶振,频点15MHz,工作电压3.3V,应用于<b class='flag-5'>机器人</b>

    可编程片上系统是什么意思

    可编程片上系统(Programmable System-on-Chip,PSoC)是一种特殊的嵌入式系统。它首先是一个片上系统,这意味着整个系统的主要逻辑功能由单个芯片完成。其次,它具有可编程的特性,设计方式灵活,可裁减、可扩充、可升级,并具备软硬件在系统
    的头像 发表于 03-28 15:09 158次阅读

    可编程片上系统是什么

    到一个芯片中。这种系统不仅具有处理器内核、存储器、输入输出接口等基本元件,还包含丰富的IP Core资源、足够的片上可编程逻辑资源以及小容量的片内高速RAM资源。
    的头像 发表于 03-28 14:55 140次阅读

    现场可编程门阵列是什么

    现场可编程门阵列(Field Programmable Gate Array,简称FPGA)是一种超大规模可编程逻辑器件,由可编程逻辑资源、可编程互连资源和
    的头像 发表于 03-16 16:38 1642次阅读

    分享 | 可编程晶振芯片几个知识点

    什么是可编程晶振?可编程晶振多为有源晶振,由两个芯片组成;一个是全硅MEMS谐振器,一个是具有温补功能的芯片,可以启动电路锁相环CMOS
    的头像 发表于 01-09 17:51 531次阅读
    分享 | <b class='flag-5'>可编程</b>晶振芯片几个知识点

    LabVIEW的六轴工业机器人运动控制系统

    空间的轨迹构造方法,包括直线、圆弧、NURBS自由曲线等轨迹的构造方程。 模型机器人测试与仿真:通过LabVIEW编程,项目在PC端实现了算法和运动仿真。六轴模型机器人被用作实体测试对象,通过模块化方法
    发表于 12-21 20:03

    机器人编程需要什么软件?

    机器人编程需要什么软件
    发表于 11-01 07:34

    可编程晶振常见问题以及使用思路

    可编程晶振。简单来说就是一种任意编程频率的晶振,可以通过一个发生器放大或缩小,有选择地实现各种总线频率。在实际应用或初步了解中,会遇到各种各样的问题。以下编辑列出了与SiTime可编程晶振相关的一些常见问题和答案。
    的头像 发表于 10-27 14:57 836次阅读
    <b class='flag-5'>可编程</b>晶振常见问题<b class='flag-5'>以及</b>使用思路

    基于Matlab和VR技术的移动机器人建模及仿真

    利用 Matlab 建立移动机器人的动力学模型 ,在虚拟现实 (VR )环境下 ,实时仿真移动机器人路径跟踪的运动特性 ,为基于 Internet 的
    发表于 09-20 06:24

    可编程TCXO的优缺点以及其应用

    可编程TCXO(Programmable Temperature-Compensated Crystal Oscillator)具有一些优点和一些缺点,它们的应用范围也相对广泛。以下是可编程TCXO的优点、缺点以及一些常见应用
    的头像 发表于 09-09 15:46 944次阅读
    <b class='flag-5'>可编程</b>TCXO的优缺点<b class='flag-5'>以及</b>其应用

    国产可编程系统AnyControl的具体功能和特点

    可编程控制器是工业自动化领域最常见的控制设备,比如我们常说的PLC、边缘控制器、工控机、运动控制器、机器人控制器、DCS控制站、远程I/O和车辆控制器,都属于可编程自动化控制器。
    的头像 发表于 09-08 16:31 1631次阅读
    国产<b class='flag-5'>可编程</b>系统AnyControl的具体功能和特点

    编程机器人,售后难做吗?

    编程是如何完成的。 自编程其实也不是很高深的问题。 当用户给出参数时,有时也包括逻辑。 例如用户说,如果设备打开完毕,执行一个命令。 这个例子就包括了一个如果。你的智能机器人只需要生成一个
    发表于 06-08 16:20

    如何快速地让机器人投入生产

    重复使用。按功能以生产线设备,机器人设备如此整理后,可以形成一个函数库。加上c语言的mach函数库,并整理一个三角函数库后。我们的设备就可以通用了。上什么生产线都没问题。不要太依靠示教器,以及各种机器人软件。因为他们会被
    发表于 06-06 16:18

    可编程逻辑器件测试

    可编程逻辑器件 (Programmable Loeie Device,PLD)是一种用户编程实现某种逻辑功能的逻辑器件,主要由可编程的与阵列、或阵列、门阵列等组成,可通过编程来实现一定
    发表于 06-06 15:37 428次阅读
    <b class='flag-5'>可编程</b>逻辑器件测试

    浅谈儿童陪护机器人

    儿童陪护机器人越来越受到人们的关注,其中转动控制是其重要组成部分之一。步进电机芯片作为一种常用的控制芯片,被广泛应用于儿童陪护机器人中的转动控制。本文将从步进电机芯片的工作原理、优势和应用场景等方面
    发表于 05-11 15:12