本文主要是介绍ROBOMASTER比赛作品集,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
ROBOMASTER比赛作品集
- 一、ROBOMASTER比赛介绍
- 二、项目介绍
- 三、根据机械结构设计的控制方案
- 四、机器人控制板与传感器模块
- 五、机器人软件构架设计
- 六、软件应用层流程图
- 七、六轴姿态传感器模块
- 八、项目成果展示
一、ROBOMASTER比赛介绍
全国大学生机器人大赛RoboMaster 机甲大师赛是由共青团中央、全国学联、深圳市人民政府联合主办,DJI 大疆创新发起并承办的机器人赛事,作为全球性的射击对抗类的机器人比赛,在其诞生伊始就凭借其颠覆传统的机器人比赛方式、震撼人心的视听冲击力、激烈硬朗的竞技风格,吸引到全球数百所高等院校、近千家高新科技企业以及数以万计的科技爱好者的深度关注。
简单来讲RoboMaster机器人比赛就是通过队伍之间使用自研机器人对抗,发射弹丸来判断胜负的比赛。比赛的规则类似MOBA类游戏,双方机器人需要攻击对方的基地通过基地剩余血量来决定比赛的胜负。双方的机器人组织不同策略,进攻、防守。击杀敌方机器人能够获得更高的功率上限,枪口热量上限,为最终击破地方基地做准备。
所以各队伍的自研机器人的性能,稳定性会很大程度上影响比赛的结果。
二、项目介绍
本人参加了两届RoboMaster比赛,在比赛中负责英雄机器人的嵌入式软件开发。英雄机器人在比赛中能够发射大弹丸,大弹丸伤害高射速慢,对发射机构与云台系统有较高的考验。一台成功的英雄机器人在比赛中能够实现远距离攻击地方基地,斩杀敌方地面机器人等效果。
根据规则,我们将英雄机器人战术定位为队内的炮手,专门负责远距离吊射前哨站,哨兵,以及基地等高血量建筑及机器人,追求远程吊射精确度高设计了类坦克的丝杆传动Pitch轴和下供弹的供弹设计可进行高精度的云台运动瞄准,加装了左右摇摆臂悬挂的底盘具有一定的机动性与越障能力,并且可根据需要适配安装步兵的双云台结构,攻守兼备。
英雄机器人在设计时提出以下控制上的功能需求:
1.麦克纳姆轮全向底盘控制,加速快且平滑,稳定爬坡
2.两轴云台运动控制稳定,静止发射时保证不会抖动偏移
3.功率控制不超功率,控制上流畅不造成卡顿
4.超级电容充放电控制
5.发射射频射速稳定,不超热量,发射延迟低且稳定
本人在项目中负责整台机器人硬件线路布局规划、机器人控制主板嵌入式驱动开发、机器人嵌入式软件构架设计、机器人运动 控制算法等。协调与机械组员、嵌入式硬件(PCB)组员和视觉算法组员共同开发机器人。
三、根据机械结构设计的控制方案
云台pitch轴采用了无刷减速电机直连导程12mm的丝杆并通过鱼眼轴承+铝柱的连杆结构将丝杆螺母的上下运动转化为云台的俯仰运动。pitch轴俯仰使用的丝杆可以实现自锁,而且主要需求电机高转速,所以pitch轴的正常控制模式下采用电机编码器反馈速度闭环,能保证pitch轴的快速响应与静态稳定需求。
云台的yaw轴采用了1:5的同步带轮传动设计,使用无刷减速电机作为动力源,旋转响应速度快。yaw轴统一需求动态响应与静态精度,为了保证控制精度,yaw轴采用外置绝对值编码器位置闭环与陀螺仪提供云台相对于地面的绝对角度校正编码器坐标系,相当于使用了编码器的精度与陀螺仪的地面坐标系角度校准的双传感器反馈模式。在原有的单陀螺仪反馈在精度和控制稳定性上大大提升。
四、机器人控制板与传感器模块
嵌入式熟悉机器人操作与控制流程,外设硬件使用,所以就负责硬件线路布局规划了
机器人主控板有很多的外设,包括与裁判系统,小电脑,六轴姿态传感器模块等使用的UART串口,舵机,BLDC电调使用的PWM,电机与双主控通讯用到的CAN等等。
设计硬件连接布线需要考虑很多因素,模块安装位置,滑环通过电流,裁判电源系统安装,线材与保护的选择,接口选择等
五、机器人软件构架设计
仿造操作系统HAL层,API层,应用层的结构设计软件结构
六、软件应用层流程图
七、六轴姿态传感器模块
1.性能参数
1)测量维度:加速度 3维,角速度 3维,角度 3维
2)量程:加速度:±2/4/8/16g 角速度:±250/500/1000/2000°/s
3)数据输出内容:角速度 角度
4)数据输出频率:1HZ~500HZ (默认使用500HZ)
5)串口(TTL 电平,波特率支持 2400、4800、9600、19200、38400、57600、115200(默认))
2.实物图及引脚
3.软件算法
1)大致流程
首先通过SPI总线读取BMI160传感器的原始数据,使用低通滤波和均值滤波对原始数据进行处理,由加速度数据计算重力倾角,再通过卡尔曼滤波对重力倾角进行修正,得到动态角度。
2)角度解算
Pitch与roll轴角度解算采用卡尔曼滤波融合加速度与角速度,得到的最优估计角作为pitch轴与roll轴的动态角度
卡尔曼滤波流程:
i.由上一时刻的最优估计角加上输入的当前角速度减去上一时刻角速度误差的差乘MCU运算周期时间得到当前的预测角即先验估计角
angle_kf += (gyro_m - q_bias) * dt;
ii.上一时刻误差协方差矩阵P通过状态转移方程模型加上过程噪声Q计算得到当前先验误差协方差矩阵
在调参过程中:误差的协方差矩阵表示对当前预测值的信任程度,越小则越信任当前的预测值,由于实际测试中角速度积分角度可信度较高只受到陀螺仪测量动态精度影响(角度漂移)参数Q的值可以调小提高对预测值即角速度的信任程度
Pdot[0] = P[1][1] * dt + Q_angle - P[0][1] - P[1][0];
Pdot[1] = -P[1][1];
Pdot[2] = -P[1][1];
Pdot[3] = Q_gyro; P[0][0] += Pdot[0] * dt;
P[0][1] += Pdot[1] * dt;
P[1][0] += Pdot[2] * dt;
P[1][1] += Pdot[3] * dt;
iii.先验估计角与倾角做差得到角度残差(表示测量值和预测值的偏离程度(预测值即使用角速度数据的先验估计)(测量值即加速度计算的重力倾角)
angle_err = angle_m - angle_kf;
iv.计算残差协方差:基于误差协方差矩阵P与测量协方差R
调参过程中:卡尔曼增益即对残差的信任度,则残差协方差E越大对测量值(加速度倾角)越不信任,在实际测试中加速度倾角受到陀螺仪水平移动影响较大(平移过程中产生水平加速度不只存在重力加速度,导致通过重力估算倾角失效)测量协方差R则需要增大以降低对重力倾角的信任程度
E = R_angle + P[0][0] ;
v.计算卡尔曼增益:基于误差协方差矩阵P与残差协方差E
K_0 = P[0][0] / E;
K_1 = P[1][0] / E;
vi.计算最优估计角度
angle_kf += K_0 * angle_err;//角度最优估计
q_bias += K_1 * angle_err; //角速度偏差
angle_dot = gyro_m - q_bias; //角速度估计
vii.更新后验协方差矩阵(用过误差协方差矩阵的迭代对估计值进行优化以得到最优估计值,卡尔曼滤波器可以基于我们对于系统状态估计值的修正度来自动修正误差协方差矩阵。修正系统的状态既要基于误差协方差矩阵P也要基于残差的协方差E)
t_0 = P[0][0];
t_1 = P[0][1];
P[0][0] -= K_0 * t_0;
P[0][1] -= K_0 * t_1;
P[1][0] -= K_1 * t_0;
P[1][1] -= K_1 * t_1;
3)Yaw轴处理
由于未采用磁力计,yaw轴加速度积分角度无法通过卡尔曼滤波进行校准
Z轴角速度进行处理在可接收范围内降低Z轴角速度的动态精度提高其静态精度以降低yaw角度漂移现象
云台控制中通过控制逻辑切换陀螺仪闭环模式与编码器闭环模式去除陀螺仪yaw轴漂移的影响
4)陀螺仪零飘及温漂校准
通过采集数据求均值及写入芯片FLASH操作对陀螺仪角速度进行零飘校准
校准流程:
4.测试效果数据
通过j-scope进行测试陀螺仪输出波形
1)陀螺仪三轴角度正常工作
2)Yaw轴响应灵敏
3)Yaw轴静态精度测试
零飘校准及精度调整之后的效果
4)卡尔曼滤波效果
以roll轴为例
紫色是重力倾角绿色为卡尔曼最优估计角,在对陀螺仪施加外部高速加速度变化,重力倾角影响很大,通过卡尔曼滤波处理,卡尔曼角度几乎不受外部平移加速的影响
5.数据输出
0xfe | gxH | gxL | gyH | gyL | gzH | gzL | rollH | rollL | pitchH | pitchH | pitchH | pitchL | yawH | yawL | 0xee |
---|
计算方法:
角速度:
gx =((gxH<<8)| gxL)/100(°/s)
gy =((gyH<<8)| gyL)/100(°/s)
gz =((gzH<<8)| gzL)/100(°/s)
角度
roll =((rollH<<8)| rollL)/100(°)
pitch =((pitchH<<8)| pitchL)/100(°)
yaw =((yawH<<8)| yawL)/100(°)
八、项目成果展示
(只能放已发布视频 先放团队的总体视频)
东莞理工学院ACE战队2019机器人中后期形态视频
这篇关于ROBOMASTER比赛作品集的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!