「2019」「RM圆桌」第六期 功率控制飞驰人生

vol6.jpg



圆桌时间:2019年3月1日(周五) 19:00-20:00

圆桌嘉宾:@蒲星瑞(论坛昵称:@零空空)

主持人:@快拆小分队

温馨提示:

在直播期间,大家可以直接移步至论坛技术交流版块,直播墙会自动实时更新内容。

在前20分钟内,为主持人嘉宾对话时间,这段时间内嘉宾是不会回答其他参与者的问题的,大家可以在后面40分钟的自由问答时间内提问。


============================分割线============================

1.什么是底盘功率限制
底盘指的承载和安装机器人动力系统及其附属部件的机构。
底盘功率机器人产生水平方向运动的动力系统的功率,也就是说它就是驱动机器人水平移动的电机的总功率。
在比赛中,裁判系统会以10Hz的频率检测底盘功率,超过规定功率上限并耗尽缓冲能量后裁判系统会给予扣血(英雄、步兵)或者底盘断电(哨兵)的处罚。
(比赛规则39页那个图)
[attach]21919[/attach]
这一块在比赛规则手册上有较详细的说明。
今年比赛英雄机器人和步兵机器人的功率上限均为80W,同时新增了哨兵机器人的20w功率上限。
功率限制的出现导致了这些机器人不能随心所欲的奔驰,在面对特殊地形时移动难度更大,同时也使得超级电容在比赛中大展身手。
因为哨兵功率限制是今年新增要求,而去年的裁判系统不能设置20W的功率限制,故现在还没有实际比较充分测试过对哨兵底盘功率限制后的效果,所以之后探讨的底盘功率限制都是针对步兵和英雄的

2.如何判断底盘功率限制算法的好坏?
主要是两点,其一是安全性。机器人在各种地形和各种情况下对功率的使用均不能消耗尽缓冲能量。一旦超功率,裁判系统扣血相当恐怖,完全可能使英雄或者步兵在10秒内自杀;而无法移动的哨兵则直接成了活靶子,去年比赛中,分区赛很多强势队伍都是利用拿下一血后迅速击杀底盘断电的哨兵。
第二是要尽可能充分使用允许的功率,保障机器人移动的机动性。超级电容能在关键时刻打破功率限制,但其续航能力是有限的,平时的移动速度则直接和和对功率利用的充分性挂钩。为了保证不超功率而限制过大会导致机器人加速慢,制动距离长,一些崎岖地形机动性非常差。

3.什么情况下容易出现超功率现象?
在平地上移动时,底盘电机匀速转动时的总功率和速度有关,但其功率基本上都是小于启停过程的功率,限定最大转数能有效防止在该段超功率。因此平地移动主要是启停过程中会使机器人瞬时超功率。从去年测试时直观感受来看,制动过程比启动过程更容易出现超功率情况。
而在一些上下坡的情况时,要求底盘电机提供力矩大,容易出现超功率的现象。
当机器人发送碰撞时,可能导致短时间内轮子堵转,也可能出现超功率。

4.底盘功率限制的要点
其一是获取准确的当前功率使用情况。
其二是计算当前可用功率上限
其三使用当前可用功率上限
后面具体说一下这几点

5.如何获取当前底盘功率使用情况?
最方便也是最推荐的方法就是和裁判系统主控通讯直接获得其功率。这里要留意裁判系统和我们通讯频率和其采集底盘功率的频率是不一样的。实际使用时也要测试机器人主控和裁判系统通讯的稳定性情况,确保不出现意外丢数。
第二种是自备电流采样板来获得底盘功率(甚至可以分别获得四个电机的实际电流)。这种方案可以提高对底盘的功率控制频率,使用缓冲能量更充分,同时在和裁判系统通讯出现意外时也能保证功率限制安全。不过该方案需要电流采样模块,线路、控制更复杂,提升性能不显著,并且最终对超功率的判断是由裁判系统控制的,故我们去年最终并没有使用该方案。(有使用这种方法的同学可以分享一下经验)

