利用VEX微控制器编码器实现方形路径导航
本示例向您展示如何使用Simulink®Coder™支持包用于基于A金宝appRM®Cortex®的V金宝appEX®微控制器,将VEX集成编码器模块接口到VEX微控制器,并使用传感器数据来控制四轮机器人。
简介
金宝app基于ARM Cort金宝appex-based VEX微控制器的Simulink Coder支持包,使您可以在ARM上创建和运行Simulink模型烦恼单片机。
在本例中,您将了解如何验证的输出集成编码器模块块并创建一个模型,该模型读取编码器的输出,并使用该值来控制四轮机器人的运动。4个轮子由连接到VEX微控制器的2个直流电机提供动力。Simu金宝applink模型将从编码器中读取旋转滴答数,并为直流电机提供适当的速度输入,以驱动机器人跟踪一个方形路径。
先决条件
如果您是Simulink的新手,我们金宝app建议您观看金宝appSimulink快速入门视频。
我们建议填写开始使用VEX微控制器支持包金宝app.
所需的硬件
要运行这个例子,你需要以下硬件:
ARM Cortex-based VEX微控制器
集成编码器模块(2)
VEXnet手柄和VEXnet按键
标准直流电机(2)和电机控制器29 (2)
4线电缆(2)
四轮机器人平台
7.2 v的电池
USB型a公转a公电缆
集成编码器模块块的验证
在本任务中,您将学习如何在Simulink模型中使用集成编码器模块块,并使用Monitor和Tune操作验证块输出。金宝app
任务1 -硬件连接
下面是集成编码器模块连接到VEX微控制器的硬件设置图,用于外部模式仿真验证。
1.用USB线将VEX微控制器连接到计算机。
2.将集成编码器模块安装在电机上在这里.
3.将4线电缆的一端插入直流电机,另一端插入VEX微控制器的I2C端口。
4.将直流电机连接到VEX微控制器上的电机引脚3。使用电机控制器29电缆建立电机引线和VEX微控制器上的引脚之间的连接。的第4页所描述的连接它们VEX微控制器和VEXnet操纵杆用户指南。
5.将电池电源连接到VEX微控制器。
任务2 -配置一个用于参数调优的Simul金宝appink模型并验证Encoder块
在本任务中,您将配置一个用于参数调优的Simulink模型,以读取旋转金宝app的直流电机使用集成编码器模块并显示在显示块。
open_system (“vexarmcortex_iem_externalmode”);
1.打开预先配置的模型(vexarmcortex_iem_externalmode).在这个模型中,编码器块的输出连接到的输入显示块。确保参数值为I2C端口的序列顺序对于编码器块是根据传感器连接在一起的任务1.一个常数块提供了一个速度为30的输入直流电机块。
2.看到“信号监控与参数调优”准备并运行此模型以进行参数调优。
3.当模型运行时,观察中的滴答计数值显示块。方法为电机速度指定负值常数阻塞并观察tick计数值。观察到,逆时针旋转时刻度值增大,顺时针旋转时刻度值减小。
4.在硬件选项卡上,单击停止以终止监视和调优操作。
在任务1和任务2中,您学习了如何将VEX集成编码器模块连接到VEX微控制器,并在外部模式模拟中验证编码器块读取的tick值。
采用集成编码器模块的方形路径导航机器人
在本任务中,您将学习如何使用编码器来控制四轮机器人的运动以跟踪方形路径。机器人沿直线移动70厘米,然后左转,重复这两步4次,直到绘制出如下图所示的方形路径。
下图是安装在2个直流电机上的集成编码器模块的四轮机器人平台。直流电机连接到两个轮子上,并连接到一个VEX微控制器上。
任务3 -硬件连接
1.两个直流电机驱动机器人平台上的左右轮。执行中提到的所有步骤任务1以上为直流电动机附在左轮上。
2.将集成编码器模块安装在第2个直流电机上,如图所示连接到右车轮上在这里.
3.将4线电缆的一端连接到第一个直流电机,另一端连接到第二个直流电机,如下图所示。
4.连接附在左车轮上的电机到电机引脚3,附在右车轮上的电机到电机引脚6。使用电机控制器29电缆建立电机引线和VEX微控制器上的引脚之间的连接。的第4页所描述的连接它们VEX微控制器和VEXnet操纵杆用户指南。
任务4 -使用编码器构建并下载方形路径导航机器人的Simulin金宝appk模型
在本任务中,您将学习一种方法来建模逻辑,使用编码器输出来控制两个直流电机的速度,从而控制机器人的运动。控制电机的逻辑是在一个MATLAB函数块。然后构建模型并将其下载到VEX微控制器。
open_system (“vexarmcortex_iem_navigate”);
1.打开预先配置的模型(vexarmcortex_iem_navigate).
2.在Simulink模型中需要注意以下几点:金宝app
参数值I2C端口的序列顺序为集成编码器模块模型中的块是根据中的硬件连接来划分的任务3.的参数汽车频道为离开汽车Block被选择为“3”,对于正确的运动块为'6'根据硬件连接任务3.
连接到机器人左右轮的编码器被称为离开编码器而且对编码器分别。由左编码器和右编码器读取的刻度数之间的差异被计算出来并馈送到子系统中的PID控制器控制器.PID输出用于控制直线运动时给予直流电机的输入速度,以抵消车轮漂移的影响,使机器人保持在相对直线的路径上。
在子系统中计算在直线上移动指定距离所需的刻度和指定转弯程度所需的刻度计算直线和转弯的刻度如下图所示。
每次旋转的刻度值可以从所使用的编码器类型中获得。从编码器所连接的机器人车轮的周长开始,得到1个旋转所覆盖的距离。
假设机器人车轮半径是厘米和是每次旋转的滴答数,
行进一段距离的滴答数在直线上的Cm可计算为:
假设附着在车轮上的一个电机是静止的,另一个电机旋转,则旋转半径为机器人的宽度大致等于机器人的宽度或机器人的轮到轮的距离。那么,360度转弯所走过的距离等于半径等于机器人转弯半径的圆的周长,如下图所示。
因此,距离覆盖转度可计算为:
转一圈的滴答数度的计算方法为:
如果使机器人上的两个电机向相反的方向旋转,机器人的旋转中心将在机器人车轮之间的中间,因此,机器人的转弯半径将减小到车轮到车轮距离的一半。随后,所需要的滴答数转度将减少到上述计算值的一半。
基于本例中使用的机器人平台和编码器,您可能需要更改机器人轮半径、机器人轮与轮之间的距离以及中指定的每次旋转的刻度值常数子系统中的块计算直线和转弯的刻度
左编码器和右编码器的刻度值,PID输出和直线和转弯所需的刻度数被作为输入给MATLAB函数块。该模块定义了控制左右电机速度输入的逻辑,从而控制机器人导航。看到创建使用MATLAB函数块的模型的例子MATLAB函数块。
电机的速度由PID输出控制直线运动。一旦刻度计数达到指定距离的值,编码器的值将被重置重置的输出MATLAB函数块高。然后在相反的方向上为电机提供恒定的速度,以便机器人转弯,直到tick计数达到90度转弯的值,并重置编码器的值。这个过程重复四次,这样机器人就完成了一个方形路径。
的重置的输出MATLAB函数块通过单位延迟块以避免代数循环。当块输出依赖于输入值,而输入直接控制输出值时,就会发生代数循环。看到代数循环有关代数循环的详细信息。这个的存在单位延迟块将导致一个时间步的延迟,以便编码器值重置为0。
3.在Simuli金宝appnk模型中,转到建模选择并单击模型设置.
4.当配置参数页打开,导航到硬件实现窗格。
设置硬件板来ARM Cortex-based VEX微控制器。
5.在配置参数页,导航到解算器窗格,并设置解算器来离散(无连续状态).
6.点击好吧.
7.在构建模型之前,请确保使用USB a - male到a - male电缆将VEX微控制器连接到计算机。
8.在Simuli金宝appnk模型中,转到硬件选择并单击构建、部署和启动.该模型现在将部署到VEX微控制器上。
9.从VEX微控制器断开USB电缆,并将VEXnet密钥连接到VEX微控制器。打开VEX微控制器和手柄,将机器人放置在一个表面上,使其能够在不遇到任何障碍的情况下完成一个方形路径。一旦VEXnet密钥配对,机器人就开始移动并跟踪指定的路径。请注意,在直线上移动一定距离和进行指定的转弯程度所需的滴答数可能会因机器人移动的表面和电池电量而略有不同。您可能需要稍微修改所需的滴答数,以便机器人能够在所需的表面上跟踪一个方形路径。
其他可以尝试的事情
使用光轴编码器替换集成编码器模块块执行相同的练习。您可以使用预配置的型号来验证光轴编码器块(vexarmcortex_shaftencoder_externalmode)和采用光轴编码器的方形路径导航机器人(vexarmcortex_shaftencoder_navigate).如果使用预配置的型号,下面给出的是所需的硬件连接。
通过光轴编码器插入连接到左右轮的直流电机轴。
将左侧编码器的顶部电线插入VEX微控制器的数字端口1。
将左侧编码器的底部电线插入VEX微控制器的数字端口2。放置编码器,使其可移动的一面朝上,以识别编码器的顶部和底部电线。
将右编码器的顶部电线插入VEX微控制器的数字端口3。
将右编码器的底部电线插入VEX微控制器的数字端口4。