RoboMaster

标题: 「2019-4」【每周分享】操作手如何知道自己的剩余弹量? [打印本页]

作者: 火星探索    时间: 2019-3-18 16:32
标题: 「2019-4」【每周分享】操作手如何知道自己的剩余弹量?
[attach]22233[/attach]
在工厂里,许多饮料装罐流水线都采用自动化的设备,无需人工,机器就能将瓶罐用饮料装满。机器只要设定好一个量,每次就能注入同量的饮料。
[attach]22234[/attach]
有种难度比较大的是,工厂补充水库的水量时,需要知道水量是否过低,然后再补充对应需要的水量。这需要机器自动检测水位,再计算所需水量。
要如何知道自己的剩余量呢?在 RoboMaster 比赛中,机器人也面临同样的问题。

机器人的弹仓容量是有限的,每进行完一轮射击攻击,就要赶紧“回家”补一次弹。
[attach]22235[/attach]
在虚拟的射击游戏中,游戏界面会实时显示剩余弹量,而真实比赛中,操作手不知道机器人剩余的弹量,往往在打得火热时,没弹了!只能被对手打得落花流水。
[attach]22236[/attach]
所以,检测机器人弹仓内的剩余弹量是非常有必要的。机器人如何获知剩余弹量?下面我们来分析,如何通过传感器和其他技术手段,来设计一个弹量检测装置。
弹量的检测原理一般有两种:一种是直接测机器人弹仓里有多少弹丸,另一种是检测之前补充的弹量,然后再减去打出去的弹量来获得。
直接检测弹仓弹丸数量

最简单粗暴的方法就是直接检测弹仓内弹丸的数量。方法当然不是做一只手在弹仓里一颗颗地数弹丸啦,而是用称重的方式。
[attach]22237[/attach]
因为单颗弹丸的重量是固定的,所以只要测出总重量,再除以单颗重量,就可以得到数量了。微型称重传感器就可以满足我们的要求,它的精度达到 1g 甚至更低。
那么,传感器应该装在哪呢?因为弹丸在弹仓里,所以我们可以直接安装在弹仓下,就有:测得重量-弹仓重量=弹丸总重量。而且弹仓的材料普遍较轻(3D 打印材料或轻铝板),传感器的负载压力不会那么大。[attach]22238[/attach]
但这有个大毛病,当机器人想瞄准上方目标时,云台就会抬起来,弹仓也会一起倾斜。我们用初中学过的受力分析看一下,传感器称到的重量就是弹仓和总弹丸在 y 轴上的分力了。
[attach]22239[/attach]

有人说只要检测云台的仰角 α,再把称到的 y 分量除以 cos α 不就得到重量了吗?嘿嘿,如果有这工夫,我就会选择下面这种方法。

另一种安装方式安装在整个云台下方,测量的是云台和弹丸的总重量,基本消除了云台运动带来的误差。
[attach]22240[/attach]
这种方法也有个毛病,就是传感器压力很大。整个云台包括了两个转动方向的电机,还有各种零部件,云台有这么大的负载还要求传感器有高精度,这些要求就会让传感器价格很贵。
同时由于云台结构存在内应力(材料内部的作用力),这种干扰的力也会对传感器产生一定的误差。
直接测弹仓内的弹量,这种方法虽然直接干脆,但将传感器装在运动激烈的机器人身上,对研发人员的技术水平有较高要求,也对检测效果有较大的影响。所以我们还有第二种方法!
间接检测弹仓弹丸数量
机器人打光了弹丸之后需要再补充弹丸,间接检测就是检测机器人补充了多少弹丸,然后再检测之后打出去了多少弹丸,有:补充的弹量-打出去的弹量=当前弹量
整个过程不需要知道弹仓弹量,但要求每次补给弹丸之前,都要将弹仓清空。

我们先看如何检测机器人补充了多少弹丸。
补充的弹量检测

机器人的弹丸一般是通过补给站(相当于一个储存弹丸的仓库,机器人会从补给站处补给弹丸。)直接补给,所以最简单的方法就是:设定供给口打开的时长。只要弹丸流出过程的时间一样,弹丸数量就会一致。这和市面上的自动喂狗机的原理一样。[attach]22241[/attach]
但这种方法精度太低,弹量很难控制住。


