[官方开源] 【每周分享】操作手如何知道自己的剩余弹量?

[复制链接]
版主火星探索
2019-3-18 16:32:41 显示全部楼层

马上注册,玩转Robomaster!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 火星探索 于 2019-3-18 16:33 编辑

image001.jpg
在工厂里,许多饮料装罐流水线都采用自动化的设备,无需人工,机器就能将瓶罐用饮料装满。机器只要设定好一个量,每次就能注入同量的饮料。
image002.gif
有种难度比较大的是,工厂补充水库的水量时,需要知道水量是否过低,然后再补充对应需要的水量。这需要机器自动检测水位,再计算所需水量。
要如何知道自己的剩余量呢?在 RoboMaster 比赛中,机器人也面临同样的问题。

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

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

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

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

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

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


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

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

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

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

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

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

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

image017.jpg
如何让操作手看到弹量

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

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

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

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

image019.jpg


image021.jpg

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

跳转到指定楼层

[官方开源] 【每周分享】操作手如何知道自己的剩余弹量?

[复制链接]
版主花师小哲
2019-3-18 18:03:12 显示全部楼层
wow,好东西,我只会用红外对管

[官方开源] 【每周分享】操作手如何知道自己的剩余弹量?

[复制链接]
版主快拆小分队
2019-3-18 16:43:00 显示全部楼层
支持下
回复

使用道具 举报

[官方开源] 【每周分享】操作手如何知道自己的剩余弹量?

[复制链接]
中尉whl970831
2019-3-19 16:39:22 显示全部楼层
为啥总能见到楼上那两位

[官方开源] 【每周分享】操作手如何知道自己的剩余弹量?

[复制链接]
版主火星探索
 楼主| 2019-3-25 11:06:50 显示全部楼层
whl970831 发表于 2019-3-19 16:39
为啥总能见到楼上那两位

哈哈哈  

[官方开源] 【每周分享】操作手如何知道自己的剩余弹量?

[复制链接]
上等兵小步兵
2019-5-16 19:57:16 显示全部楼层
定量补弹
回复

使用道具 举报

[官方开源] 【每周分享】操作手如何知道自己的剩余弹量?

[复制链接]
上士Dior
2019-5-19 10:23:48 显示全部楼层
支持火星哥

[官方开源] 【每周分享】操作手如何知道自己的剩余弹量?

[复制链接]
下士Rysin
2019-5-19 21:13:35 显示全部楼层
只会红外对管+1

[官方开源] 【每周分享】操作手如何知道自己的剩余弹量?

[复制链接]
上等兵qren
2019-5-21 07:42:39 显示全部楼层
哈哈,大神就是厉害

[官方开源] 【每周分享】操作手如何知道自己的剩余弹量?

[复制链接]
上士Dior
2019-5-22 10:12:16 显示全部楼层
支持大哥!希望多出教学文章~

本版积分规则

触屏版 | 电脑版

Copyright © 2019 RoboMasters 版权所有

快速回复 返回顶部 返回列表