主要内容

行追随者申请Arduino机器人

这个例子展示了如何创建一个线跟踪算法在仿真软件®以及如何运行它的Arduino®机器人。金宝app

介绍

金宝appArdu金宝appino硬件仿真软件支持方案使您能够创建和运行仿真软件模型Arduino机器人。这个机器人有两个基于达芬奇(ATmega32u4)董事会:Arduino机器人汽车板和Arduino机器人控制董事会。Arduino机器人控制委员会等外围设备模拟输入插脚,数字输入/输出插脚,PWM,键盘,电位计(锅),指南针,蜂鸣器,等。Arduino机器人运动委员会等外围设备模拟输入插脚,数字输入/输出插脚,PWM,电机驱动,电机、车轮、微调电位器(修剪),红外传感器,等更多细节,请参考Arduino机器人网站

这个例子展示了如何创建一个仿真软件模型上运行一行追随者算法Arduin金宝appo机器人电机板通过访问红外传感器和电机。您将学习如何访问Arduino机器人电机板的外围设备使用仿真软件模块库和标准Arduino库模型支持包的Arduino硬件。金宝app金宝app

这个例子演示了如何访问Arduino的外围设备(键盘,蜂鸣器)机器人控制董事会利用仿真软件的模块库和标准Arduino库。金宝app您将学习如何建立机器人Arduino控制板之间的串行通信和Arduino机器人汽车板。

先决条件

如果你是新的模型,我们建议完成金宝app交互式仿真软件教程金宝app,开始使用仿真软件金宝app,金宝app仿真软件开始视频。

所需的硬件

运行这个例子中您将需要以下硬件:

  • Arduino机器人

  • USB电缆

  • 4可充电镍氢AA电池

  • 9 v适配器

  • 跟踪利用A0白布~ 1.5”宽的黑线

open_system (“arduinorobot_linefollower”);

介绍线从动件的应用程序

一行追随者机制Arduino机器人可以显示如下:

在这个应用程序中,您需要获取当前偏差的Arduino机器人黑线中心的误差信号。基于误差信号你将推动汽车Arduino机器人汽车董事会采取纠正措施,使Arduino机器人回到黑线的中心。

1。检查Arduino机器人你会注意到红外传感器出现在Arduino机器人电机板可以用来获取当前的偏差Arduino机器人从黑线的中心。你将学习从红外传感器读取的值使用仿真软件模块库和标准Arduino库。金宝app

2。您将学习如何提供脉冲宽度调制(PWM)信号来控制汽车连接Arduino机器人汽车板和旋转车轮Arduino移动机器人。

任务1 -创建仿真软件子系统读取金宝app红外传感器Arduino机器人电机板上

在本节中,您将学习如何解码红外传感器尺寸5的值放入一个仿真软件信号对应于红外传感器的数量在Arduino机器人汽车板。金宝app描述的逻辑的实现红外传感器子系统。Arduino机器人电机板上的更多信息,参阅Arduino机器人网站。请注意以下连接红外传感器:

五个红外传感器(IR0-IR4)连接到一个多路复用器的输入通道(MUX)。MUX选择器MUXA、MUXB MUXC连接到数字7针,8日和11日分别在单片机上。单片机只能读一个红外传感器,通过提供3数字信号(MUXA、MUXB MUXC)选择所需的红外传感器对MUX的输出信号。3数字信号足以访问5红外传感器。MUXA LSB, MUXC选择器的最高有效位字节。基于选择字节,以下选择红外传感器:

MUXC | MUXB | MUXA |红外sensor_number _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 0 | 0 | 0 | 0 0 0 | 0 | 1 | 1 | 1 | 0 | 1 2 0 | 1 | 1 | 3 | 0 | 0 | 4 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

选择红外传感器,目前MUX输出,连接到微控制器的模拟销A2。

下面的步骤将展示如何创建一个蒙面子系统仿真软件读一个红外传感器。金宝app

1。使用一个常数块决定读哪一个红外传感器。把一个常数块图书馆:仿真软件>金宝app来源和更新以下设置:恒定值从0 - 4 - >任何值,样品时间- > 0.002 - > uint8输出数据类型。0 - 4的值对应于红外传感器的数字。

