1. 引言
长期以来,机器人的研究就备受关注,越来越多的机器人投入到日常生活中。普通机器人可以根据是否可以移动分为两类:可移动机器人和固定机器人。固定式固定机器人适用于实现相对稳定和重复的实际操作,并且广泛用于加工厂生产线。近年来,随着人工智能技术的发展,促进了视觉技术普及,以及激光雷达和深度相机的应用,促使移动机器人获得了快速发展的趋势。移动机器人在国防工业、地震灾区的救援及重建等方面得到了大量应用,并衍生出了许多其他公共功能 [1] 。可变形机器人,不仅可以完成当前工作,也可以通过变形完成其他工作,甚至可以通过解体,同时完成多个工作。此外,机器人使用的是电力为主导的清洁能源,而非其他机器使用的传统燃料,对保护环境、节能减排能做出一定贡献。同时,其搭载的可拆卸模组,维修更换方便,能一定程度的节约运营成本。可变形机器人使用了嵌套模组,未来应用广泛 [2] 。在和平年代,可变形机器人底盘可搭载工程机械爪模组等进行工程建设,可搭载收割和储存模组等进行农业收割,可搭载承重平台模组进行货物搬运。非常时期,可变形机器人底盘可搭载雷达、地对空导弹、无人机等武器投入战场,与其对接的移动机器人也可完成电力补充、弹药补充、牵引等工作。因此,开发一款能胜任多项工作的机器人显得极其重要,既可以大幅提升机器人的工作效率和环境适应能力,又可以极大程度的解决机器人因不能胜任某项工作而暂时闲置所造成的资源浪费。
2. 控制系统总体设计
2.1. 设计目标和总体方案
本文设计是通过比较各类移动机器人在移动方面的优缺点最终确定的。本文设计的目标是设计一个可变形机器人控制系统,选择适当的控制方式和算法,以确保系统反应快速、稳定可靠。本文设计系统是一台移动中的小车和另外一台静止的小车对接,设计稳定的电路和可靠的机械结构,大幅提升对接成功率。
设计目标:
1) 此系统能自动完成对接工作,并在对接完成后切换为手动控制;
2) 在进行对接时,能确确保移动小车不偏离预定轨道运行;
3) 在本设计中,要求硬件部分和软件部分能正常运行,并相互配合完成指定工作 [3] 。
图1为系统的总体设计方案。

Figure 1. Overall block diagram of control system
图1. 控制系统总体框图
2.2. 系统结构设计
电磁信号放大器中的电感可以获取跑道上特定频率的电磁线电磁强度,从而小车可以识别跑道的路径,给小车巡线移动导航 [4] 。单片机STM32F103作为整个系统的主控制器,主要对系统所需要的数据进行采集如角度、角速度、车速等,并通过各种算法对这些数据进行处理,最终实现平衡车可自动巡线。STM32F103的PWM输出通过隔离芯片74LS224DW将PWM信号输出到半桥驱动电机控制模块,然后操作两个步进电机。隔离芯片可防止电动机对主控制芯片产生负面影响。开关电源系统软件的功能是通过3.3 V稳压电路为电磁感应信号放大器提供9 V开关电源,其5 V稳压电路为主控制芯片以及隔离芯片供电。隔离芯片执行12 V变压以作为伺服电动机的电源。
3. 硬件模块设计
基于增强型51单片机的可变形机器人主要硬件模块包括:电源模块、单片机最小系统、晶振电路、电磁信号放大电路、驱动模块。由于步进电机特殊的控制方式,导致电动机的运行必须有两个控制模块:第一是决定换向顺序的控制电路,第二是参与控制电机输出功率的换相电路,它们共同组成了步进电机的驱动电路 [5] 。
3.1. 电源模块
直流可调电源是电子信息技术中的通用设备之一,已广泛应用于课堂教学,科研等行业。51单片机系列产品使用DC5V电源,如图2所示。
3.2. 单片机最小系统
STM32是一系列微控制器产品的通用名称。当前此系列中,已经包含了多个子系列,分别是:STM32小容量产品、STM32中容量产品、STM32大容量产品和STM32互联型产品。
STM32F103资源分配见表1:

