标题：教学机器人
引言
近年来随着人工智能技术、计算机技术等相关技术的发展，对智能机器人的研究越来越多。在教育领域,许多院校已在学生中开设了机器人学方面的有关课程。为了满足机器人学方面的有关课程教学示范和实验教学的需求,我们研制开发了全方位的轮式移动机器人，可以作为各种智能控制方法（包括动态避障、群体协作策略）的良好载体，同时又可以方便的构成网络化的分布式系统，开展多智能体的调度、规划等研究。本文全面介绍了这种移动机器人的控制系统体系结构，包括传感器、通讯、伺服控制、软件构成等，并给出了实验结果，证明了系统的可行性。
机器人控制系统的硬件方案选择与设计
本机器人控制器采用“主控器+伺服控制器”的形势。伺服控制器负责完成单关节的位置闭环，在机器人控制中，要求运动平稳无超调，所以伺服控制器的运算任务很繁重。主控制器主要完成除伺服控制器所作的位置闭环以外的所有工作，包括上位机命令接收，机器人状态监视、显示，根据一定的控制算法实现空间轨迹插补以及传感器信息综合处理等工作。所以主控制器的任务也很繁重。
主控制器选择在移动教学机器人系统中, 应用工业计算机作为其控制系统核心成本高，体积大，功耗大，而采用8位或者16位单片机，又存在硬件资源有限、运算和处理速度有限的困扰，很难应用模糊控制等智能控制理论。 S3C44B0X是SAMSUNG公司推出的一个基于ARM7TDMI核的低功耗的高性价比的32位处理器，它可以在60MHZ频率下运行，采用3级流水线结构 [4] ，处理能力大大超过8/16位的单片机，接近PC机，可以支持大屏幕的液晶显示，提供功能强大的图形用户界面，另外基于ARM的控制器可以内嵌实时操作系统，克服了传统基于单片机的控制系统的软件“前后台”形式造成的实时性差的缺点[1][5]。S3C44B0X有8个外部中断,两个带有握手协议的UART接口，另外具有SPI和I2C接口、RTC和5个16位的PWM控制器、8路10位AD以及LCD控制器等[4]。它丰富的模块很大程度上可以减少控制器的体积，增加系统的可靠性。控制系统硬件结构如图1所示（系统中共有3个伺服驱动单元和电机，限于篇幅只画了一个）。包括由S3C44B0X构成的主控制器，由LM629构成的伺服控制部分，通过UART形成的通讯电路、由LMD18200构成的功率放大电路、直流电机构成的执行机构、传感器电路等。
位置伺服模块在机器人控制中，以单片机为核心构成位置闭环或者半闭环控制系统,不仅外围电路结构复杂,而且软件中轨迹插补运算比较烦琐，难取得好的效果。而采用美国国家半导体公司生产的可编程全数字运动控制芯片LM629可以解决上述问题。它具有32位的位置、速度和加速度寄存器，内置PID算法,其参数可以修改；支持实时读取和设定速度、加速度以及位置等运动参数，内置的梯形图发生器能够自动生成速度曲线,平稳地加速、减速，支持增量式光电码盘的四倍频输入，适用于由正交增量式光电编码器提供位置反馈的交直流伺服控制系统，能完成高性能数字运动控制中的实时计算工作（插补周期341微妙），可以方便的与桥式功率放大电路构成位置或速度闭环系统。LM629通过数据总线和控制总线与主控制器接口，其原理图如图2所示，主控制器将关节转动的角位移、角加速度等命令参数通过总线传递给LM629，LM629在接到S3C44B0X的指令后可以按照设定的控制方式（P、PI、PID）完成位置闭环控制。它通过500线的增量式码盘的A、B、Z信号构成位置反馈环节。LM629每个伺服周期进行一次位置、速度的检查，如果未达到指定的位置或速度，则继续运动或者加速，将要达到指定位置时会自动的按照设定的加速度进行减速，完成关节空间的位置闭环控制。这样不仅克服了运动超调的现象，而且使得系统加减速时运行平稳。
功率放大模块系统的功率放大部分以LMD18200为核心。LMD18200是美国国家半导体公司推出的专用于直流电动机驱动的H桥组件，同一芯片上集成了四个DMOS管，组成一个标准的H型驱动桥，外接很少的器件就可以完成直流电机的驱动。它瞬间驱动电流可达6A，正常工作电流可达3A，无“shot-through”电流。LMD18200提供双极性驱动方式和单极性驱动方式[4]。由于双极性电流波动大，功率损耗较大，所以系统中采用单极性驱动。
具体的接口电路如图2所示（本机器人采用3个全方位正交轮，通过3个轮子配合，机器人可以完成任意方向的运动，限于篇幅图中只画出一个轮子的相关电路），LM629根据PID控制算法在PWM引脚输出占空比变化但频率固定的PWM信号，通过光电隔离加到LMD18200的5脚，这个PWM信号的占空比通过LMD18200可调节电机速度，LM629的DIR脚的高低电平可控制电机的正反转。为了减少功率电源部分对控制器部分的影响，这两个信号的连接都通过了光电隔离器件TLP521，如图2所示。引脚2、10接直流电机电枢，正转时电流的方向从引脚2流到引脚10；反转时相反。此电路驱动功率大，稳定性好，实现方便，体积小，安全可靠。
通讯模块通讯模块使用S3C44B0X的UART1连接一个无线通讯模块，主要从上位机接收世界坐标系的位置、速度指令。由于S3C44B0X的UART可以在高达115200波特率下正常工作，并且具有独特的多字节的FIFO结构，当采用中断方式接受数据时只有满足触发深度时才会产生数据可用的中断，很大程度上可以减少处理器响应中断的次数，提高了处理器运行效率。UART硬件上具有监视“溢出错误、奇偶错误、帧错误”等错误的功能，并且提供相应的中断向量。实时性好，软件编写方便。
传感器模块和液晶模块机器人上安装的4个超声传感器模块用来探测周围2米内的障碍物信息。有单独的处理器进行数据处理，通过总线接口挂接在S3C44B0X的总线上。液晶模块主要用来显示系统的一些运行状态，也是通过总线接口连接在主控制器上。在此限于篇幅不做赘述。
系统的可靠性和低功耗设计措施为了增加系统的可靠性，减少功率电路对弱电的干扰，系统中使用2组不共地的电源。S3C44B0X最小系统使用的3.3V电源和光电编码器使用的5V电源为1组，24V的功率电源以及LMD18200用的5伏电源为一组。两个电源之间的信号传输通过光电隔离器件TLP521隔离。编码器信号以及LM629的时钟信号都经过施密特触发器整形。另外使用了S3C44B0X本身的WDT模块。
为了减少系统的功耗，主要采取了以下措施（1）：主控制器将未使用的外围模块如SPI、定时器1、I2C等关闭；（2）：主控制器控制机器人在到达指定位置而没有新的任务（通过串口接收）之前控制LMD18200进入刹车状态，这时LMD18200脚4置逻辑高电平、脚5置逻辑低电平，H桥中所有晶体管关断，每个输出端只有约1.5mA的偏流；（3）：主控制执行完（2）中的步骤后进入空闲模式，其各个寄存器的值可以保存，当有新的中断产生时将唤醒主控制器进入正常工作状态。
为了增加系统的可靠性，利用LMD18200的保护功能设计了系统过流过热的保护。LMD18200内部具有过流保护的测量电路，在LMD18200的8脚输出电流取样信号，典型值为377 &micro;A/A[4]。接一个对地电阻R2，通过电阻上的电压和给定的电压比较来监测输出过流情况。LMD18200提供温度报警信号，芯片结温达145℃时，LMD18200的9脚变为低电平。这些保护信号通过光电隔离以后传输给S3C44B0X，实现过热过流的监视。
控制系统的软件组织
软件平台是基于移植到S3C44B0X的实时多任务操作系统UC/OS II。它是基于优先级、抢占式的实时内核,主要提供了任务管理、进程调度、任务间通信及内存管理等功能,具有源代码公开、可移植性好等特点,采用全占先多任务机制,可支持56 个用户任务,其中断管理功能提供了深达255层的中断嵌套。通过uC/ OS II 进行多任务的管理,任务处于休眠、等待(挂起) 、就绪、运行、中断5种状态之一[5]。它避免了传统的前后台方式下实时性差、任务混乱及多任务调试困难等缺点[1,7]。此系统中有如下4个用户任务，Task1：接收上位机命令；Task2：轨迹规划；Task3：系统状态监视，Task4系统状态发送和显示。任务的优先级是依次降低的。任务之间通过邮箱完成信息的交换与资源的共享。主控制器通过Task1接收上位机的位置和速度指令。由于上位机发送指令是随机的，而下位机除了接受上位机的指令外还要处理其它的事情，为了保证运动过程中命令的不丢失，采取了两种措施：首先将该任务设置为优先级最高的用户任务，另外主处理器允许UART1的接收中断，并根据指令的长度将接收缓冲区的触发深度设置为12字节。（根据需要，此处上位机发送给下位机的指令每帧长度为12字节，S3C44B0X的UART接收触发深度可以软件编程设置为4、8、12、16字节）。当上位机不发送指令时，该任务处于挂起状态，当上位机发送12字节命令时，将激发UART中断。在该中断服务程序中唤醒Task1进入就绪态。由于它具有最高的优先级，所以可以马上执行，从接收缓冲区中接收上位机的指令。这样避免了单个字节就激发中断而导致主处理器频繁的响应中断的情况和没有实时操作系统的前后台调度方式中命令丢失的情况。Task2根据传感器提供的机器人的当前位置信息和障碍物信息以及接收到的上位机指令进行世界坐标系中的总体任务规划、机器人运动学逆解，生成下一个节拍每个关节应该转动的角位移、转动的角速度，然后通过总线写到相应的LM629的寄存器中，这个任务的优先级仅低于Task1，运行周期100毫秒。Task3主要处理传感器的信息，运行周期100毫秒。包括通过LM629的状态寄存器获得当前编码器的信息，再经过运动学计算得到机器人当前位置信息，通过超声传感器获得当前机器人周围障碍物的信息，通过LMD18200获得的功率放大器的过热过流信息。另外下位机的一些运行状态，如当前位置、障碍物信息等也需要发送给上位机同时送液晶模块显示，这个由Task4来完成，这个任务具有最低的优先级，运行周期300毫秒。
系统的软件在ADS1.2下调试通过。由于ARM7TDMI中没有MMU（内存管理单元），所以其操作系统和用户程序要编译在一起，最后生成一个文件。在这一点上不同于在DOS或Windows下的概念，它的操作系统和用户程序是分开的，而且可以由多个应用程序同时存在于主机中。另外在ADS1.2下可以使用c语言进行软件开发，并且可以使用数学库，缩短了软件开发周期。
实验结果
采用上述的软硬件设计方法，我们设计了用于检验各类控制算法的教学机器人平台，并在上边做了系列的实验，图4是上位机控制机器人从世界坐标系的（0，0）点运动到(3m ，2m)，然后以该点为圆心，以1.5m为半径，开始圆周运动，圆周运动的起点和终点为（1.5m，2m）。图中虚线是理想轨迹，黑线是实际轨迹。移动机器人的实际轨迹偏离理想轨迹的最大误差约10cm，但是达到了位置精度的要求。误差主要面是由于轮子对的地面的相对滑动以及机械精度引起。该实验证明了系统的可行性。 
结束语
ARM处理器的丰富的硬件资源以及高速流水线结构给各种智能控制算法提供了可能；另外采用μc/osⅡ操作系统，增强了系统的实时性，避免了前后台方式下任务调度困难，实时性差的缺点。总之，采用32位的ARM处理器和实时操作系统μc/osⅡ来构成机器人的控制器，具有体积小，功耗低，实时性好、处理速度远远超过单片机等优点，可以取得很好的效果。