2。红外传感器数字转换成一个二进制值提供输入对应的数字针MUXA, MUXB MUXC使用按位运算符块。使用3按位运算符块与操作和值0 x1、x2 0 0 x4分别给LSB MSB选择字节。使用3数字输出街区库:仿真软件支持包金宝appArdu金宝appino硬件>常见和填充密码为7、8、11 MUXA, MUXB MUXC分别。连接选择器的LSB字节(从经营获得)数字输出块对应MUXA,中间位MUXB, MSB MUXC。

3所示。使用一个模拟输入块从库:仿真软件支持包金宝appArdu金宝appino硬件>常见阅读销A2 MUX对应输出。输入密码2和样品时间为0.001。模拟输入块读取的值的数据类型uint16从0 - 1023红外传感器(0 -白色1023 -黑色)。使用一个数据类型转换块将int16价值。数据类型转换块的输出连接到一个外港

4所示。将数字输出模块的优先级设置为1的选择字节需要编写之前阅读红外传感器的值。模拟输入块的优先级设置为任何值> 1,以确保它得到选择字节写入MUX后执行。设置一块的优先级,右键单击>属性>一般>块优先级。了解更多关于块优先级和它们对块执行顺序的影响,参考指定块的属性

5。使用一个对迭代器子系统遍历所有的5个传感器。迭代器子系统的输入是常数块在步骤1中创建。常量的值块[0 1 2 3 4]来表示所有的5个传感器。使用外港的输出迭代器子系统。

6。把块创建迭代器子系统内从步骤2 - 4。打开内部迭代器子系统红外传感器子系统和检查的设置选择器赋值块。选择器和分配块用于遍历一个红外传感器数量和分配价值的输出向量。

7所示。创建一个子系统通过选择所有步骤6中创建的块,这样看起来如下:

任务2 -创建仿真软件子系统控制金宝app汽车Arduino机器人汽车板

在本节中,您将学习如何旋转两个汽车出现在Arduino机器人汽车板在两个方向正向和反向使用所需的转矩仿真软件的信号。金宝app描述的逻辑的实现汽车子系统。Arduino机器人电机板的示意图显示以下连接微控制器和电机之间的司机:

电机驱动控制的速度和方向左右汽车通过单片机的输入。注意数字针6、5、10、9单片机的连接到IN_A1, IN_A2 IN_B1, IN_B2汽车司机。输入IN_A1, IN_B1马达驱动器的对应的向前运动分别左右运动。IN_A2 IN_B2对应的反向运动,左和右电机分别。

一个脉冲宽度调制(PWM)信号可用于控制马达。正输入电动机驱动单片机对应向前移动的汽车,而负输入对应于反向运动的汽车。向前移动的汽车,你应用PWM信号IN_A1 IN_A2和IN_B2 IN_B1和零值。同样的反向运动,你应用PWM信号只IN_A2 IN_A1和IN_B1 IN_B2和零值。

下面的步骤向您展示如何创建一个蒙面子系统仿真软件来控制汽车。金宝app

1。使用一个轮廓尺寸块的输入单片机的电机。

2。的脉宽调制块出现在库:仿真软件支持包金宝appArdu金宝appino硬件>常见可以用来发送PWM信号控制电机。使用2 PWM模块和输入密码6,5为IN_A1, IN_A2。

3所示。输入值之间的关系和IN1 (IN_A1 / IN_B1), IN2 (IN_A2 / IN_B2)可以显示如下:

输入| IN1 | IN2 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + ve输入| 0负| 0 | | abs(输入)_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

向前移动,使用MUX多路输入值和块常数块int16 0值的数据类型。

4所示。PWM块接受值从0 - 255 (uint8)。反向运动,使用一个腹肌块与输出数据类型- > int16,整数舍入模式- >轮负输入值转换为积极的和多路复用与步骤3中使用的常数块值0。

5。使用一个开关块条件u2 >阈值在u2 - >输入和阈值- > 0。如果条件满足,还那么向前移动多路复用价值选择其他反向运动多路复用价值选择。

6。使用一个多路分配器块和输出连接到2 PWM模块对应IN_A1, IN_A2。

7所示。重复整个逻辑从步骤1 - 6的发动机。输入销10号,9 2 PWM模块对应IN_B1 IN_B2。