6.如何计算当前可用功率上限
当前可用功率上限 指的是在你得到此时底盘缓冲能量后在程序设定的底盘电机功率之和允许的最大值。
前面说过,底盘在平地上匀速移动时功率是小于启停过程中的功率的。故保证启停过程不超功率后,匀速移动时底盘功率一般是肯定小于功率限制的。机器人实际底盘功率小于规定的底盘功率限制(80W)时,是可以回复能量缓冲的。因此如果一直在程序里把机器人使用的功率上限定为80W相当于浪费了很多能量缓冲。因此这个当前可用功率上限是动态的。
如何计算当前可用功率上限,我们采用的思路是:设定一个缓冲能量危险值,当缓冲能量大于危险值时,若按照当前功率上限使用底盘功率,下一次裁判系统和我们通讯时剩余缓冲能量恰好达到危险值。
即:W_缓冲-W_危险值 = t_功率通讯周期*P_当前可用功率上限
若缓冲能量达到或者小于危险值了,还是老老实实不要超裁判系统的功率上限吧。
[attach]21920[/attach]

7.如何使用当前可用功率上限
以底盘的速度环为例,我们对实际轮子速度和目标速度进行PID计算以后得出一个电机的目标电流值,将这个目标电流值发给电调驱动电机。
3508和C620电调的电流环性能非常好,我们在这里可以认为其实际电流值完美跟随其目标电流值(前面设定缓冲能量危险值而不是把缓冲能量用光就是防止这个近似处理导致的超功率)。
因此认为发给电调的目标电流值乘以24V(底盘供电电压)近似等于该电机的功率。
对于电机的功率约束有两种方法。一个是限制目标速度,一个是限制最后的输出电流。
限制目标速度是通过控制给速度环PID的目标值来减小目标电流从而控制底盘功率。其能保证底盘四个轮子协调运动,不影响其运动方向。但是目标速度和目标电流之间不是线性关系,你很难直接找到一个好的速度值。这里提供一个思路:计算PID,获得四个电机的电流目标值,其和若大于当前可用功率限制,则同比例增大/缩小(取决于加速还是减速)速度。再次计算,直至总功率小于限制值或达到设定循环次数上限(此时就可以直接削弱目标电流来保证)
[attach]21921[/attach]

第二种是直接削减目标电流。在PID计算出四个电机目标电流后,直接乘以一个系数让他们之和小于等于当前可用功率上限。这种方法比较简单粗暴,对功率的运用十分充分,但由于四个电机的电流不是线性关系,直接乘以一个系数可能导致运动失真,轮子转动不协调,出现走不了直线的情况。在机器人比较轻或者机器人机械结构设计合理(没有明显偏心,轮系设计理想)的情况下该方案的缺点并不明显,可以使用。如果出现上述缺陷,可以考虑分析机械结构,或者再进行手动补偿不协调的轮子的电流值。
[attach]21922[/attach]

8. 机器人爬坡时功率限制有什么需要注意的地方吗?
前述功率使用思路对机器人爬坡和冲撞时仍然适用。不过单靠底盘功率爬坡时机器人机动性非常差,这是因为爬坡时要求底盘电机转矩大,这个很难通过“充分”利用底盘功率来实现,因此我们上坡主要还是依靠超级电容。
机器人重心不在中心会导致前后轮受力不同,这个在爬坡时表现更加明显。因此可以根据自己机器人具体情况考虑在爬坡时减小负载小电机的目标电流,增加负载低的电机目标电流。这样利于机器人爬坡,却可能会导致在上坡过程中机器人运动不是直线,但外面实际测试是在能接受范围内。归根结底机器人能否顺利爬坡和超级电容、机械结构有相当重要的联系。

9.其他注意事项:
需要考虑超级电容和底盘功率在控制上的关系。这个就不细讲,就主要是用什么情况消耗底盘功率对超级电容充能,什么情况下靠空余功率给能量缓冲补给。
根据去年经验,实际地面情况可能会对功率使用造成影响,尽量选择规则手册上指定的地胶测试。
电源模块的输出电压可能会有波动,在利用底盘电机电流值计算功率时可能会有少量误差。
通过与裁判系统通讯获取能量缓冲值时,可以考虑增加防护程序,即在预期时间内没有收到信息或解析的信息反常时将当前可用底盘功率严格设为80W。
在测试时,可以监控绘制机器人的能量缓冲曲线。理想情况应该是在启停过程中能量缓冲曲线能达到设定的危险值附近,在匀速过程中能量缓冲能持续恢复。可以根据这个目标来确定危险值和电机最大转速。

10.根据剩余缓冲能量的多少调整电容和电源的输出时间(电容电源不同时供电)可以有效的控制功率吗,当电容没电时,只靠电源输出而且电源输出占得比重降低导致电压降低会带来什么隐患吗?
我理解你的意思是在机器人运动时不停切换供电方式,不建议这么做,必须保证电调供电电压稳定,否则可能造成电调重启或断电。