Table 1. STM32F103 resource allocation table
表1. STM32F103资源分配表
单片机及其微机的复位,微控制器的设置和复位是将电源电路复位到规定的状态。在一般情况下,微控制器将电源电路(例如状态机)复位的功能会复位为空状态。当复位MCU时,某些内存和存储芯片的机器及设备会预先加载制造商的预设值。
3.3. 电磁信号放大电路
LM386是美国国家半导体公司生产的音频功率放大器,主要用于低压消费品。为使外围元件最少,电压增益内置为20。但是,通过在引脚1和8之间增加一个外部电阻器和电容器,可以将电压增益调整为任意值,最大为200。输入端受参考影响,输出端自动参考电源电压的一半。在6 V电源电压下,其静态数据功耗仅为24 mW,这使得LM386非常适合于可充电电池供电的系统 [6] 。
3.4. 驱动模块
因为可变形机器人全自动巡迹,所以需要的电机必须具有较小的偏差,并且偏差不能累加。减速步进电机就很适合设计。简而言之,步进电机是一种机械结构,可以将由诸如微处理器之类的操作模块推动的差分信号转换为偏移量,相应所转动的角度也被称为“步距角”。步进电机有以下优点:
1) 步进电机的精度不是累积精度,其值是每步旋转角的3%至5%;
2) 控制方便,步进电机是以“步”为单位旋转运动的,这个数字特征是非常重要,非常容易识别;
3) 每走一步所转动的角度不受电压电流等外界因素的影响,且在任何方式运动过程中不会丢失一步。本文所用驱动电路,如图3所示。
当使用步进电机释放一些由连续列组成的操作单脉冲时,它就可以根据提供的数字脉冲信号来转动一定角度。常用的通电方式有:单相绕组通电:A-B-C-D-A,双相绕组通电又分为四拍和八拍,电机的四拍通电方式为AB-BC-CD-DA-AB,八拍A-AB-B-BC-C-CD-D-DA-A。
4. 软件设计
本设计采用的是STM32F103单片机,它是控制这个系统的最终核心,在整个软件设计的过程中,最主要就是以单片机为核心,以各模块为组成部分,系统经过选择控制方式,信号采集,电压差比较,单片机输出数字脉冲信号,最终由步进电机以及机械结构来执行相应的操作。
4.1. 步进电机控制程序
函数功能:增量PI控制器;入口参数:编码器测量值,目标速度;返回值:电机PWM [7] 。根据增量式离散PID公式:
(1)
式中,e(k)代表本次偏差,e(k − 1)代表上一次的偏差。以此类推,PWM代表增量输出,在速度控制闭环系统里面,只使用PI控制。
(2)
即有以下代码
Bias=Encoder-Target; Pwm+=Velocity_KP*(Bias-Last_bias)+Velocity_KI*Bias;
if(Pwm>7200)Pwm=7200;
if(Pwm<-7200)Pwm=-7200;
Last_bias=Bias;
4.2. 归一算法程序
由于各个电感的性能特性存在很大差异特别是电压波动范围相差较大,因此为了给算法制定统一的标准给数据处理带来方便对A/D传感器采集来的信号做归一化处理。此设计中的具体方法是通过公式将各传感器电压值都处理成相对该传感器最大电压和最小电压使得传感器输出电压值都保持在0到100之间。归一化之后的传感器数据横坐标表示距离中心线的距离单位是毫米,纵轴是电压值 [8] [9] 。
(3)
即有以下代码
Sensor_Left=Get_Adc(11);
Sensor_Right=Get_Adc(13);
Sensor_Middle=Get_Adc(12);
sum=Sensor_Left*1+Sensor_Middle*100+Sensor_Right*199;
Sensor=sum/(Sensor_Left+Sensor_Middle+Sensor_Right);
假设在不需要归一化的情况下,距离中线零偏差时,电感A的值是1000,而当磁道偏移20 cm时,电感A值是200。当磁道电源变化时,例如,输出电流由100 ma变成了120 ma,这时,电感A在零偏差的值和偏离磁道20 cm时候的值都会变大,设分别变成了1200和240,这时设定的阈值会出问题。例如,如果电感A的值不大于200 (偏差20 cm)判定丢线,电流增加后,偏差为20 cm,A电感值为240,超过200,但是无法判丢线,车辆路径就会发生相应变化(阈值判定是不是丢线,具体看个人算法)。如果用归一化处理,则根据上述示例的数据信息,当当前量为100 ma偏差时,记录偏差,将电感A的“最大值”记录为1000,把车移到偏差为20 cm时,记录下“最小值”为200。这时,归一化公式算出值为0到1,即“归一”。偏差为零时,电感A归一值为1 ((1000~200)/(1000~200)),偏差20 cm时,电感A归一值为0 ((200~200)/(1000~200)),这时,如同前例,只需要设置阈值的归一值为0,则判定丢线,那么在赛道电源电流是120 ma时,采用同样的处理,在偏差为20 cm的时候,电感A归一值也为0 ((240~240)/(1200~240)),即电源变化对阈值已经没有影响。
4.3. 自动/手动控制切换程序
按下复位键后,使能ADC1通道时钟启动,设置ADC分频因子6,72 M/6 = 12,ADC最大时间不能超过14 M。接下来设置模拟通道输入引脚,模拟输入引脚。复位ADC1,将外设ADC1的全部寄存器重设为缺省值,此时ADC工作模式:ADC1和ADC2工作在独立模式。分别对应模数转换工作在单通道模式和模数转换工作在单次转换模式,并且转换由软件而不是外部触发启动。使ADC数据右对齐,按照顺序进行规则转换的ADC通道的数目,并根据ADC_InitStruct中指定的参数初始化外设ADCx的寄存器。确定使能指定的ADC1,使能复位校准,等待复位校准结束。开启AD校准,等待校准结束。
5. 实物测试及分析
首先,给小车下载程序。准备好FLYMCU烧录软件,相应的USB转TTL模块CH340G的驱动。安装成功后可打开设备管理器查看,可以看到驱动已经安装成功,否则会有红色感叹号。接下来,将数据线连接STM32F103系统板,进行ISP软件设置。打开FLYMCU软件并做相应设置。设置完成后,点击开始编程,程序开始下载。
程序写入完成之后,就能对可变形机器人进行组装和调试。可变型机器人主要分为一台移动的小车和另外一台静止的小车两个部分,如下图。开始测试。首先插上红色插头连接电池通电,电源指示灯亮起红色,系统正常通电。此时,蓝灯开始闪烁,代表单片机正常启动,如图4所示。
将机械手六个舵机与2.4 G信号接收器连接,并打开2.4 G遥控器完成配对。使用铜线在地上铺设电磁导轨,并用电工胶布封牢。使用通电的正弦波信号发生器夹住铜线两端,电磁导轨铺设完毕。