8。创建一个子系统通过选择所有的块,这样看起来如下:

open_system (“arduinorobot_linefollower /机器人/汽车”)

任务3 -构建仿真软件模型与线金宝app跟踪算法

在本节中,追随者算法与PID控制器实现为一个闭环控制系统。描述的逻辑的实现线跟踪算法子系统。算法描述如下:

蓝点代表红外传感器(IR0 - IR4)。当Arduino机器人的中心然后黑线IR2读取黑(~ 1023)和IR0 IR1, IR3 IR4读白(~ 0)。阈值选择范围从0 - 1023转换成一个二进制值。1当低于阈值(明亮或白色背景),0高于阈值时(深色或黑色背景)。

重量是给每个传感器,高值极端的提供控制信号,当高偏差检测。计算加权电流偏差从下面的方程:

$ $目前\偏差= \压裂{\ sum_0 ^ 4 \传感器的读数\ \ \ * \ & # xA(0/1);相应\体重}{数量\ \传感器\阅读\ 0}$ $

当机器人是集中在一条黑色细线,IR2读0虽然IR0, IR1 IR3 IR4读1。

用方程中的值,当前偏差计算如下:

$ $目前\偏差= \压裂{(1 * 4)+ (1 * 2)+ (0 * 0)+ (1 * 2)+ (1 * 4)}{1}= 0 $ $

期望的偏差当机器人集中在一层薄薄的黑色线设置为一个恒定的值为0。计算错误错误\ = \期望\偏差——美元当前的美元\偏差。在这种情况下,当电流偏差是0,这个错误是0,机器人可以移动。总结的所有可能的错误列表如下表所示:

  • * -除的情况下

注意到积极的错误意味着Arduino机器人>左右转电动机转矩增加,对电动机转矩下降。负误差Arduino机器人意味着左转>左电动机转矩减小,对电动机转矩增加。

实现上述线追随者逻辑仿真软件您可以创建两个子系统:一个获取当前偏差Arduino机器人使用红外传感器,另一个控制金宝app汽车。实现中可以看到的一个例子线跟踪算法子系统的模型。

1。看在当前偏差计算子系统。它给机器人的当前偏差的黑线中心按上述算法。

点需要注意:

  • 红外传感器阈值设置为一个恒定的值为600。

  • 权重应用使用获得

  • 浸透在整数溢出选项检查数学函数块

  • 整数舍入模式作为产品块,以确保当前偏差代表准确的整数值。

  • 开关块照顾可能被零除当前偏差计算。

2。分析转矩估计子系统。它给所需的扭矩值(从-255年到255年)左派和右派马达。

点需要注意:

  • 机器人的基本扭矩设置为一个恒定的值为100。输出数据类型设置为int16匹配的数据类型Torque_correction

  • Stateflow图实现开关三种不同国家之间:直接,TurnLeft TurnRight基于价值的Torque_direction

3所示。观察到红外传感器子系统的优先级为1汽车子系统和有许多低优先级说,5,确保控制作用应用于汽车只在获得当前偏差的机器人红外传感器。

4所示。在这个例子中一块离散PID控制器用于基于错误的控制作用。您可能需要调整P, I, D值迭代通过将机器人在跑道上。确保电池足够的正常运行车轮。

任务4 -运行应用程序行追随者Arduino机器人汽车板

在本节中,您将学习所需的步骤上部署模型算法Arduino机器人汽车板。金宝app

1。Arduino机器人电机板连接到您的主机使用USB电缆。这个电缆也将权力。

2。在模型中,单击模拟>模型配置参数打开配置参数对话框。在打开的对话框中,选择硬件实现窗格中选择和Arduino机器人汽车板硬件板从下拉菜单中。你可以手动选择COM端口号或让它依然存在自动和保留其余的设置默认值。然后单击应用>好吧。一个预先配置的模型包括为您的方便。

3所示。在硬件仿真软件模型的选项卡,金宝app在模式部分中,选择机上运行然后点击构建、部署和启动

4所示。模型是下载后,断开USB电缆从你的Arduino机器人汽车板。

5。地方上的机器人跟踪和把机器人电源开关打开出席Arduino机器人汽车板。模型运行在Arduino机器人汽车板和Arduino机器人开始移动。

6。跟踪的环境光和厚度等因素会影响机器人的能力来跟踪黑线。如果Arduino机器人不跟踪黑线。为了克服这些问题,您可以调整P,我,D值的离散PID控制器和基地的值转矩变化,红外传感器阈值模型中,使机器人跟踪黑线。再次下载模型Arduino机器人电机板使用构建、部署和启动选择。重复直到Arduino机器人沿着黑线。

7所示。把机器关掉。

任务5 -扩展仿真软件模型机器人金宝appArduino控制板之间的串行通信和Arduino机器人汽车板

在本节中,您将学习如何建立Arduino机器人电机之间的串行通信板和Arduino机器人控制董事会。您将学习如何解码机器人Arduino控制板上的按键信号以及如何使用它们作为控制信号的Arduino机器人汽车板。描述的逻辑实现Arduino机器人控制模型Arduino机器人运动模型

下面的例子使用了键盘和蜂鸣器外设出现在机器人Arduino控制板发送控制命令和反应的反馈收到Arduino机器人汽车板。Arduino机器人电机板上的更多信息,参阅Arduino机器人网站。示意图显示键盘连接销A0 Arduino的机器人控制董事会。键盘有5个键控制一个分压器电路。电压检测到按键后由10位(0 - 1023)对单片机模拟到数字值。根据电压的数字表示销A0可以知道按下的是哪个键。

A0_Digital_Value |关键_ _ _ _ _ _ _ _ _ _ _ _ _清廉| 133 - 153 | 319 - 339 | 494 - 514 | 732 - 752 | 5 _ _ _ _ _ _ _ _ _ _ _ _ _

机器人Arduino控制板的示意图显示,蜂鸣器连接到数字销D5。

你可以控制轮子的运动Arduino机器人电机板通过按一个键Arduino机器人控制董事会和发挥语气蜂鸣器基于反馈收到Arduino机器人汽车板。串行通信用于两板之间的数据传输。

一)发送串行命令的键盘Arduino机器人控制委员会:

