RoboMasters机器人大赛两轴云台及击发控制的设计与实现目录一. 项目概述 (4)1. 比赛简介 (4)2. 课题简介 (4)二. 项目目标 (5)1. 基本功能与性能 (5)2. 扩展功能与性能 (5)三. 系统设计方案 (5)1. 系统框图 (5)2. 子系统框图 (6)3. 方案比较 (7)四. 各模块工作原理(详细设计部分) (13)1. 串口通信协议设计 (13)2. 弹药击发结构及驱动设计 (14)3. 两轴云台运动控制 (14)五. 系统测试及调试 (17)1. 以云台控制视觉识别为例介绍测试流程 (17)2. 其他的问题以及解决方案 (18)六. 项目实施总结及心得体会 (20)七. 致谢 (21)八. 参考文献 (21)九. 附录 (22)1. 电路图 (22)2. 源工程详见附件 (23)一. 项目概述1. 比赛简介RoboMasters 是一项全新的机器人超级对抗赛。
参赛队伍通过自行设计制造多种机器人进行射击对抗,完成指定任务,由比赛裁判系统判定比赛胜负。
参赛机器人包括可以发射“弹丸”的手动机器人以及能够完成一定任务的自动机器人。
参赛队员需要遥控手动机器人在复杂的场地中移动并发射“弹丸”,攻击对方机器人和基地以取得胜利。
自动机器人将在比赛中自动完成指定任务。
每场比赛双方最多可各有6 台机器人上场参与对抗,每队的编制是2 台机器步兵、2 台机器射手、1 台机器炮手和1 台机器哨兵。
2 台机器步兵由比赛组委会提供,其余机器人均由参赛队员自行设计制作完成。
比赛采用红、蓝双方对抗的形式,每场比赛采用多局制,每局限时5 分钟。
2. 课题简介图:战车主要模块分布图本项目基于STM32F405开发平台,主要利用位置式双闭环PID控制算法,实现对两轴云台的运动以及发弹的控制。
云台控制板通过串口分别与主控板及工控机进行通信,从底盘主控板或工控机获取两轴云台运动指令及发射子弹指令,再经由电流环、位置环双闭环PID控制算法,精确控制云台运动模式,并尽可能快、尽可能稳地使两轴云台达到目标位置;同时通过输出不同占空比PWM波,驱动并控制双摩擦轮转速,达到发射子弹的要求。
二. 项目目标1. 基本功能与性能(1)通信部分:云台控制部分能够通过串口与底盘主控和工控机正常通信,正常接收与传送数据或指令。
(2)云台运动:两轴云台可以按照指定指令,快速到达规定角度位置,并稳定下来。
(3)子弹发射:可以正常驱动双摩擦轮,并以固定速度发射子弹。
2. 扩展功能与性能(1)串口通信在正常通信的情况下,要在满足系统对通信速率的要求下,设计相应具有查错或纠错能力的通信协议,使误码率尽可能低,提高通信的稳定性。
(2)两轴云台在满足系统对稳定性的要求下,改进系统参数,要求尽可能提高对系统指令的响应速度。
(3)在实现以单一速度驱动双摩擦轮的基础上,实现根据底盘指令,变速控制双摩擦轮,多级调速,满足不同对战环境下的发射子弹速度要求。
三. 系统设计方案1. 系统框图图:系统框图由图,云台控制部分处于整个通信系统的中心:一方面,云台控制中心需要通过串口与底盘主控进行通信,接收来自操作手通过遥控器转发过来的关于云台的相关指令;另一方面,云台控制中心需要通过串口与火控部分工控机进行直接通信,接收在自动瞄准过程中的云台自动调整功能,这一部分的设计由于环境等因素在区域赛中没有起到作用。
特别地,在炮手系统设计中,云台控制中心还要负责转发工控机关于底盘自适应性运动的相关指令,控制底盘运动,如下图:图:炮手通信2. 子系统框图子系统主要涉及到摩擦轮驱动部分以及两轴云台驱动部分。
具体框图如下:HG900电调PWM 波摩擦轮电机图:摩擦轮驱动系统框图由图,云台控制版输出PWM 波,需经由HG900电调模块驱动电机转动。
电调相关工作模式配置在模块详细设计部分再详细说明。
RM6025驱动板CAN 帧RM6025无刷电机图:两轴云台驱动系统框图由图,云台控制板通过CAN 通信协议与RM6025驱动板进行通信,控制信息以一个CAN 消息帧的形式传输。
其中,由云台控制板到RM6025驱动板的CAN 帧内容为三轴驱动电流大小,但此处实际只用到了两轴电流大小的数据。
由RM6025驱动板到云台控制板的CAN 帧内容包括三轴实时驱动电流大小以及三轴当前绝对角度值,同理,这里我们只会用到其中两轴的相关数据。
两轴云台的具体控制算法为位置式双闭环PID 控制算法,其具体设计在模块详细设计部分再详细说明。
3. 方案比较控制算法比较与选择云台的三闭环控制:位置环和速度环是在云台主控里实现的,HG900驱动板中已经集成了电流环的控制,如下图:图:云台PID 控制(1)位置式PID 控制算法比例积分微分⊕⊕受控对象输入信号r(n)输出信号y(n)_图:数字PID 控制算法流程PID 调节器是一种线性调节器,控制偏差定义为e(n) = r(n) – y(n),并对该控制偏差作比例,积分,微分等运算,并将其各步运算结果作线性运算作为控制量输出,用于控制受控对象。
其中PID 算法根据实现方式分为模拟式与数字式PID 算法。
对于本系统,采用数字式PID 控制算法。
其输出变量的离散表达式为:()()⎪⎪⎭⎫ ⎝⎛--++=∑=k j D I p n e n e T T j e T T n e k n u 0))1()(()(上式可以进一步简化为: ()))1()(()()(0--++=∑=n e n e k j e k n e k n u k j d i p其中,d i p k k k ,,分别称为比例常数,积分常数与微分常数,D I T T T ,,分别为系统采样时间,积分区间时间,微分区间时间。
实际利用位置式PID 控制受控系统时,常采用经验值法或试凑法来分别调整d i p k k k ,,的大小,调整或改善系统控制性能。
PID 运算结果u(n)直接控制执行机构,在本系统中,该值对应着驱动两轴云台无刷电机的电流值大小,其缺点在于当前采样时刻的输出与过去的各个状态有关,计算时要对各个时刻的e(n)进行累加,运算量大,且由于控制器的输出u(n)对应的是直接驱动无刷电机的电流大小,因而若计算出现异常,u(n)的大幅度变化会引起云台运动的极其不稳定。
其优点在于适用性广,易于实现且对于位置式控制方式的系统,系统适用性总体较强,控制效果较好。
(2)增量式PID 控制算法相对于位置式PID ,增量式PID 控制器的输出只是控制量的增量)(n u ∆,其对于位置式PID 算法的转化计算式为u(n) = u(n-1)+ )(n u ∆。
其输出变量离散表达式如下:()()()1--=∆n u n u n u进一步展开得到:()()()()()()()()()2121-+--++--=∆n e n e n e k n e k n e n e k n u d i p 式中,d i p k k k ,,分别称为比例常数,积分常数与微分常数,e(n) = r(n) – y(n),为目标与输出量之差,称为控制偏差。
增量式PID 算法的优点在于,算式中不需要累加,输出)(n u ∆的值仅仅与最近三次的采样值有关,容易通过加权处理获得较好的控制效果。
另外,控制器每次只输出控制增量,即对应执行机构的位置的变化量,故而当机器偶然性故障时,影响范围相对于位置式PID 较小,不会严重影响系统的整体性能。
再者,增量式PID 控制可以做到手动至自动切换冲击效应小,当控制器从手动向自动切换时,可以做到无扰动切换。
(3)棒棒控制算法设定门限门限,在误差比较大的时候采用大输出控制电机,将误差在最短时间内减小到所要求的范围,这就是棒棒控制的思想。
棒棒控制又称时间最优控制。
设非线性时变系统的状态方程由下列微分方程描述:()n n u n X f n X ),(),()(=•初始条件为:00)(X n X =目标集条件为:)}()(|)({)(n S n X n S n S ∈=性能指标为:01101)(n n n J n n n -==∑=控制u(n)是受限的,即:M n u ≤|)(| 现在的问题是要求最优控制函数)(n u ∧,使系统从0X 最快转移到终止状态J X ,受限控制)(n u j 的最优解为:⎪⎪⎪⎩⎪⎪⎪⎨⎧=>-<+=∧∧∧∧0)(,00)(,0)(,)(n q n q M n q M n u j j j棒棒控制的优点在于其在随动系统调转控制过程中能很好满足系统快速性的要求,达到阶跃过程最小化,并且结合其它控制方法能提高系统自适应能力和控制精度,有很好的推广价值。
其缺点在于,阈值选取不当,可能会出现超调或严重回摆的现象,常常需要与其他控制算法配合使用。
三种算法主要优缺点比较如下图: 控制算法性能比较位置式PID 增量式PID 棒棒控制 优点适用性广,易于实现 运算量小,误差影响小 系统响应快 缺点 运算量大 响应不快阈值不当影响大 适合配合使用图:PID 算法比较 综上所述,考虑到云台无刷电机是有绝对电流值大小来驱动,且其感官可控制量为其轴固定下来时的绝对角度,故而不可采用增量式PID 控制算法,位置式PID 算法相较于棒棒控制算法,尽管实现起来复杂程度较高,但总体性能上,可以做到响应速度与精度更高。
再考虑到PID 算法已有资源更为丰富,在参考他人的调参数经验上,采用位置式PID 控制算法,将会更快取得较为理想的控制效果。
故而,综合考虑,我们决定采用位置式PID 控制算法。
PID 算法改进方式选择(1)基于生物遗传算法改进的模糊PID 算法遗传算法是计算数学中用于解决最佳化的,是进化算法的一种。
进化算法最初是借鉴了进化生物学中的一些现象而发展起来的,这些现象包括遗传、突变、自然选择以及杂交等。
遗传算法通常实现方式为一种模拟。
对于一个最优化问题,一定数量的候选解(称为个体)的抽象表示(称为染色体)的种群向更好的解进化。
传统上,解用表示(即0和1的串),但也可以用其他表示方法。
进化从完全随机个体的种群开始,之后一代一代发生。
在每一代中,整个种群的适应度被评价,从当前种群中随机地选择多个个体(基于它们的适应度),通过自然选择和突变产生新的生命种群,该种群在算法的下一次迭代中成为当前种群。
遗传算法的基本运算过程如下:a)初始化:设置进化代数计数器t=0,设置最大进化代数T,随机生成M个个体作为初始群体P(0)。
b)个体评价:计算群体P(t)中各个个体的。
c):将选择算子作用于群体。
选择的目的是把优化的个体直接遗传到下一代或通过配对交叉产生新的个体再遗传到下一代。
选择操作是建立在群体中个体的评估基础上的。
d)交叉运算:将交叉算子作用于群体。
遗传算法中起核心作用的就是交叉算子。