磁铁和传感器为自动引导车辆创造路径

应用更新:一辆自动引导车辆(AGV)只需要两个组件:一个磁导传感器和一个双通道电机控制器。

通过Cosma Pabouctsidis 2013年12月19日

自动引导车辆(AGV)可以由两个部件组成:一个磁导传感器和一个双通道电机控制器。AGV将沿着粘贴在地板上的胶带制成的轨道行驶。磁传感器将测量它距离胶带中心的距离,并将信息提供给电机控制器,电机控制器将调整转向,使车辆保持在轨道的中心。

位于轨道左侧和右侧的磁性标记为AGV提供了位置信息,用于做出停止和向左/右分叉的决定。

磁轨导向

磁带是几种跟随线技术中的一种。另外两种主要技术是感应线导和光学。下面的表格对每种技术进行了比较。

自动制导车辆表:跟踪比较

底盘设计

在设计车辆时,有四种基本的驱动和转向方式,如图所示。有些类型更容易构建;其他的则有更好的转向特性。其中两个设计是完全对称的,可以在两个方向上操作。机箱设计表列出了每种设计的特点。

自动引导车辆表:底盘设计

传感器安装

每个底盘设计的传感器应按上述图表所示的位置放置。对于前两种机箱类型,传感器必须放置在靠近机箱前端的位置。在长agv上,这意味着一个小转向将导致一个大的摇摆在前面,将使转向控制更加困难。

在可转向驱动轮设计上,传感器可以放置在底盘上。或者它可以成为车轮组件的一部分,并与之一起转动。

为获得最佳效果,将传感器放置在地面以上30mm的位置,并确保AGV沿轨道移动时高度波动不超过+/- 10mm。

传感器-电机控制器接口

MGS1600C有几种输出类型。传感器属性表中显示了传感器的特性和典型用途。

自动引导车辆:传感器属性表

在MutliPWM模式下,传感器数据以一系列可变宽度脉冲的形式输出到一根导线上,其中包含轨道检测信号、轨道位置和左右标记检测信号。该脉冲可以连接到Roboteq电机控制器的任何脉冲输入。一旦脉冲输入被配置为“Magsensor”,传感器信息就会透明且连续地传输到电机控制器,在那里可以使用MicroBasic脚本语言进行处理,或者由外部计算机或PLC通过控制器的串行或USB端口访问。

电线

接线图显示了典型四轮驱动底盘中的磁导传感器和电机控制器。此图表适用于所有Roboteq双通道有刷电机控制器。

图中显示了控制器的连接器详细信息。这种接线与所有配备了15针DSub连接器的Roboteq控制器兼容。传感器和按钮可以连接到任何其他脉冲和数字输入。有关可用信号和引脚的列表,请参阅产品数据表。脉冲输出在传感器电缆的蓝色线上。

配置、测试

传感器和控制器必须经过配置,使它们各自发挥所需的功能,并相互通信。

传感器默认配置为输出MultiPWM脉冲,因此,如果履带由roboteq提供的25毫米磁带制成,则无需进一步配置即可使用。一旦通电,如果没有磁带,磁带检测LED将以低速率闪烁。当磁带在范围内时,LED将常亮,当磁带在右侧或左侧时,其颜色将发生变化。

在进行配置、监控和故障排除时,可将传感器通过位于螺丝塞下的USB连接器连接到PC上。运行Magsensor PC实用程序来更改磁带宽度(如果使用50毫米磁带),或者使用波形显示视图来监视磁场的形状。

如果没有磁带,PC实用程序必须显示一条几乎平坦的线。为了获得最佳效果,在新环境中操作传感器时,始终执行零校准。

移动传感器下的磁带将导致“钟形”曲线出现在图表上。曲线必须是正的(向上)方向。如果曲线下降,请修改配置菜单中的“磁带极性”设置。创客也会造成钟形曲线,但曲线应该是向下的。屏幕截图显示了放置左侧标记和居中轨道时产生的曲线。

电机控制器配置

为了接收和识别来自传感器的数据,控制器必须首先连接到一台运行Roborun+ PC实用程序的PC。在配置菜单中,必须使能连接到传感器的脉冲输入,并将其配置为“Magsensor”。

接下来,控制器必须配置为在混合模式下运行,以便转向命令将向左右电机施加不同的功率以进行转弯。

磁传感器到控制器

当传感器和电机控制器使用单线和MutiPWM模式相互连接时,传感器数据定期传输,并在后台传输到电机控制器,从中可以访问和使用。

还有一组额外的查询可用于从电机控制器读取此信息。查询可以从电机控制器的串口发送,也可以从运行在电机控制器中的MicroBasic脚本发送。(请参见查询集表)