你可以阅读压Arduino机器人控制董事会的关键。关键5可用于机器人的两种模式之间切换:线跟随者模式和手动模式。基于所选择的模式和关键敦促您可以发送串行命令Arduino机器人汽车板。下面的表总结了机器人Arduino控制板发送连续的数据:

模式|键按下| |移动串行数据_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _行追随者| NA |跟踪黑线中心| 1手动| | | 0停止没有手动| 1 |逆时针| 2手册| 2 | |落后3手册| 3 | |转发4手动顺时针| 4 | | 5 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
  • NA -不适用

1。打开Arduino机器人控制模型。知道压可以使用的关键模拟输入块从库:仿真软件支持包金宝appArdu金宝appino硬件>常见引脚数0和0.004样品时间。

2。观察关键防反跳使用Stateflow逻辑图,验证按键,如果仍按0.016 s。注意,键防反跳时间可能会有所不同从一个机器人硬件到另一个地方。

3所示。的modeSelectStateflow图检测如果5键按下时,从行跟随者模式切换到手动模式,反之亦然。注意,默认模式是追随者。以外的任何按键5没有任何影响的追随者模式。

4所示。的串行命令子系统确定要发送的数据的行追随者或手动模式。在手动模式下,你可以让机器人按照发送的数据移动按键Arduino机器人运动。

5。使用串行传输块从库:仿真软件支持包金宝appArdu金宝appino硬件>常见用端口1发送命令Arduino机器人汽车板。串行传输块的初始值1表示跟随者模式为默认。

6。注意的优先级模拟输入键盘读取块1和串行传输块低得多说,10。这将确保你之前确定按键连续发送命令。

b)Arduino机器人电机板上接收串行数据和发送反馈:

1。打开Arduino机器人运动模型。从机器人Arduino控制板接收串行数据串行接收块从库:仿真软件支持包金宝appArdu金宝appino硬件>常见0.002使用端口1和样品时间。注意,串行接收块采样率高于串行传输块的Arduino机器人控制模型确保不要错过任何数据。

2。观察决定模式Stateflow图表用于决定模式应遵循由Arduino机器人汽车板。默认模式是追随者。请注意,状态输出的串行接收块表示如果收到任何新的数据。Stateflow图使用状态信息在模式之间进行切换。

