三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

Robomaster S1巡线警戒程序开发,不完美的告一段落

Robomaster S1巡线警戒程序开发,不完美的告一段落

先不废话上Demo: 【Robomaster S1巡线警戒Demo】

这款大疆的Robomaster S1通过程序实现的功能如下:

  • S1 沿地面**蓝色**色带巡逻;定时6秒停车扫视是否有人。发现行人后:
  1. **hit≥3 即 FIRE**:告警 + 边瞄边射。
  2. 节奏:**射约 3 s****停火保持瞄准约 3 s**→ 再射 …
  3. 如果开火后人员离开,回到定时巡线循环。
  • 如果一开始就没找到蓝线:底盘停,**反复完整 SCAN**;有线再回 PATROL。 避免任何动作都不发生。

一句话:**沿线巡逻 → 停车扫人 → 发现即告警开火 → 做完再回扫/巡线。**

关于S1,让我拷贝用户手册里的说明简单介绍下:

RoboMaster™ S1 是一款基于 DJI™ RoboMaster 比赛打造的教育机器人。可敏捷移动的麦克纳姆轮全向底盘、灵活转动的云台和稳定低延时的图传系统,给用户带来身临其境的 FPV 操控驾驶和实弹射击体验。

S1 支持 Scratch 和 Python 编程,用户可通过项目式阶梯教程逐步掌握编程理论和机器人系统知识。

S1 具备单机驾驶和多人竞技模式,包含多种玩法。用户可使用安装有 RoboMaster App 的移动设备、手柄、键盘鼠标等控制机器人。

S1的麦轮移动方式很有特色,可以参考我之前清理麦轮的程序,看看所谓全向移动特点:

Robomaster S1巡线警戒程序开发,从清理车轮开始-CSDN博客

目前S1已经停止销售,官方的客户端也停止更新,我在Mac上实验了下目前的版本,还能用: S1 Mac客户端程序。如果用Windows电脑开发,应该更没问题。

与Grok Build合作开发流程

定义项目框架

这步相对简单,和Grok说明下你的目的,让它按照一般github项目要求,把对应目录和框架文件帮你建好,然后在VS Code里看看没问题,就可以进行下一步了。

明确需求,先文档再代码

这里最好要求Grok把对话里面讨论的需求,用MD文档写下来,告诉它后继的开发要先核对需求,如果有需要修改的地方,也是先改文档,再改代码。

另外要反复和他强调,不要把一些需求上的被扬弃的部分写进文档,只说明要做的功能。代码也类似。文档和代码要干净,体现当前要实现的功能,减少背负历史包袱,版本管理靠git,靠提交的comments,而不是文档和代码本身。

上传代码到S1

这里要避免一些坑:

  • 一定要选择Python,默认的“Block”是用Scratch图形化拖拽编程,不方便我们后面合作。
  • S1客户端只能单个程序上传,不支持文件、目录直接上传,导致我们要把所有的功能放在一个Python程序里面实现,一定要Grok做好代码内部的功能分块,方便理解和修改。

通过FPV和日志截图调试

调试的坑更多:

  • 运行程序时,请开FPV,这样你能看到摄像头实际拍摄了什么画面,人眼的动态范围太大,有时候我们自己会没意识到一道强光会干扰S1的视频识别功能。
  • S1的客户端不支持我们生成和下载日志文件,调试信息只能输出到控制台,而客户端控制台的文本不能拷贝,显示范围也很有限,只能通过长截图来给Grok build识别,我在这次开发中用了Xnip和1Capture,Xnip的长截图几乎不可用,1Capture差强人意,虽然也有几行丢失,但是能用。 截图放到项目的log目录,让Grok每次都去读取最新的文件,来协助调试。


原子世界踩坑多

在计算机里面编写程序时,你基本可以预期一个确定的结果,但是到了真实世界,和原子打交道,由于硬件限制,各种挑战会层出不穷。

  • 光线可能影响视觉识别。
  • 巡线采样只有单点,无法获取远、近点信息,急转时容易判断失误。
  • 识别人的API经常误报,需要加上几何框做额外的限制。
  • 云台移动时识别人员的误报太多,只能改成转45度再看一下。

最大的限制还是大疆已经不再支持S1,相关产品整合到Robomaster EP系列,卖给机构用户做儿童培训。所以S1虽然功能强大,但是可玩性的未来已经被限制。目前这个程序,虽然还是有各种各样的错误,但是进一步改进余地不大,整个项目我就告一段落。

代码链接: GitHub - dead-lee/s1-line-guard: RoboMaster S1 line-following sentry (patrol / scan / warn / fire) — onboard App Lab project · GitHub

最后贴个DJI自己介绍PID的视频,PID是物理世界完成闭环控制的核心,这个视频结合S1做的展示和说明非常不错。

【RoboMaster S1 精准目标追踪和自动控制入门课程】

← 返回列表