我们可以用第二种方法:在补给站底下加装一个带有称重传感器的预备弹仓,补给站先把弹丸放进预备弹仓,再给机器人。就像我们吃饭前会先把饭装进碗里再吃一样。这样就可以通过预备弹仓上的称重传感器获知弹量了。(当然在新赛季不用考虑了)[attach]22242[/attach]
相比装在机器人上,补给站的安装更简单,只要保证没有外力影响,就可以精准测量。

如果经费有限,还可以考虑另一种方法——测量弹丸堆叠的高度,通过高度算出弹丸数量,这可以用光电传感器来实现。比起称重传感器,光电传感器的价格更低,实现方法也比较简单。[attach]22243[/attach]
我们将传感器安装在容器顶部,传感器测量自己到弹丸的距离,从而算出弹丸堆叠的高度,用总的容器高度减去测量值就是弹丸高度。

但这种方法的精确度没有称重传感器好。因为弹丸堆叠得不齐整,同样的弹丸数量可能会有不同的高度。
[attach]22244[/attach]

因为补给站是固定的,使传感器工作环境稳定,受干扰因素较少。比起在机器人身上装传感器,补给站测量的精度会更高。

但机器人在补弹时,很可能会站歪导致没接住弹丸,漏一地的弹丸。这时,我们可以在补给站上装一些指示的 LED 灯,来指示机器人对准供弹口。(仅限于2018前的赛季)
检测弹丸打击量
知道了补充的弹量,只要再减去打击出去的弹量就可以算出剩余弹量了。

比赛规则规定,炮管外必须安装官方的裁判系统,弹丸发射时,裁判系统可以对发射状态进行检测,比如射击频率和射速。在检测时,系统会有中断,也就是每检测完一颗,系统就断开一次,所以我们可以读取中断次数来计数。
[attach]22247[/attach]
通过裁判系统读取的方式是最直接有效准确率也较高的方法。但必须熟悉裁判系统的工作原理才能加以利用。
如果不通过裁判系统,我们可以再次利用文中出镜率超高的传感器来获得打击弹量。
第一种是通过光电传感器,将它装在发射装置里,原理和测量英雄机器人补弹量一样,弹丸经过发射机构时,就会阻断传感器信号,从而检测发射次数。

第二种是通过电机码盘。弹丸在发射之前,会先进入拨弹机构,然后被拨盘拨进发射管路里。拨盘每转动一格,就拨进一颗弹丸。
[attach]22248[/attach]
电机里有电机码盘,可以检测电机转动的角度,从而知道拨盘转了多少格,通过读取码盘数据就可以获得打击弹量了。但前提是拨弹电机不空转。(空转就是电机转动,但拨盘却没动)

[attach]22249[/attach]
如何让操作手看到弹量

相比通过裁判系统或加装光电传感器读取数据,这种利用码盘的方法是最简单。因为这不需要加装其他器械,而且在控制机器人的时候,我们正好也需要读取电机码盘的数据,不需要增加过多的额外操作。
但这得保证拨弹电机不会空转,否则测量数据就会有很大误差了。
所有以上方式所得到的测量数据,最后都需要让机器人操作手知晓。RoboMaster 官方在裁判系统的设定中开放了编写 CustomDATA 数据的权限,用户可以通过编程,让剩余弹量数据在电脑上显示。
粗略的剩余弹量检测
其实,在激烈的比赛中,机器人到底剩 8 颗弹丸还是 10 颗弹丸都没有差别,因为都要“回家”补弹,所以我们在不追求精度的情况下,可以用更简单粗暴的方法——弹丸低于某个量就发出提示

方法有很多种,这里举一个简单的例子,还是使用出镜率最高的光电传感器。我们将发射器和接收器分别装在弹仓内的两侧,当接收器接能够收到信号,就说明这个高度已经没有弹丸了。
[attach]22250[/attach]
然后再额外搭配一个非常小的控制器(比如 Arduino 控制器或单片机),再加上一个 LED 灯对不同的状态显示不同的颜色。一个简易的“弹量不足”警报就做好啦!

