机器人·学HEXA机器人嵌入式 Linux C ARM

HEXA娱乐开发日志调研001——弹幕操控机器人

2018-03-12  本文已影响24人  阿棍儿_Leon

HEXA开发日志目录

上一篇 HEXA娱乐开发日志调研000——机器人直接推流可行


用弹幕操控机器人有三件事要做

1.获取弹幕

我目前的目标是B站,看了一下“弹幕姬”的源码,倒是没多复杂,就是一个线程处理心跳包,另一个线程处理弹幕,只是它是C#写的,移植挺麻烦的。

第一版要从简,所以准备先试试直接从网页上抓字符串。

从网页内容看这是件相当容易的事,因为最近的弹幕记录就在网页里,只要把网页爬(网络爬虫的爬)下来,用正则表达式一过滤,就能为所欲为了,只是有个小风险,即如果B站做了反爬,也许会有点麻烦。

2.弹幕转化为机器人行动

把弹幕解析为机器人指令就没什么好说的了,而比较麻烦的细节问题是怎么区分重复的命令。弹幕可能刷得很快,比如收到了10个命令都让机器人前进,这可能是十个人同时发的,事实上他们只希望机器人前进一次,如果机器人全都执行了,就会前进10次,很明显这样的控制反馈震荡很大,机器人的行动不容易收敛,观众会感觉永远控制不到机器人,可能这样也很好玩,暂且叫它“随缘”玩法吧。

虽然“随缘”玩法也有点意思,不过我还是希望观众能有一点控制感。我目前想到的方法是让观众发送命令的同时再发送点别的东西,第一版先打算加一个数字。比如形式可以为

<命令> #1

从某个时间点开始机器人会接受一个编号为1的命令,那些旧的、编号不是1的命令就不会再被执行了,当1号命令执行完毕,观众就得发2号命令,以此类推。这样,机器人在一个时间点只吃一条命令,观众在同一时间给机器人的命令只会被执行一条,这样机器人就变得可控多了。

还有,在众多1号命令里执行哪一条命令呢?这个规则就很有发挥空间了,这里的机会我不想多讲。

3.给观众反馈

观众需要知道当前机器人在执行什么,也许还要知道距离下次接受新命令的时间还有多久,也许还要知道点别的什么,这些都需要显示在HUD(可以理解为第一人称UI)上。

那么问题来了,如何把信息显示到视频上,或者说如何渲染HUD?

幸运的是这个问题也不是很困难,官方给了一个使用OpenCV(OpenCV官网)的例子,向图像上写几个字应该不是大问题。


下一篇 HEXA娱乐开发日志调研002(调研完毕)——弹幕获取方法修正

上一篇 下一篇

猜你喜欢

热点阅读