摘 要: 针对当前以DSP为机器人控制器中的串口数量有限、通信抗干扰能力差等问题,提出了基于CANopen协议的轮式机器人运动控制系统,并给出其在DSP上的应用实现。首先介绍了机器人运动控制方法,然后介绍了CANopen协议在DSP上的具体实现,最后在实际机器人系统中进行测试。实验结果表明,基于CANopen协议的轮式机器人控制系统可以满足机器人控制的实时性和稳定性。
关键词: 轮式机器人;运动控制系统;DSP;CANopen
CAN总线是一种串行通信协议,具有较高的通信速率和较强的抗干扰能力,现已被广泛地应用于工业自动化、交通工具、医疗器械、机械制造、楼宇控制、自动化仪表等众多领域。CANopen协议是由CiA(CAN in Automation)组织在CAN标准协议CAN 2.0协议、国际标准ISO 11898定义物理层和数据链路层的基础上监督开发出的一种高层协议,是一个开放的、标准化的应用层协议,在各种控制系统中均有着广泛的应用[1]。
当前,基于DSP的机器人控制系统中仍存在许多使用串口实现机器人执行机构(如电机)的驱动。这种方法存在一些缺点,如当机器人执行机构(即电机)数量较多时,DSP串口数量会不足,需要扩展串口。而串口通信速率较慢且抗干扰性不强,且串口通信无法实现多电机的同步控制。针对这些问题,本文主要提出了基于CANopen协议的轮式机器人控制系统,并给出其在TMS320F2812 DSP上的具体实现。本文首先介绍了两轮差动式移动机器人的动力学模型、基于双码盘的机器人运动控制方法,然后介绍了CANopen协议在机器人运动控制系统的应用及实现,并在实际机器人系统中验证了该控制系统的可行性、实时性和稳定性。
1 机器人导航
1.1 机器人动力学模型
图1是典型的两轮差动式机器人简化模型。其后轮是两个同轴的驱动轮,每个轮子由单独的电机驱动;前轮是一个起支撑作用的万向轮,保持车体稳定。设机器人的质心为底盘中轴线上的点M,两驱动轮之间间距为L,驱动轮半径为r,左右驱动轮电机角速度分别为?棕l和?棕r,机器人自身角速度为?棕,机器人线速度为v,则其运动学方程为[2]:
2.1.2 CANopen通信机制
CANopen通信模型定义了4种报文(通信对象):管理报文NMT、服务数据对象SDO、过程数据对象PDO以及特殊功能对象。
NMT用来传递主节点对整个网络系统的管理信息。每个CANopen从节点都有初始化、预操作、操作和停止4个状态。NMT负责由组节点控制从节点在各个状态间的转换,如图3所示。SDO用来传递网络系统中的配置信息。PDO用来实施传送过程数据信息。特殊功能对象用于同步、应急指示和时间标记对象。
2.2 硬件设计
本文主要研究基于CANopen协议的轮式机器人控制系统在DSP上的实现,系统结构如图4所示。该系统使用TMS320F2812 DSP作为主控芯片,使用3个ELMO公司生产的Harmonica型伺服电机驱动器以及3个MAXON公司生产的伺服电机作为机器人运动的动力系统,其中两个用于底盘运动控制,一个用于提升机构运动控制。DSP与ELMO电机驱动器之间通过CAN总线及CANopen协议进行通信,主要交换控制命令以及码盘读回的信息。
CAN总线上的信号使用差分电路进行传送,两条信号线被称为CAN_H和CAN_L,静态时均为2.5 V左右,这时的状态表示逻辑1,用CAN_H的电平比CAN_L的电平高的状态表示逻辑0。此时,CAN_H的电平为3.5 V,CAN_L的电平为1.5 V。
由于TMS320F2812芯片内已集成了CAN总线控制器eCAN模块,所以外部CAN总线的电路设计较简单,只需将TMS320F2812的CANTX、CANRX引脚连入CAN总线中的CAN_H和CAN_L即可。但是eCAN模块的引脚电平为3.3 V,为了使其电平符合高速CAN总线的电平特性,在eCAN模块和CAN总线之间增加CAN的电平转换器件SN65HVD230,同时,总线高低电平之间需要跨接120 ?赘的终端匹配电阻。硬件电路图如图5所示。
2.3 软件设计
电机控制的通信流程如图6所示。首先,通过ELMO自带的配置软件将各个电机驱动器的节点配置完成并检查电路无误后上电,DSP经过相关初始化后等待各个节点返回的boot-up信息,等待完毕后通过SDO写入各个节点的参数配置并将各节点的状态转变为操作状态,之后通过PDO获取相应信息或者发送控制命令。
2.4 实验验证
首先验证电机的同步启动问题。为了能更加清晰地观察多电机控制效果,在给每个电机发送控制命令之间引入较大的时间间隔,如5 s。当用串口控制时,可以清楚地观察到一个电机是在另一个电机启动后5 s才启动的,而用CAN总线和CANopen协议控制时,虽然每个电机接收到启动命令具有5 s的间隔,但是在SYNC同步命令发送到总线之前,各个电机均不会启动,只会保存接收到的信息,等待DSP(即主站)发送统一的同步命令或其他更新信息。当每个电机的驱动器接收到SYNC同步命令后,所有电机同时启动。从这点上可以看出,基于CAN总线和CANopen协议的电机控制系统具有串口控制无法比拟的同步优势,这在机器人控制中是十分重要的,虽然在实际情况中,每个电机控制命令之间的间隔较短,但是具有同步控制的电机控制系统显然将会具有更高的控制精度。
再验证控制算法以及整个系统的可行性。将机器人置于坐标零点,角度偏差为0°,然后启动它追踪一条预定义的路径,该路径由两条直线和3个半圆构成,如图7所示。该图中设定路径以实线表示,实际运动路径以点线表示,在最大速度为1 m/s的实验中,机器人对路径的跟踪效果良好,只是在路径的曲率变化处有一定的偏移,全局过程中偏移最大量仅12 cm,且最终的定位精度可以达到1 cm以内。
本文首先介绍了两轮差动式移动机器人的动力学模型以及基于双码盘的机器人运动控制方法;然后介绍了CANopen协议在以DSP为主控芯片的机器人运动控制系统中的应用及实现,其中详细介绍了部分软硬件设计;最后通过实际效果验证了该控制系统的可行性、实时性和稳定性,为机器人的实时同步运动控制提供参考。
参考文献
[1] 林茂,贾凯,王金涛,等.CANopen协议在机器人控制器中的应用[J].微计算机信息,2010,26(3-2):152-154.
[2] 王金.双码盘定位机器人的位姿辨识算法[J].硅谷,2010, 12:53.
[3] 李纪文.基于陀螺仪的竞赛机器人嵌入式控制系统的研究[D].成都:电子科技大学,2008.
[4] Elmo Motion Control. Elmo motion control CANopen DS 301 implementation guide[Z]. 2003.
[5] Elmo Motion Control. Elmo motion control CANopen DSP 402 implementation guide[Z]. 2003.