◆◆◆
以上讲了获知机器人剩余弹量的思路,其实不止在机器人比赛,同样的原理在生活中也被广泛应用。
比如在精确装瓶的制药厂中,需要对每瓶药精确地分配,就可以用称重传感器,保证每瓶药的重量以及颗粒数是一定的。

本文通过机器人需要知道剩余弹量的这个需求,来多角度分析了如何设计机器人的功能。希望这种分析方法可以为大家提供一个细致的思考问题的思路,在未来设计机器人或实际的生产应用中都有所帮助。
本期作者
                              
新加坡南洋理工大学许悦聪
深圳职业技术学院 RoboMaster 战队顾问
没事爱造无人机,热爱机器学习的博士生

[attach]22252[/attach]
本文来自 RoboMaster 技术智囊团许悦聪,文章部分有修改。如果你也希望加入技术智囊团,请通过robomaster@dji.com 联系我们。文章部分素材来自公共网络,侵权删除。


[attach]22251[/attach]

本期分享具有一定的时效性,在2019赛季可能有些内容已经不适用,仅供参考


作者: 快拆小分队    时间: 2019-3-18 16:43
支持下
作者: 花师小哲    时间: 2019-3-18 18:03
wow,好东西,我只会用红外对管
作者: whl970831    时间: 2019-3-19 16:39
为啥总能见到楼上那两位
作者: 火星探索    时间: 2019-3-25 11:06
whl970831 发表于 2019-3-19 16:39
为啥总能见到楼上那两位

哈哈哈  
作者: 小步兵    时间: 2019-5-16 19:57
定量补弹

作者: Dior    时间: 2019-5-19 10:23
支持火星哥
作者: Rysin    时间: 2019-5-19 21:13
只会红外对管+1
作者: qren    时间: 2019-5-21 07:42
哈哈,大神就是厉害
作者: Dior    时间: 2019-5-22 10:12
支持大哥!希望多出教学文章~
作者: 为伊生风    时间: 2019-7-1 19:25

作者: 逸仙狮    时间: 2019-7-11 13:49
很多队伍都将图传安装到特殊的位置,使其能够看到弹仓的一部分
作者: 视觉小白    时间: 2019-7-11 14:19
哦,原来是这样啊,学到了
作者: 秘密宝贝    时间: 2019-7-11 18:52
支持支持!!!
作者: 齐次炸弹    时间: 2019-7-15 17:45
裁判系统也可以读到补给了多少弹量,又能读取射频和发射速度,这样岂不是就能通过裁判系统计算出自己的余弹,然后发送到客户端界面美滋滋
作者: 独山骑身    时间: 2019-11-4 21:45
好东西要看
作者: 782640559    时间: 2019-11-5 19:54
好东西,虽然能力不够做出来,但先码住
作者: You蓝    时间: 2019-11-13 11:48
好东西,厉害
作者: 邹翔1    时间: 2019-11-20 20:24
长知识了

作者: 井岗山下    时间: 2020-1-6 13:44
支持下,学习剩余弹药测试方法
作者: 临风飘飘    时间: 2020-1-12 18:48
支持大哥!希望多出教学文章~
作者: djiuser_F9hYX13    时间: 2020-1-18 14:22
点赞支持
作者: djiuser_F9hYX13    时间: 2020-1-19 12:07
点赞支持
作者: djiuser_F9hYX13    时间: 2020-1-19 12:07
点赞支持
作者: 少然星    时间: 2020-7-12 18:42
很好 很棒的方法                                                              
作者: 3377916797    时间: 2020-10-28 23:20
大神,太强了吧,赞赞赞赞
作者: BENT    时间: 2021-1-9 10:16
学到了尝试一下
作者: 橘子哥    时间: 2021-8-10 20:13
哈哈,大神就是厉害




欢迎光临 RoboMaster (https://bbs.robomaster.com/) Powered by Discuz! X3.2