基于ARM Cortex 系的视觉导航AGV双核控制器设计

2013-09-13 06:06黄晓华仇家强
机电工程 2013年10期
关键词:人机界面驱动器内核

王 可,黄晓华,张 健,仇家强

(南京理工大学 机械工程学院,南京 210094)

0 引 言

ARM 是一种当前最为流行的嵌入式处理器架构,也是各类半导体厂商设计嵌入式低功耗、高性能SoC 的首选架构[1]。基于ARM v7 架构的Cortex 系列分为A、R和M 三类,旨在服务于不同的应用需求:“A”系列面向尖端的基于虚拟内存的操作系统和高性能计算应用,除了ARM 多内核之外,SoC 常整合DSP 与图形加速芯片以提高系统处理能力;“R”系列针对实时系统,常用于要求严苛的工业现场;“M”系列针对高性能微控制器,常用于对于价格、功耗敏感的领域,以取代传统的8位或16 位单片机[2]。

基于视觉的AGV(Automated Guided Vehicle)车载控制器一方面需要高性能的处理器进行实时图像处理[3-4]和实现图形化的人机界面[5-6],另一方面需要实时可靠的工控技术来实现AGV 的机电动作,并且需要尽可能的降低系统功耗[7-8]。本研究利用ARM Cor⁃tex-A 系列高性能计算技术和Cortex-M 系列微控制器技术的集成[9],能够发挥各自的优势[10],为操舵型视觉导航AGV 小车Anrot-I 设计与实现双核控制器。

1 操舵型AGV 机电结构

操舵型AGV 小车Anrot-I 是一个基于视觉导航的灵活的、低成本轮式移动机器人,它可以根据设定在地面上的黑色导引线,实现跟踪直线路径、识别十字路口、圆弧转弯等基本运动功能。借助于超声波传感器和触碰开关实现障碍物检测的二级安全动作,即在接近障碍物时减慢车身速度,在碰撞到障碍物时能急停。

操舵型AGV 示意图如图1 所示,小车的后驱单元(4)是通用的400W 无刷直流电机和差速器,配合电机驱动器反馈的表征速度的相线电压信号,实现速度闭环控制。实现转向的是60W 空心杯有刷直流电机(5),装有大比率行星齿轮减速箱和光电编码器,通过伺服驱动器内置的闭环控制实现精确的位置动作。另一只前轮是万向自由轮,起支撑和跟转作用。

图1 操舵型AGV 示意图

48 V 酸铅蓄电池和DC-DC 隔离电源为AGV 的所有功率和控制部件提供稳定的电压,控制器是AGV 的核心,收集来自CMOS 摄像头、超声波传感器、触碰开关、驱动电机速度反馈、转舵电机位置反馈、蓄电池电压等信息,向后驱电机驱动器、前舵轮伺服驱动器和其他执行器输出控制信号。

2 控制器硬件设计

本研究选择三星公司基于Cortex-A8 内核SoC 芯片“S5PV210”作为实现图像处理与人机界面的单元,选择意法半导体公司基于Cortex-M3 内核SoC 芯片“STM32F103”作为实时工控单元,配合输入/输出接口单元、LCD 电容触摸屏、WIFI 无线网卡、蓄电池与隔离电源模块、电机驱动器及其他部件,共同实现AGV 车载控制系统运行和调试所需的功能。控制器的硬件系统如图2 所示。

基于Cortex-A8 ARM 内核的S5PV210 有32 K 一级缓存、512 K 二级缓存,支持VFP 硬浮点指令,工作频率1 GHz 时能达到2 000 MIPS 的计算性能。外设集成的USB 控制器、64 位多层总线、GPU 单元、音/视频编解码硬处理单元等,这让多媒体应用更加独立于CPU 内核。本研究搭载该SoC 的电路板运行Linux 2.6 操作系统,丰富的外设驱动资源能够用于轻易地搭建基于USB CMOS 摄像头的导航单元,通过内置图像处理算法识别路径。7″LCD 电容触摸屏作为人机界面(Human Machine Interface HMI)可以显示功能配置、路径、实时状态等信息,并且能够进行在线的AGV 人机交互。系统通过WIFI 无线网卡实现PC 机对AGV 的远程控制。

基于Cortex-M3 ARM 内核的STM32F103,工作温度-40℃~80℃,主频最高72 MHz,SoC 内部集成512 K Flash,64 K SRAM,可以外扩512 K SRAM 和16 M NorFlash,集成了微控制器常见的外设,并且外设可以通过程序配置任意向某个GPIO 映射,保证了硬件设计的灵活性。搭载该微控制器的电路板运行实时操作系统(RTOS),便于程序的编写与扩展。通过输入/输出接口板,连接AGV 的开关、传感器及执行器。