11.功率限制方面。在超功率后对底盘进行功率限制,会出现一顿一顿的现象,就是把功率降下来了,然后裁判系统的热量更新了一部分,检测到限制不超功率了所以加速,刚加速又检测到超功率了,又减速,感觉类似PID超调,没找到一个合适的方案去整定这个闭环控制的系数。请问有办法吗?
没必要刚超功率就马上限住,你的方案类似于两种运动状态的切换,必然导致“抖振”。可以利用“用的越多限的越多”的思想,把这个过程变平缓。具体参照前文所述计算当前可用功率上限的算法流程图。

12.上坡的功率有没有专门的控制策略的优化?
按照前文所述思路,也能稳定上坡,但速度较平地移动慢较多。如果想要快速上坡需要超级电容。

13.同比例改变速度期望时,底盘速度突变,出现了类似卡顿的现象,请问该如何解决?
我们也做过改变速度的方案,未出现这种现象,建议检查算法是否有误以及输出是否为连续函数,也可能和缓冲能量的危险阈值选取有关。

14.话说电机的功率可以是反馈的电流乘以电压吗?貌似反馈的电流是相电流。
3508反馈的是转矩电流,但是计算功率使用的是电调总电流,电调功率等于电源电压乘总电流,二者不相等,但是在加速时二者趋势基本一样,减速时,转矩电流为负但是不消耗功率,故使用转矩电流来进行功率控制示可行的。

15.有必要根据功率给电机再加一个电流环控制吗?
我认为没必要,3508电机和C620电调所做的电流闭环调节效果很好。

16.硬件设计时,使用pmos管。在GS短路(即截止的情况下),D极悬空不接地或其他线的情况下,给S极一个从0-24V迅速升高的电压。发现pmos在电压升高的某个过程发热,电压达到一定值有不发热的现象???请问大家有没有这样的情况。
这个问题和功率控制关系不大,请论坛组织其他相关圆桌讨论活动

17.加了功率环之后,在步兵急转弯或者斜着走时还是会超功率,这个怎么解决?(不用超级电容)
我们尝试过功率环的方案,但是效果很差,最后放弃了该方案,使用前文所述方案可以保证充分利用缓冲能量而不超功率

18.如何解决功率控制和数据更新的延时问题如果你指的是100ms的裁判系统数据更新频率太慢,不用过于担心这个问题,不会对控制效果造成明显影响。
比如机器人以300W功率(步兵启动时)运行0.1s,也只消耗(300-80)*0.1J能量,况且机器人不可能以300W功率一直运行,所以100ms延时不会有太大影响。
按之前提出计算当前可用功率上限的满功率运行,最终也不会超功率。所以感觉延时影响不大。
如果你想要解决延时的问题,可以开发电流采样模块进行电流反馈。

19.如何将电机反馈的转矩电流转换为总电流?
得到总电流需要C620开放相电流数据反馈,单有转矩电流无法转换。或研发电流采样模块。

20.请问底盘四个3508电机的启动电流大概多大,硬件设计时防电流倒灌的单向二极管需要多大的额定电流比较好?30A的我们试过会炸
如果是步兵的话(20kg以内),我们测过最大启动功率<400W,大概可以推算启动电流。
还有未必是启动的时候会炸,制动可能也会有隐患。

21.我们打算电流计和裁判系统一起使用,因为裁判系统采集电流的频率小于电流计ADC反馈频率,而且电流计的数据和裁判系统的数据有一定的误差,而且缓冲热量只能通过裁判系统来获取同时使用,会不会出现矛盾呢?
一定是会的,两种数据融合起来比较困难,建议还是以裁判系统为主要信息反馈。

22.如果要是在电容有点电的情况下(稳压到24V)根据剩余缓冲能量的多少调整电容和电源的输出时间(电容电源不同时供电)当电容没电的时候降低输出的期望电流值 这种方法可以吗 因为除了调整电容和电源的输出时间想不出什么办法可以控制电源和电容功率输出比例了 T T 或者有什么更好的控制电容 电源功率输出比例的办法吗?
策略方面,可以在功率缓冲较多的时候,可以只用电源供电,当60J用到危险值以下,自动或操作手手动开启超级电容供电的模式。或者在操作手决定要快速启动、爬坡的时候,直接开启超级电容。电容和电源输出的比例有没有好的控制办法?我们定位超级电容是用于机器人需要快速移动,爬坡时的动力源,并没有试过将电容和电源一直交替功能来等效提供功率上限,因此没有考虑过你问这个

23、转矩电流除趋势与总电流相似外,对于参赛队还有其它意义吗?
转矩电流和电磁转矩成正比,你可以