自动引导车辆表:查询集

实施AGV控制

一旦传感器和电机控制器被验证工作,我们就可以进入自动模式。在本文中,所有的计算都是在电机控制器中使用MicroBasic脚本语言完成的

转向控制

传感器输出一个值,即磁带到轨道中心的距离。这些信息被用来纠正转向。如果磁带处于居中,则该值为0,无需进行转向校正。轨道离中心越远,在一个或另一个方向上,转向变化越强。在本例中,实现了比例控制。为了获得最佳的精度和响应时间,控制算法可以改进为全PID(比例-积分-导数)。

节流控制

如何控制油门功率(何时启动,停止,加速,减速)取决于应用。在本例中,AGV将在检测到磁带时移动,选择向左或向右的分叉,并在精确的位置停止。AGV将在设定的时间后或按下用户按钮后恢复移动。当履带不再存在时AGV将停止。

在实际实施中,AGV油门将由外部设备控制,如PLC。然后PLC必须连接到电机控制器的一个输入。节流信息可以是模拟电压或可变占空比PWM信号。

分叉、合并管理

传感器有一个算法,用于检测和管理双向分叉和合并沿轨道。在内部,控制器总是假设存在两个轨道:一个左轨道和一个右轨道。当跟踪一条轨道时,传感器认为两条轨道是叠加的。当进入岔道时,轨道变宽,左右轨道之间的距离也变宽。当接近合并时,传感器将报告左右轨道的突然扩展,但在其他方面的操作方式与在分叉时相同。

使用标记进行定位

磁性标记是位于中心磁道左侧和/或右侧极性相反的磁带。标记提供了一种非常简单和经济有效的方法来识别轨道上的特定位置。

这个应用程序在左侧或右侧使用标记来指示在岔路口跟随哪条轨道。位于左侧和右侧的标记将指示停车位置。

更精细的标记安排可以携带更多关于赛道上位置的信息。图表中提供了多级标记的示例。

手动操舵装置

通常需要手动驱动AGV,将其放置在某个位置,或沿无跟踪路径移动它。按钮,操纵杆,PLC或RC收音机可以直接连接到电机控制器的自由输入。在电机控制器内部运行的程序可以很容易地从自动命令切换到手动命令。此处不描述手动覆盖。

测试轨迹描述

测试轨道图显示了一个简单的AGV轨道,有几个装载站和一个停站。为了简单起见,AGV将在每个站点停留30秒,或者直到操作员按下按钮。

该流程图展示了MicroBasic程序的结构,该程序将在电机控制器内部运行,以沿着轨道移动和控制AGV。本文底部提供了完整的源代码。

手动AGV试驾

在传感器可以用于自动转向之前,手动测试驾驶底盘是一个好主意,可以将操纵杆连接到连接到电机控制器的PC上,也可以使用RC收音机。如果车辆很难手动驾驶,那么在自动模式下也同样具有挑战性。修改设计,使其驱动和转向尽可能平稳和准确。

测试自动转向程序

第一次运行该程序时,建议将AGV的车轮抬离地面。然后在传感器下面放一段磁带。当检测到磁带时,检查左右轮是否开始旋转。验证当磁带从传感器中心移开时,左右旋转速度会发生变化,从而导致AGV旋转,使传感器与磁带处于中心位置。如果AGV旋转,则反转脚本中增益值的极性。

将AGV车轮放在地板上,验证转向修正使传感器从未远离轨道。当传感器远离磁带时,增加增益值将导致更强的校正,但如果增益过高,则会使AGV振荡。找到最优的增益值稳定和准确的跟踪。

测试叉,停止标记

最好在跑道上用AGV测试标记。验证AGV是否在岔路口遵循预期的轨道。当进入合并时,确保AGV遵循正确的轨道,并且当它进入传感器的范围时不会跳到相反的轨道。

验证当同时检测到左右标记时AGV是否停止。检查AGV是否在30秒后或按下按钮后恢复运动。请注意,当AGV远离标记对时,两个标记中的一个将先于另一个从传感器的范围内消失。另一个标记将在短时间内保持活跃,因此将被视为左叉或右叉标记。确保在停止位置之后的下一个分叉或下一个合并之前存在一个标记。

改进AGV

使用更复杂的转向算法:示例脚本使用简单的比例控制,其中转向校正量是与中心轨道的距离乘以增益因子。为了获得更好的结果,脚本可能需要增强,以便使用比例积分或完整的比例积分导数控制。

修正量也可以被限制以避免过度转向。在变速系统中,也可能需要在低速和高速时具有不同的修正增益。

