正在上传图片(0/1)

用Python对机甲大师S1编程的最佳打开方式

 8
手机看帖 17 6405
众所周知,S1同时提供对Scratch和Python的支持。Scratch是MIT开发的面向中小学生编程教育的可视化平台,功能十分强大;但是对于高中生、大学生甚至广大创客同胞们,Python肯定是首选。

不过目前大疆开发团队还没有给出独立的SDK(软件开发环境),而app实验室里的编辑器功能又比较有限。因此,我想搭建一个自由、可拓展的开发环境。首先选择的编辑器是Sublime,一款轻量、强大的文本编辑器;通过插件功能,可以拓展它的功能(例如大家最喜欢的代码补全).

EasyS1是我专门为S1开发的一款Sublime插件,目前支持的功能有:
* 函数补全:这个是最主要的,不然根本记住那么多API函数
* 函数参数查询(各种enum类型)
* 跳转官网、论坛的链接

Tips:由于没有app的后台接口,与S1机器人的通信、上传程序无法实现;因此,编辑好的代码还是需要手工复制到app里,进行程序上传

## EasyS1
EasyS1是 Sublime Text 的一款插件,提供编辑S1 python代码的编程环境。做这个插件的目的是想让S1的编程体验更舒适,如果你有任何想法或建议,欢迎私信给我 或者发给我的邮箱:727233543@qq.com     谢谢~

## 准备工作
安装Sublime Text 3.0:一款轻量、强大的文本编辑器
官网:http://www.sublimetext.com/3


