机器之心原创
作者:思源
假如给你一台机甲大师 S1,那么你能会拿它来做什么?是开着它巡视领地,仍是编个程赋予它智能?
早一段时间,机器之心拿到了一台机甲大师 S1,在畅快地操控与游戏之余,咱们不由想看看它的编程模块究竟是什么样的。看看除了手动操控外,咱们都能经过编程完结些什么,机甲大师 S1 又能自动化做些什么。带着这些疑问,机器之心实际操作了一波,看看机甲大师 S1 的大脑究竟能有多强。
「战役」体会
在刚拿到机甲大师 S1 的时分,当然是先体会一番它的操作与战役趣味了。咱们能够经过云台上的摄像头以第一人称的视角操作机器,当然也包含开战啦。由于咱们是经过 WIFI 衔接并操控机甲大师,所以操控间隔依 WIFI 信号而定,当然你也能够测验其它的衔接方法。
即便是单人形式,机甲大师 S1 也能完结许多功用,例如录制视频或摄影、辨认物体或射击水弹等等。如下是机器之心现已在办公室中开玩了。
实在场景版第一人称射击游戏。
在刚玩机甲大师 S1 时,可能会感到十分别致、十分有意思。但了解它的操作和各种功用后,它的操作趣味会逐步衰退,究竟没有其它机甲大师能一同对战。
不过值得幸亏的是,机甲大师 S1 还有「实验室」形式,咱们能够依据编程模块完结各种炫酷的玩法。
机甲大师 S1 编程模块
机甲大师 S1 的编程首要分为 Python 和 Scratch 两种,它们两者之间是能够直接转化的。整体而言,机甲大师供给了许多预界说的模块,咱们要做的便是调用不同的模块,并结构完好的流程。
机甲大师 S1 的功用模块大致能分为几大类,首要是操控机身行为的模块,包含灯火、移动和射击等等;其次是各种辨认模块,例如辨认到人、标志等等;最终是一些编程的规范模块,例如操控流或数据结构等等。
由于根本的才干与特性都是确认的,剩余的要点便是构建体系的逻辑。所以说,假如咱们了解了各种模块或 API 的界说,那么机甲大师 S1 的编程并不困难。
举个栗子
下面罗列一个简略的事例,咱们需求机甲大师 S1 开端旋转机身、云台来找人。假如检测到行人,那么就令机身的一切灯火都变成赤色,并昂首「看着」人。这样简略的一个逻辑能够快速经过 Scratch 完结,直接拖拽不同的模块就行了。其间不同类的模块色彩还不相同,例如 while、if 等操控句子都是蓝色;视觉辨认模块都是浅黄色。
如下展现了用 Scratch 编写上面逻辑的成果:
即便不太了解编程的读者,看看上面的模块差不多也能知道机甲大师 S1 会做些什么。根本上各种杂乱的使命或流程都能经过 Scratch 建立,各种功用也都能完结。关于一般的开发者而言,我以为直接运用 Scratch 编程更快捷一些,由于 Python 编程其实逻辑上也差不多,不过要了解各种 API。
如下是上面程序的 Python 代码,它的杂乱之处在于 API 的挑选与装备,其它程序操控流或进程并不会太杂乱。
尽管说是用 Python 编写的程序和 Scratch 是等价的,但这么多 API 仍是需求花必定功夫来了解的。如上所示,咱们并不需求导入各种模块,直接能够调用 vision_ctrl、led_ctrl 和 gimbal_ctrl 等接口,各 API 的参数也与 Scratch 中的差不多。
假如咱们用 Python 写机甲大师 S1 的程序,那么咱们这样的初学者会遇到一些问题。首要机甲大师 S1 好像暂时没有供给完善的 Python API 文档,只在每一个 Scratch 模块下介绍了对应的 API,但该 API 的行为与用法并没有展现。其次,每一次查找 API 时,不能经过查找直接定位,咱们先要了解 Scratch 模块,才干找到对应的 API。
编程攻略中的 Python API 示例。
最终,至少在机器之心测验用 Python 编程时,没感觉到它的定制化优势。一切高层 API 的接口都是封装好的,咱们只能运用现有的功用模块完结一些流程。比如说机甲大师 S1 的辨认功用,它支撑行人、特定符号、特定姿态和其它机器人的检测,它们都有十分完善的 API。可是假如需求辨认新的方针,例如「猫」,那么它是做不到的,咱们也无法给它加上咱们自己练习的 ML 模型。
当然,机甲大师的底层开发必定十分杂乱,要给它加上新的特性必定很费事,可是机器之心仍是希望机甲大师能供给一系列教程,让机器学习开发者也能将自己的模型加载到上面。
整体而言,经过这个简略的事例,咱们发现关于一般的用户,运用 Scratch 写程序要比用 Python 写高效得多。它十分合适作为青少年的编程启蒙玩具,用 Scratch 编写出炫酷的运用。
Scratch 编程模块
最终咱们要点介绍一下机甲大师该怎样运用 Scratch 进行编程。机甲大师 S1 的编程都在运用程序内完结,不同的言语都有自己的修正窗口。如下所示为 Scratch 的编程界面,其间图形化的编程模块有一百多个。为了便于查找模块,机甲大师依照不同的功用以不同色彩的模块进行分类,这样建立起来会比较简略。
编程攻略地址:https:///cn/robomaster-s1/programming-guide
咱们简略建立了一个辨认人的流程,机甲大师能够旋转车身找人,找到了就向行人行进。如下所示为程序的调试窗口,履行后能够一起看到摄像头的画面与车身的状况,这样就能快速测验刚刚编写程序的作用。
鄙人面的动图中,咱们能够看到程序运转的动态进程。这儿由于场所有限,咱们将向前平移间隔设定为了 0 米,假如不为 0,那么机甲大师在检测到人的一起会抬起「炮筒」向人行进。如下所示当检测到人时,机甲大师会昂首。
其实更好的一种方法是先用 Scratch 建立整个架构,然后再在 Python 开发环境下修正细节。比如说,拉拽的 Scratch 模块只要少量几种条件句子,可是假如在 Python 环境下就能运用 elif 等更合理的句子。
一起,许多 API 的参数也是不太相同的,在 Scratch 环境下,灯火只能装备几种常见的色彩,可是在 Python 环境下,能够经过 RGB 的值来装备灯火色彩。如下是上述程序的 Python 代码,咱们能够进一步调整细节。
如上仅仅扼要介绍机甲大师 S1 该怎样编程,咱们经过简略的操作就完结一个「智能」的机器人。整体来说,运用已有的高层 API 做个智能机器人就现已十分足够了,咱们不能希望能运用愈加杂乱的底层接口。带小朋友做个炫酷的机甲大师,这也是十分有意思的应战啊。
本文为机器之心原创,转载请联络本大众号取得授权。
------------------------------------------------