(a) 移动的小车 (b) 静止的小车
Figure 4. The main components of the deformable robot
图4. 可变形机器人主要组成
将设为ELE电磁巡线模式的移动小车放在电磁导轨上,小车沿着电磁导轨快速移动,直至和静止的小车相遇停止。此时,按下STM32板上的RESET按键,此时小车被重置,模式选择界面弹出。按下user按键确认,进入蓝牙控制小车模式。此时,操作机械手对准移动小车的电磁传感器前端,关闭2.4 G遥控器,根据遥控器写入的程序,六个舵机不断电,保持在预设角度,机械手牢牢钩住移动小车,两车完成对接,如图5所示。使用手机APP遥控小车,可变形机器人对接完毕一起移动 [10] 。

(a) 设定模式 (b) 放于导轨上
(c) 开始电磁巡线 (d) 对接完成
Figure 5. Docking process of deformable robot
图5. 可变形机器人对接过程
在对接过程中,小车在过弯时巡线路线比较抖,经过多次分析排查,确定其和车速、弯道角度、电磁传感器架设高度均有关系。通过增高传感器高度、增加弯道半径,以及更改程序降低车速,抖动问题得到极大缓解。实物测试结果显示:本文所述可变形机器人功能正常方案可行。
6. 结论
本文从控制系统的总体设计、硬件模块设计、软件设计、嵌套模块设计等方面出发,完成了对可变形机器人控制系统的设计。首先指定设计目标,使一台移动中的小车和另外一条静止的小车对接,并绘出总体设计框图。其次,确定系统结构设计由软件设计和硬件设计两部分组成,软件设计以单片机为核心,接受脉冲信号,通过算法判断并发出指令驱动控制模块完成追踪。硬件设计以可变形、自动为核心。软硬件设计完成后通过统一调试,若有故障则需修改后继续调试,并通过实物测试后,可变形机器人功能正常方案可行。