## 安装 EasyS1插件
1. 从我的github[https://github.com/sunjiawe/RoboMaster-Easy-S1], 下载 .zip压缩包
2. 解压zip文件,拷贝到SublimeText的Packages目录(Preferences菜单->Broswe Packages)


## 插件使用说明文档
### 新建脚本
1.用Sublime新建一个.py文件,并打开

2.首先将语法设为S1(继承自python):
ctrl + shift + P调出控制台,然后输入:"sss1" (Set Syntax S1的缩写)


### 函数补全
代码补全:指用户在输入一个字符串的部分内容时,就提供下拉菜单自动推荐相关常用字符串供用户选择以快速输入的一项功能特性。随着输入字母越多,可选的范围逐渐缩小。

start()
例如,最外层的start框架,可以输入s (会出现所有s开头的代码段,键盘上下键可以自由选择)
紧接着再输入一个t,则范围只缩小到start函数(因为只有它以"st"开头):
输入"回车键"或两次"Tab"键,可以确认选中的代码片段:

### 模块
目前S1官方提供的有以下模块:
· robot_ctrl:机器人运动模式
· gimbal_ctrl:控制云台
· chassis_ctrl:控制底盘
· armor_ctrl:控制装甲板
· gun_ctrl:控制发射器
· led_ctrl:控制LED
· vision_ctrl:视觉系统
· media_ctrl:媒体系统(相机、扬声器)
输入这些模块的前几个字母,就会列出该模块提供的所有函数:
右边带有关于相关函数及函数参数的说明

注意:中间不要输入. 不然会打断自动补全的解析


我比较习惯的取缩写方法:
· 模块前几个字符+函数每个单词的首字母:如 chacmwt chassis_ctrl.move_with_time
· 模块前几个字符+关键单词:例如 chacmove ==>找出所有与移动有关的函数


### 带参数函数
"chassis_ctrl"函数通过设定x、y和旋转三个速度分量,来控制机器人运动

因此补全函数后,还需要输入3个函数函数参数:
选择函数后,光标会自动跳到第1个参数的位置,键盘直接输入 速度数值即可
输入完第一个参数,按Tab键,会跳到第2个参数的位置;依次输入完3个参数,再按Tab跳到函数结尾,以进行后续代码的编写

### enum变量
enum是枚举量,本质就是常数。如果我需要通过改变某个参数来控制函数以不同的模式做事情,最简单的方法就是:用数字1代表模式a,用数字2代表模式b...

可是以上的方法的代码可读性很糟糕,很长时间以后,可能连自己都忘记了当初定义的数字1代表什么?我们可以使用语义更清晰的文本字符串来代替数字命名的方式。

所以,RM给出的API中有大量的enum变量

例如led_ctrl.set_flash()可以指定任意位置的LED闪烁频率,机器人上前后左右装甲板、云台左右装甲板都有LED,因此我们需要用不同的标记命名这些位置,以此让函数可以调用。
以上的armor_enum就是提过的"枚举量",有7种可选的取值:分别代表6个独立的位置 和 "所有位置",供7种配置

虽然,枚举量增加了代码的可读性。但是并没有降低我们编程时的记忆量,我们仍然需要记住全部的字符串。使用EasyS1插件,可以帮助你快速输入enum枚举量。

输入ledcsf(部分缩写,只要按循序即可),通过代码补全选择set_flash()函数
第一个参数的名称,告诉我们枚举量的名字是"armor_enum",我们只需要原地重新输入一遍armor_enum(使用部分缩写也可以):

这里我输入arenu,补全列表中就出现了7中可选的模式,根据自己的需求选择即可(键盘方向键).
结语:
祝机甲大师的社区越办越成熟,官方后续肯定也会开放更多的接口,S1的可玩性会越来越高的。 插件也还处于开发阶段,后续会不定期修复bug以及增加新功能~(更新版本可能需要下载最新的压缩包替换原文件喔)
评论
上传
你需要登录之后才能回帖    登录 | 注册
赞。有竞争能促进进步。
与机甲的通讯部分要是也能做到插件里的话,也许官方也可以为常用IDE(比如VSC等等)编写插件来实现机甲的开发环境。
总督  机甲大师 RoboMaster S1认证用户 2019-11-2 4#
赞啊,楼主威武,目前s1 自带的python开发环境还有待完善啊
楼主  机甲大师 RoboMaster S1认证用户 2019-11-2 5#
用中文编程机甲大师 RoboMaster S111-2 05:00
赞。有竞争能促进进步。
与机甲的通讯部分要是也能做到插件里的话,也许官方也可以为常用IDE(比如VSC等等)编写插件来实现机甲的开发环境。
其实不存在什么竞争,S1被创造出来本身就已经积淀了几年的RM比赛经验(这背后有无数优秀的大学生、工程师都做出了贡献);我做这个插件初衷是为了自己用着方便,提高编程效率    那干脆分享出来,吸引更多的爱好者一起来为社区做贡献       内心还是期待最终官方能出一个SDK啦(就像无人机平台那种成熟的SDK)
楼主  机甲大师 RoboMaster S1认证用户 2019-11-2 6#
总督机甲大师 RoboMaster S111-2 19:58
赞啊,楼主威武,目前s1 自带的python开发环境还有待完善啊
精华帖:api汇总  的作者出现啦~ 哈哈,有面子           你在武汉吗?那不能面基对战了,我在上海~
总督  机甲大师 RoboMaster S1认证用户 2019-11-4 7#
Natsu|夏机甲大师 RoboMaster S111-2 23:10
精华帖:api汇总  的作者出现啦~ 哈哈,有面子           你在武汉吗?那不能面基对战了,我在上海~
在武汉啊,我们正在筹备场地和规则,欢迎来湖北对战啊
☆Petrel☆  Osmo Pocket认证用户 2019-11-4 8#
这个需要大赞咯!
☆Petrel☆  Osmo Pocket认证用户 2019-11-4 9#
用户体验可以好老许多呃!~~~btw:上海哪里的?有空可以约辰光出来一道乱战咯!~~~嘎嘎~~~
好 顶一个
怎么复制不了啊  必须和机器人连线 才能写程序吗
Natsu|夏机甲大师 RoboMaster S111-2 23:10
精华帖:api汇总  的作者出现啦~ 哈哈,有面子           你在武汉吗?那不能面基对战了,我在上海~
请问楼主 怎么把写好的py程序 导入机器人中 复制不了啊 而且在联机下只能用scratch语言 python 只能看不能输入
路飛   2019-11-17 13#
写好的Python文档怎么复制到APP里面啊?我看到可以添加DSP,不能直接添加.py的文档~
习惯用Notepad++,楼主插件可否移植一下?
alex_dj  机甲大师 RoboMaster S1认证用户 2019-12-10 15#
娃娃要当科学家机甲大师 RoboMaster S111-16 23:40
怎么复制不了啊  必须和机器人连线 才能写程序吗
进入编程直接选择 python(beta) 别选scratch ,毕竟他是图形编程,你改了他,它怎么变回去。
alex_dj  机甲大师 RoboMaster S1认证用户 2019-12-10 16#
写大不错,赞一个。led_ctrl.gun_on()  需要改为 led_ctrl.gun_led_on()
livingwei  机甲大师 RoboMaster S1认证用户 2019-12-15 17#
问下楼主:现有的RM 自带python IDE 如何调节代码字体大小?
   
成天翔  机甲大师 RoboMaster S1认证用户 2020-2-24 18#
github又崩掉了,打不开。
猫猫虫   2023-1-8 19#
想问问能不能给S1机器人小车发送信息?
取消 点赞 评论
分享至:
回复:
上传
取消 评论
快速回复 返回顶部 返回列表