基于Robei EDA工具的多功能可重构机器人设计*
*本项目获得“2021全国大学生集成电路创新创业大赛”华东赛区一等奖,全国总决赛二等奖。
本文引用地址:http://www.amcfsurvey.com/article/202307/448979.htm0 引言
随着自动化技术以及计算机技术的发展,机器人技术正从传统的工业制造领域向医疗服务、教育娱乐、勘探勘测等领域迅速扩展,适应不同领域需求的机器人系统不断深入研究和开发。通过对智能家居的分析发现,市面上的机器人可分为代替人类完成家务的功能机器人、具有娱乐性的陪伴机器人和管理智能家电的助理机器人,种类繁多但是功能较为单一;多基于单片机或基于集成系统设计,不具有可重构性和良好的实时性,不能够满足灵活多样的机器人需求且成本过高,而可重构机器人则可以根据任务需求更新其硬件构型[1]。
本团队旨在通过一款机器人实现环境监测及灾难预警、安保防御及智能搬运等多种功能,有效保障居家安全,并提供便利服务。随着中国老龄化的到来,独居老人人数增多,以及当今社会独居青年比例越来越高,对能保证基本生活环境的机器人的需求也会越来越多。相比上述市面上的功能型、娱乐型、助理型的非必需高档奢侈类机器人,所设计的机器人有更高的市场潜力。
1 架构设计
本设计的架构基于Robei EDA工具设计(注:RobeiEDA是一款可视化的跨平台EDA设计工具[2],能够大大提高FPGA 的开发效率),分为中心处理部分、传感感知部分、电源电路部分、机械运动部分、网络传输部分、上位机部分、显示器部分及遥控控制部分。架构框图如图1 所示。
图1 架构
逻辑流程图如图2 所示,设计的机器人运行时可以进入两种模式(自动和遥控)。进入系统前首先进行指纹识别,如果指纹正确则进入系统,如果指纹未录入指纹传感器的存储器则无法进入系统,在进入系统后可以通过刷未录入指纹的手指对系统上锁,此时全机除显示屏和指纹以外的模块全部复位,待按上正确的指纹时才进行解锁。
整机原理图如图2 所示。
图2 整机原理
2 控制电路
2.1 遥控部分
遥控部分分为手柄遥控和语音控制两个部分,分别通过手柄和语音对机器人进行实时控制。
2.1.1 手柄遥控
本模块与外部指纹模块与LCD HMI 串口显示屏模块相连,当指纹输入正确时,手柄遥控模块复位解除,机器人所有传感器均开始工作,同时显示屏显示开机动画进入主程序。PS2 手柄以SPI 的通信协议与FPGA 通信,使用者可以通过手柄按键和摇杆控制机器人移动、机械臂抓取运动以及对电磁炮超级电容进行充放电、放电发射金属炮弹,其工作流程图如图3 所示。
图3 手柄遥控流程
2.1.2 语音控制
语音控制部分包括串口模块、电机驱动模块、舵机驱动模块和电磁炮驱动模块;该部分的核心传感器件是LD3320语音传感器,通过SPI协议与FPGA通信。其工作流程如图4 所示。
图4 语音遥控部分的流程
2.2 自动部分
2.2.1 自主避障模块
该模块由4 个超声波传感器控制和8 路PWM 波直流电机驱动控制组成,4 个超声波传感器分别位于机器人的前后左右部分,通过测量判断机器人各个方向障碍物相对于机器人的距离来控制电机运动,实现机器人的自主避障。
2.2.2 自动循迹模块
该部分由FPGA 对时序驱动CCD 传感器进行曝光采集赛道信息,经计算得到赛道中点相对于机器人的位置坐标,将该位置与像素中点相减得到赛道的偏移值,将偏移值代入PID 模块作为误差进行运算,为机器人输出PWM 波,控制机器人的闭环循迹。
3 机械结构
本作品的机械结构主要由以下部分组成:机械臂部分、机器人运动部分、机器人轮胎和电磁炮部分。
3.1 机械臂部分
本作品采用三自由度机械臂,由机械部件和三个舵机组成,舵机的选型是MG996R,它是一种180° 的数字舵机。其特点是便宜、大扭力(最大扭力可达20 千克力),工作电压为4.8~6 V。
舵机的主要控制原理是:输入1 个周期为20 ms 的矩形脉冲,根据其占空比的大小来决定舵机输出的转轴角。
3.2 机器人运动部分
该部分由直流电机、轮胎、电机驱动模块组成,其中直流电机采用4 个370 直流减速电机,控制电压为12 V。电机选取的转速为中等的170 转/min。电机驱动部分由2 个电机驱动模块组成,其型号为L298N,是一种H 桥MOS 管驱动电路,输出电流大、隔离性强、频带宽,能够输出4 路信号控制2 个电机。
3.3 机器人底盘部分
机器人轮胎选用麦克纳姆轮。由于独特的机械结构,4 个麦克纳姆轮通过矢量相加可实现机器人平移、原地旋转等特殊运动。
3.4 电磁炮部分
该部分主要包含逆变升压模块、继电器模块、超级电容模块和电磁线圈模块。
首先从继电器模块中引出两根信号线给FPGA,FPGA 可根据手柄和语音控制继电器模块闭合张开以控制12 V 电源,通过逆变升压模块给超级电容充电,然后控制继电器将12 V 电源断开,此时电能被存储在超级电容之中。然后再次由FPGA 控制电磁线圈闭合,使电能从电容中释放,此时变化的电流通过线圈生成磁场。根据法拉第电磁感应定律和楞次定律,线圈中将产生排斥方向的洛伦兹力带动炮管中的金属弹射出。为了保护电路和隔离,使用可控硅和续流二极管等器件。
4 算法系统
4.1 机器人运动算法
本作品设计的机器人运动部分采用4WD 的麦克纳姆轮,每个麦克纳姆轮上有若干倾斜45° 的小轮子,在转动时产生相比机器人倾斜45° 的摩擦力,4 个轮胎转动配合即可实现平移、原地旋转等运动。其运动原理如图5所示,其中红色代表轮子向前转,蓝色代表轮子向后转。
图5 机器人运动算法
4.2 自主避障算法
该部分在机器人周围设计4 个超声波传感器,当一方检测到障碍物的距离小于15 cm 时,机器人向逆时针90°方向平移,即左手定则,如前方检测到障碍就向左平移,左边检测到障碍向后平移,以此类推。
4.3 自主循迹算法
本作品使用128 路线性CCD 传感器进行循迹,当标记线位置偏向任意一侧,控制机器人向另一侧偏转,使标记线始终保持在小车的中线附近。本作品还设计了循迹PID 算法,可实现平滑转弯。
4.4 滤波算法
机器人传感器进行数据采集可能发生意外的抖动,数据现在误差,进而影响机器人的判断。因此,采用均值滤波和中值滤波算法对部分传感器,如超声波传感器、角度传感器、温度传感器进行一定的滤波,以改善传感器效果。
5 图像处理
图像处理功能由CCD 基于FPGA 实现,主要有两种功能:轨迹识别及显示、复杂循迹。以下将详细介绍各个功能的实现。
5.1 轨迹识别及显示
传感系统中的CCD 模块使用FPGA 实现,本功能基于FPGA 驱动TS1401 线性CCD 采集轨迹信息二值化后输出至上位机,以显示轨迹。
5.1.1 灰度值采集
首先,FPGA 驱动CCD 输出其感光元件采集的线性128 个像素的模拟电压,模拟电压经过AD9226 模块转换成12 位数字信号给FPGA。考虑到AD 模块采集信号时有一定的随机误差,因此在采集时对其进行均值滤波,即采集7 次AD,然后对采集的值求平均。由于本作品的AD 转换频率高达50 MHz,因此采集更多的次数也是可以实现的,通过多次试验且考虑到毛刺的影响,设置7 次AD 转换比较合理。
5.1.2 二值化
为了方便FPGA 处理和识别,需要将采集的12 位数字电平信号进行二值化操作,由CCD 的感光原理可知,采集像素点的灰度值越大,其模拟输出的电压就越大,但是根据AD9226 的工作原理:
VD=2048-Vi÷5×2048 (1)
其中VD 是数字转换值,Vi是AD的模拟输入值。
可知CCD采集的灰度值越大,FPGA收到的12 位数字值就越小,因此轨迹越黑数字值越大。根据设置阈值则可将轨迹和轨迹外的灰度二值化为0 或1。本作品将黑色轨迹设置为0,其中阈值的大小由当次灰度采样值的平均值、场地光强和调试经验共同决定[3]。
5.1.3 平滑滤波
随后单次采样的128 位像素均变为0 和1 的二值化量。考虑到在采集灰度时存在一定的毛刺,使采集的数据有0 到1 或1 到0 的错误跳变,本作品对采集的轨迹进行平滑滤波处理。由于轨迹的连续性灰度信号不存在突然的跳变,因此在图像采集时采集的1 个、2 个或3个孤点都是毛刺产生的,该影响表现效果如图6 所示。
图6 未平滑滤波图像
测试发现,控制一定的曝光时间基本上可以将CCD产生的毛刺信号控制在3 个以内。通过平滑滤波和调整曝光时间,CCD 的采集得到较为完美的图像,测试结果如图7 所示。
图7 调整完善后CCD的采集图像
5.2 复杂循迹
基础红外光电传感器有很大的缺点,如由于线路较少,其偏移值过于离散且数量小(仅左右2 个),其测量的偏差范围是(-2 ~ 2)。该数据基本无法进行PID闭环控制,由于开环操作使得机器人循迹时抖动很大,效果不好,而且由于线路少,一路出故障就会对整个系统功能产生很大的影响。为了确保机器人的性能和稳定性,按上一节采用图像处理方法实现机器人的复杂循迹,包含基础连续轨迹、间断轨迹和交叉环岛,基于CCD图像识别完成机器人对其复杂循迹。
5.2.1连续轨迹
首先是实现机器人的连续循迹,由上一节CCD 识别轨迹可以发现,黑色的轨迹在FPGA 上表现为0,通过1 次采集的128 个像素所构成的二值化数组,即可得到轨迹两边的边缘坐标,根据边缘坐标即可计算出轨迹中点坐标,然后将中心坐标与128 的1/2(取整数63)做差,即可得到机器人相对轨迹的偏差。如CCD 得到黑线左边坐标为68,右边坐标为97,经计算得到黑线的中心坐标为82,说明此时黑线中点位于小车右边19个坐标位置,小车则需要左移19 个坐标才能实现轨迹的跟踪即循迹。为了实现这一点,基于Verilog 实现的PID 制器将轨迹中点和小车的偏差作为输入,输出为小车左边电机和右边电机的PWM 波占空比之差,以此闭环实现机器人的循迹功能。
5.2.2 间断轨迹
对于间断的轨迹而言,机器人若采取连续循迹方案很容易冲出赛道,因此在需要一定的判断,在CCD 采样前首先存储一次机器人上一次采样的数据,如果判断到错误的轨迹,如左边坐标等于最小值、右边坐标等于最大值以及左边坐标大于右边坐标的情况,即让上一次正确的采样值完全替代这次的采样值。该方法相当于一种特殊的卡尔曼滤波法。
5.2.3 交叉环岛
在(2)所提到的算法既可以修正CCD 采集到全0或者是全1 的情况,其中全1 代表间断轨迹,全0 则代表环岛的交叉点,显然在此算法下机器人将根据之前的采样正确地通过环岛。
6 系统整合与调试
6.1 串口模块
本部分采用UART 协议结合蓝牙模块形成无线串口,实现机器人与PC 端的上位机的无线通信,波特率为9 600 bit/s。
6.2 上位机设计
该部分基于PyQt设计和机器人配套的上位机软件,在实现串口收发的基础上,针对机器人的移动和机械臂的抓取设计了独立按键,用户可以通过点击鼠标按键或者绑定的键盘来控制机器人运动和抓取,该部分主要用于调试机器人。
6.3 HMI串口屏设计
本部分基于FPGA 结合触摸电阻屏和串口设计一款机器人显示端,具有丰富的按键和人性化的GUI。用户需要解锁才能使用,可以通过点击按键来获取各类信息,当触发灾难事件时会预警。本部分是机器人主要的人机交互模块,传感器的测试均可在显示屏的显示中得到验证。
7 结束语
目前市面上少有纯粹基于FPGA 设计的机器人,本设计的机器人完全采用FPGA 实现控制,由于其现场可编程特性以及并列运行指令结构,具有很好的可重构性和实时性。因此,基于FPGA 的多功能可重构机器人能够很好地弥补市场缺口,具有更低的成本。除此以外,随着FPGA 性能的提升以及集成电路产业与自动控制、计算机产业的互相促进融合,基于FPGA 实现的机器人不仅能够作为市场产品的替代,而且能够实现更为复杂的算法和功能。
参考文献:
[1]李斌,吴镇炜,谈大龙,等.可重构机器人技术的探讨[J].信息与控制,2001,30(0S1):684-688.
[2]吴国盛.7天搞定FPGA:Robei与Xilinx实战[M].北京:电子工业出版社,2016.
[3]赵万欣,陈思屹.基于TSL1401线性CCD的智能巡线小车[J].工业控制计算机,2014,27(2):121-122.
(本文来源于《电子产品世界》杂志2022年1月期)
评论