图2 控制器硬件系统图

微控制器的外部连接主要分为3 个部分:①通过UART 接口或者USB 接口,接收来自A8 板的控制与导航信息,发送AGV 运动状态信息;②通过UART 接口向前舵轮的伺服控制器发送位置信息,通过ADC 模数转换后接收来自后轮驱动器的电压(速度)信号,控制信号通过DAC 数模转换后发送至后轮驱动器;③ 通过光耦隔离输入来自触碰开关、接近开关、超声波传感器、急停与启停开关的信号,通过继电器输出功率电源通断信号、警示灯和声音信号等。典型的光耦隔离输入与继电器输出接口如图3 和图4 所示。④留出保留的I/O 接口,包括光耦隔离输入和继电器输出,以控制AGV 的特定辅助功能如移载货物等。

图3 光耦隔离输入

图4 继电器输出

控制器的电能由两组24 V~20 AH 的酸铅蓄电池提供,经过隔离的DC-DC 电源模块,转换成各个控制器所需的电压。其中,后驱轮的驱动器的48 V 电压和前舵轮的伺服驱动器的24 V 电压直接由蓄电池引出。系统的供电原则是控制电源和电机功率电源完全隔离,电源模块的功率容积留出安全余量。

3 控制器功能模型设计

双核控制器的设计目的是为了能够处理两种不同的控制任务,这里使用了基于分层(高层–低层)的信息模型。分层功能模型如图5 所示,是程序设计的主要框架。运行Linux 2.6 的A8 处理器承担了图像采集与处理、HMI 显示与指令输入、远程WIFI 控制信号的任务,并且将这些所有的外部高层信息通过集中决策,产生动作控制指令并传递给M3 处理器。这个板级之间的指令是一串预先明确定义的字符串,A8 和M3 都有专门的板级通讯模块来处理。由于Linux 是一个完善而且强大的操作系统,从程序开发的角度来看,基于Linux 图像采集与处理、人机界面和远程通讯的功能都是便于实现的。

图5 分层功能模型

M3 处理器运行的是实时操作系统,与非实时的Linux 操作系统不同的是,对于紧急事件,如优先级最高的外部碰撞中断、急停开关等,系统总是能够以最快的速度响应,这从实际的AGV 动作执行层面确保了系统的安全性与可靠性。另外,由于实时系统本身的设计理念以及其复杂度较小,也易于实现时序准确的功能。

从板级通讯模块得到的上层控制信息主要有AGV 工作模式、路径偏差值、路径的曲率、何时需要转弯或者停车等,这由“信号解释器”任务进行解读,并通过“定时器任务同步与分发器”进行各种功能的触发。在AGV 正常沿直线路径行驶时,“路径跟踪器”产生后驱轮的目标速度以及前舵轮的目标转角位置,通过“后轮控制器”和“前轮控制器”发出实际的电机控制指令。由于Anrot-I 型AGV 车实际的电机与驱动器选用,这里的“前轮控制器”只需要单向地通过串口向Elmo 驱动器发出位置、速度和加速度指令,而“后轮控制器”则需要通过ADC 转换得到的速度进行闭环算法,最终由DAC 得到驱动器所需的模拟控制电压,这个过程的示意在图2 中展现。

在收到上层传达的十字路口转弯或者圆弧路径跟踪信号时,“路径跟踪器”可以执行与正常沿直线路径行驶不同的算法,以保证在这种状态下的AGV 的最佳运动轨迹。

在收到上层传达的定点停车或者外部急停开关、超声波传感器、碰撞开关得到的信号时,一个优先级最高的任务被触发,进入“紧急事件处理器”进行动作。

4 基于Anrot-I 平台的实验与分析

根据以上小车的机电系统设计方案,本研究在自主研制的Anrot-I 型AGV 平台上进行实验。双核控制器的实物示意图如图6 所示,操舵型AGV 跟踪弧线时的实验如图7 所示。具体实现AGV 导航和运动功能的程序模块主要有以下几种:

(1)图像处理算法(A8)。从CMOS 摄像头采集图像并提取路径信息,能够得到路径的距离偏差与角度偏差量;能识别道路分叉口,并提取转弯信息。

(2)上层信息决策算法(A8)。根据3 个信息源决策产生给下层CPU 发送的指令序列。