使用多级标记

在这个应用程序示例中,我们使用了一个简单的左右标记对来标识一个停止位置。在典型的应用中,需要更多关于位置的信息,以便AGV改变其行为。例如,识别AGV必须高速移动和低速移动的轨道段,识别需要较长暂停时间的负载站,或识别充电站,其中AGV仅在电池电量低时停止,在电池充电时恢复。

一种简单而自由的技术是计数由另一侧标记段分隔的轨道段中的标记。图中显示了这样的标记配置。当左标记首次出现时,计数器将被重置。然后,计数器在每次出现右标记时递增,而左标记仍然存在。当左边的标记消失时,计数器被计算,AGV可以相应地改变其操作。

提高停车位置精度

在需要AGV停在一个非常精确的位置的应用中,可以添加一个与主传感器呈90度方向的辅助传感器。然后,该传感器可用于定位另一个磁导轨,定位精度为1mm。传感器和导轨的布置如图所示。

AGV国产化,安全

出于安全考虑,通常需要为AGV配备红外或激光测距仪,以便在轨道上检测到人或障碍物时停止。测距仪通常提供数字信号,可以很容易地连接到电机控制器的输入或PLC(如果有PLC的话)。

如果AGV需要更多关于其在轨道上位置的信息,在关键位置放置RFID标签是一个很好的解决方案。然而,RFID标签通常意味着AGV上存在微型计算机或PLC来处理数据并做出导航决策。

脚本源代码

下面的源代码是用Roboteq的MicroBasic语言编写的,并在电机控制器内部运行,以执行本文中描述的AGV功能。

选项显式

这个脚本提供了AGV的基本控制。

“当轨道出现时,马达就会启动,当轨道消失时,马达就会停止。

“轨道位置信息用于提供左右转向。

“在岔路口,自动导引车将沿着左边或右边的轨道行驶,这取决于最后一个

被检测到的标记是在轨道的左侧或右侧。

“确保在合并前有标记,以便AGV保持在主轨道上。

“同时出现左右标记将导致AGV停止

30秒或直到操作员按下按钮

'声明变量

增益为整数

将DefaultThrottle设置为整数

dim TapeDetect as boolean

dim MarkerLeft为布尔值

将MarkerRight设置为boolean

节流为整数

将Tape_Position设置为整数

dim LineSelect作为整数

转向为整数

将GoButton设为boolean

dim RunState为布尔值

dim NotOnStopMarker为布尔值

将暂停时间设置为整数

初始化常量

增益= -7 '使用负值反转转向命令

AGV运行时电机功率水平

LineSelect = 1 '默认使用左轨道

PauseTime = 30000 ',单位为毫秒

主循环每10毫秒重复一次

上图:

等待(10)

’读取传感器数据

TapeDetect = getvalue(_MGD)

MarkerLeft = getvalue(_MGM, 1)

getvalue(_MGM, 2)

读取按钮状态

GoButton = getvalue(_DI, 2)

if (GoButton) then SetTimerCount(1,0) '按下该按钮将清除暂停计时器

if GetTimerState(1) then RunState = true '当暂停定时器被清除时,AGV被允许运行

使用TapeDetect和Pause Timer来设置节流阀

if (TapeDetect and GetTimerState(1))

节流阀= DefaultThrottle

其他的

油门= 0

如果

“检查标记是否存在以选择左侧或右侧轨道

if (MarkerLeft)那么LineSelect = 1

if (MarkerRight)那么LineSelect = 2

“在转换到停止标记时进行检测

if (NotOnStopMarker and MarkerLeft and MarkerRight)

NotOnStopMarker = false '标记停止标记检测,以便在AGV移动之前不会再次检测到它

SetTimerCount(1, PauseTime) '加载停止计时器超时值

RunState = false

其他的

NotOnStopMarker = true

如果

Tape_Position = getvalue(_mgmt, LineSelect)

'使用胶带位置乘以增益作为转向

转向= Tape_Position *增益

'将节流阀和转向控制器配置为混合模式

setcommand(_G, 1, Throttle)

setcommand(_G, 2, Steering)

日志输出。有用的故障排除。完成时删除注释。

打印(“r”,TapeDetect,“t”,Tape_Position,“t”,MarkerLeft,“t”,MarkerRight,“t”,油门,“t”,转向,“t”,RunState,“t”,LineSelect)

goto top '循环永远

- Cosma Pabouctsidis是Roboteq公司的高级技术专家。由CFE Media内容经理马克·t·霍斯克编辑,控制工程mhoske@cfemedia.com

在线

www.roboteq.com

www.globalelove.com查阅其他AGV建议。