3所示。看到启用子系统行跟随者模式线跟踪算法放在里面。

4所示。的手动模式启用子系统使用开关情况块。从机器人Arduino控制板接收到的数据选择对应的从子系统。默认移动都停止即左电机输入和右电机输入0。

5。根据选定的举动切换实例块串行传输块(端口1)将反馈发送给机器人Arduino控制板。值为1、2和0发送反馈。值1对应于逆时针或顺时针移动选择。值2对应于向前或向后移动的选择。值0对应的默认移动停止。

6。切换的优先级情况下块(1)高于串行传输块的优先级(20)。

7所示。你可以看到的行跟随者模式手动模式子系统给左派和右派电动机的转矩输出。这些输出合并使用合并块和作为输入给汽车子系统。串行接收块的优先级高于汽车子系统。

c)接收反馈连续Arduino机器人控制委员会:

1。打开Arduino机器人控制模型。的串行接收阻塞端口1和样品时间0.002收到的反馈Arduino机器人汽车板。

2。的确定基调Stateflow图表使用串行接收收到的数据块来确定基调。接收的数据的摘要和选择语气下面:

数据收到|基调(Hz) _ _ _ _ _ _ _ _ _ _ _ _ _ 1 50 125 | 0 | 0 | _ _ _ _ _ _ _ _ _ _ _ _ _

3所示。脉冲发生器模块用于生成50赫兹和125赫兹的频率。一个常数块用于0 Hz。

4所示。这些音调是合并使用合并块和作为输入数字输出块从库:仿真软件支持包金宝appArdu金宝appino硬件>常见。相对应的密码设置为5蜂鸣器。

5。串行接收块较小的优先级比串行传输和蜂鸣器的块。

任务6 -运行仿真软件模型金宝app机器人Arduino控制板和Arduino机器人汽车板

在本节中,您将学习所需的步骤来部署模型算法在机器人Arduino控制板和Arduino机器人汽车板。金宝app

1。第一个机器人Arduino控制板连接到主机使用USB电缆。

2。在Arduino机器人控制模型,选择硬件板机器人Arduino控制板模拟> >硬件实现的模型配置参数。选择手动或自动的COM端口,同时保持其他设置为默认。在硬件仿真软件模型的选项卡,金宝app在模式部分中,选择机上运行然后点击构建、部署和启动

3所示。模型是下载后,断开USB电缆从机器人Arduino控制板。

4所示。Arduino机器人电机板连接到您的主机使用USB电缆。

5。在Arduino机器人运动模型,选择硬件板Arduino机器人汽车板模拟> >硬件实现的模型配置参数。选择手动或自动的COM端口,同时保持其他设置为默认。在硬件仿真软件模型的选项卡,金宝app在模式部分中,选择机上运行然后点击构建、部署和启动

6。模型是下载后,断开USB电缆从机器人Arduino控制板。

7所示。将机器人放在地上,把电源开关打开Arduino机器人电机板上。模型运行在董事会和Arduino机器人开始行追随者的默认模式。当你按下键5它从追随者线切换到手动模式,手动模式下按默认动作停了下来。然后基于按键1、2、3或4它逆时针移动,向后、向前,或顺时针只要键被按下。一旦你释放机器人的关键是在停止模式。在紧迫的关键5,机器人开关线跟随者模式。

8。把机器关掉。

其他的事情努力

  • 验证每个子系统的工作为外围访问通过使用一些样例输入。例如,您可以使用示例输入通过不断块(值从-255年到255年)子系统控制汽车车轮是否向前或向后旋转。

  • 调整PID控制器设置。提高机器人的能力更快,更清晰。

  • 本示例使用一个常数红外传感器阈值。试图实现红外传感器的动态计算阈值,可以将不同环境光。

  • 一个常数基本扭矩是本例中使用的价值。试着调整基本动态转矩。例如,您可以使机器人更快通过增加基本扭矩直线运动。确保顺畅,您可以减少基本扭矩。

  • 尝试访问其他外围设备出现在机器人Arduino控制板和Arduino机器人汽车板。例如,探索串行发送命令Arduino机器人电机板机器人Arduino控制板上的电位计。