(3)基于RTOS 的任务同步算法(M3)。基于RTOS 的程序编写中,将各个相对独立的功能划分为不同的模块,称为任务。首先,不同的任务之间需要有先后的次序,任务之间的同步与通讯是通过OS 提供的API 实现的;其次,重要的任务需要较高的优先级,以保证系统设计的可靠性与安全性;再次,每个控制周期都需要保证执行特定的任务。例如从上层CPU 发送来的控制信息周期是100ms,则实现运动控制的周期就需要小于100ms,才能满足最好的实时性指标。

(4)路径跟踪算法(M3)。本研究根据从上层控制器接收到的“直线跟踪”、“弧线跟踪”和“岔路转弯”信息,选择不同的算法。算法的输入信息是速度设定值、当前路径的曲率大小、距离偏差量和角度偏差量,输出信息是控制前舵轮的转角和后驱轮的速度。

(5)后驱轮控制算法(M3)。本研究根据后轮反馈的速度信号,产生输入后轮电机驱动器的控制电压。

图6 双核控制器

图7 Anrot-I 型AGV 小车

为了进行基于视觉导航的AGV 路径跟踪实验,本研究在地面上设置了黑色的标示线,含有直线与弧线的不同路段。在一定的初始位姿偏差状态下开始路径的跟踪。试验中控制器记录的AGV 相对于路径的位姿偏差如图8 所示。

图8 路径跟踪实验

实验结果显示,本研究研制的操舵型AGV 能够在较大初始位姿偏差的情况下快速、协调地跟踪路径,在直线路段能达到近似零偏差的稳定行驶状态,该状态保持在预设最大允许角度偏差(3 °)和距离偏差(10 mm)之内。在路径变化导致偏差突变的情况下,该控制器能自动开启车身调整周期,重新返回到正常的路径跟踪状态。

5 结束语

笔者通过实验证实了本研究设计研制的基于ARM Cortex 系列高性能嵌入式SoC 的双核控制器对操舵型AGV 具备有效的控制性能。在视觉导航的实验中,Cor⁃tex-A8 内核的S5PV210 处理器以低能耗实现了实时运行图像处理算法,Cortex-M3 内核STM32 处理器能高速、稳定地运行实时操作系统,实现AGV 底层的可靠执行。输入/输出接口板能够兼容常见种类的车载传感器,并使它们与控制板电气隔离,增强了系统的适应性和稳定性。

(References):

[1]刁智华.ARMv7 的Cortex 系列微处理器技术特点[J].单片机与嵌入式系统应用,2007(4):12-16.

[2]陶友龙,赵安璞,陈海波.基于ARM Cortex-M3 核的SoC 架构设计及性能分析[J].电子技术应用,2012,38(8):53-55.

[3]李西锋,魏生民,闫小超.视觉引导AGV 的数字图像处理方法研究[J].科学技术与工程,2010,10(10):2515-2519.

[4]林文森,李钟慎,洪 健.基于ARM 嵌入式图像处理系统设计与实现[J].福州大学学报:自然科学版,2008,36(Z1):13-16.

[5]彭一准,原 魁,王 辉.具有友好人机界面遥操作移动机器人的合作控制[J].计算机工程与应用,2006,8:212-214.

[6]陈满儒,张大伟.基于人机界面发展模式的研究及其应用分析[J].包装工程,2007,28(4):113-115.

[7]关 海,冯大政.μCOSⅡ在基于Cortex-M3 核的ARM 处理器上的移植[J].电子科技,2009,22(1):69-74.

[8]桂 欣.基于ARM 的无刷直流电机控制系统设计[J].信息系统工程,2012(3):33-34.

[9]怯肇乾,吴金垒.基于Cortex-Ax 的Android 硬体操作软件设计[J].单片机与嵌入式系统应用,2012,12(5):36-39.

[10]赵德云,杨厚华,王 哲.基于模糊神经网络控制的AGV避障路径规划仿真[J].机电工程,2010,27(9):27-31.

猜你喜欢
人机界面驱动器内核
强化『高新』内核 打造农业『硅谷』
藏起驱动器号确保数据安全
基于嵌入式Linux内核的自恢复设计
Linux内核mmap保护机制研究
压电陶瓷驱动器的迟滞特性
微生物内核 生态型农资
CBTC系统车载人机界面的设计与实现
基于PLC与人机界面的经编机电子横移控制系统研究
CTCS-3级列控车载人机界面的系统设计与实现
SiC基和Si基永磁同步电动机驱动器的比较