一.方案介绍
- 根据机器人制作规范以及比赛规则,工程机器人主要承担两项重要的任务,即补给功能 — 夹取弹药箱获取弹丸,并将弹丸交接给其他机器人;救援功能 — 采用两种方式,一种是使用电磁铁吸住机器人后,拖拽至指定区域,另一种是伸出救援卡至机器人底部进行原地救援。
- 针对弹药箱的夹取方面做了可进行双排双列自动夹取的机械设计,配合多个传感器数据、闭环控制算法以及多个电机的协调运作,使得五自由度的夹取机构可以进行快速全自动夹取。
如图为电机控制框图 |
- 为了保证全向移动时运动轨迹的正确性,采用六轴传感器解算出欧拉角(详情请点击 浅谈卡尔曼滤波器)作为绝对角度,用正确轨迹下绝对角度与移动时实时绝对角度的偏差作为输入,用闭环控制器得到输出,作用于底盘机构,从而对运动轨迹进行实时修正。
- 为了提高机器人在赛场上的生存能力以及干扰能力,结构上通过导电滑环将云台与底盘连接,使得底盘与云台可独立运动;并且配合绝对角度欧拉角以及相对角度码盘角度,使用角度闭环控制算法,以及对麦克纳姆轮进行运动矢量分解,使得可以实现"小陀螺"模式(底盘360°转动进行全向移动)和“扭腰”模式(底盘规律性摆动进行全向移动)。
- 为了方便后期的战术更改,工程机器人也适配了小弹丸发射机构的快速安装,可根据需要进行模式的快速切换,工程机器人在赛场上可以有两种模式:
a. 带输出伤害能力,救援能力较弱(不能原地救援),云台为小弹丸发射机构
b. 不带输出伤害能力,救援和生存能力较强,云台为图传系统(与底盘连接处采用导电滑环) - 主要功能
a. 全向移动,自修正运动轨迹
b. 全自动连续夹取多个弹药箱,获取弹丸
c. 补给弹丸,救援其他兵种
d. 抵挡火力,隔绝敌方机器人(依靠“小陀螺"模式与“扭腰”模式) - 项目难点及解决方法
a. 机器人功能需求多,且需要多状态频繁切换与同步,软件设计上复杂。因此采用分层设计和模块化编程的方法,使得代码逻辑清晰易于维护;使用状态机模式(原状态-事件-转换-现状态-场景-行为),有效地适应多状态场景且易于阅读和维护。
b. 整车有众多组件,如15个电机/舵机/码盘、光电/测距/六轴传感器、影像/救援系统等,需要保证协调运作时整车的稳定性。将整车分为上下两层,采用双主控模式,并使用RTOS划分任务和添加监控系统,达到了整车稳定性的指标。
c. 全自动5自由度夹取机构,连续夹取1—6个箱子,控制难度高。给每个自由度加上实时性窗口、并实时监测每个电机状态,超过死区时间(测试得出)或电机状态异常,则判为失败并启动复位程序;采用电机软件锁和状态驱动表,控制夹取流程;经过上述方法,可以有效控制自动夹取流程。
二. 硬件资源分配表
三. 硬件框图
- 硬件框图方面,将工程机器人分为底盘机构和夹取机构,其中底盘机构包括:移动动力源部分(四个无刷直流电机+四个麦克纳姆轮)、云台部分、救援部分、数据输入部分(传感器数据、遥控数据以及裁判系统数据);夹取机构包括:全自动夹取部分、弹仓部分、倒车影像部分、传感器数据输入部分。
- 一是为了模块化设计,二是为了控制系统的稳定性和实时性,三是为了提高系统可维护性;底盘机构和夹取机构分别使用一块stm32F407主控板,机构间采用can通信方式进行数据交互,数据校验方式采用:帧头+帧尾(can自带crc校验)。
四. 软件架构图
- 软件架构图方面,将代码根据其特性进行分层,并根据其具体功能构建成一个可重用、可移植、易修改的模块。具体细节请点击这里浅谈模块化编程。
- 硬件驱动层基于CMSIS软件接口标准,使用ST标准外设库编写。中间层使用FreeRTOS内核给应用层提供进程管理调度、进程间通信等服务;同时基于硬件驱动层开发各种服务组件,以支持上层应用层实现各种实际操作。
- 应用层根据任务性质分类,交给FreeRTOS内核进行管理;其中底盘、云台、夹取任务由于在比赛中状态经常变化且状态数量多,所以将这些任务的状态处理交由状态机管理(具体细节请点击 浅谈设计模式之状态机模式)。监测任务用于反馈其余任务运行的情况,若情况无法修正,则进行系统复位操作。
五. 软件流程图
- 主要流程
- 夹取机构控制流程举例
六. 夹取机构调试片段
一排夹取