2019 AgBot 挑战

东高中

在我于东高中(科罗拉多州丹佛,2014-2018)期间,我积极参与课后活动,其中最有影响力的是机器人俱乐部AngelBotics。直到大二那年才加入,因为最初专注于足球。俱乐部主要参加FIRST 机器人竞赛(FRC),让我得以探索机械与电气工程以及编程。通过 AngelBotics,我学会使用 CAD 工具、3D 打印机和其他工程设备,接触到通常只在大学生中才会学习的 STEM 概念。最初我想成为量子物理学家,但在 AP 物理和机器人项目中,我发现自己并不擅长物理,因而转向了编程。

我最初在树莓派上写 Python 代码,随后在 AP 计算机科学课程中通过 Java 项目巩固了编程技能。尽管考试成绩不佳,我的老师 Nagel 先生鼓励我追求软件开发,强调项目比考试分数更重要。这促使我在大学选择计算机科学专业,梦想成为软件工程师,最终成为创始人。

虽然由于课程繁重和学习曲线陡峭,我在 AngelBotics 的参与并不深,但它点燃了我对机器人技术的终身热情。于是进入大学后,我决定加入大学机器人俱乐部,梦想有一天创办一家用机器人解决现实问题的公司。

矿业学院

从东高中毕业后,我在科罗拉多矿业学院(2018-2022)攻读计算机科学学士。第一学期,我了解了矿业机器人俱乐部,并发现了一个全新的机器人团队——AgBot。

AgBot 是一个新成立的机器人俱乐部,目标是构建机器人参加2019 年 AgBots Weed and Feed Competition。该比赛有两个主要挑战:

  1. 病虫害和杂草的识别与根除
  2. 通过机器人创建新的收获方法

我们的团队选择专注于第一个挑战。这是矿业学院首次参加 AgBot 竞赛,也是首次有矿业机器人俱乐部涉足农业领域,令人耳目一新。

我立刻被项目吸引。我的家族在土耳其世代务农,直到我父亲那一代。于是 AgBot 与我的家庭背景、机器人和编程的热情紧密相连,构建能帮助像我祖父母那样的农民的机器人令人兴奋。

开发

加入 AgBot 团队是我大学最难忘的经历之一,也是当时最艰难的项目。这个项目是我第一次深入使用 Python、Ubuntu 和ROS。在 FRC 中,一切都是 Java,这对我来说是全新的领域。虽然之前使用过 Python 和 Ubuntu,但从未接触过 ROS。学习 ROS 的工作方式是一场艰苦的战斗,我当时甚至不知道什么是 Python 环境。

我花了大约两周时间调试,让Lidar 能将可用数据发送到我编写的 ROS 节点。我的任务是实现一个ROS 节点 end_detector,使用 Lidar 数据检测机器人何时到达作物行的末端。现在听起来很简单,但当时感觉非常庞大。

我花了大约两周时间调试,让 Lidar 与我的代码通信。整个代码主要用 Python 编写(也有 C++),所以这部分代码全是 Python。调通后,我在校园里用随机的植物块测试逻辑。把装有 Lidar 的支架滚过它们,看看代码是否能检测到行末。经过多小时的调试,我终于在测试环境中让它工作。但当我们尝试把所有东西组合在一起时,情况就不同了。

我的大部分时间都在让硬件和软件相互通信。检测行末的逻辑排在第二位。但这是一段极好的学习经历。我从几乎不懂 ROS 到在 Jetson 板上使用实时 Lidar 数据编写和调试节点。期间,我从主要使用 Java 转向默认使用 Python。到 2025 年,我仍未在项目或工作中使用 Java。

团队与技术栈

我们在Nvidia Jetson TX2上运行 Ubuntu 16.04、ROS Kinetic 和 Python 2.7,连接Hokuyo URG 04LX UG01 Lidar。我们使用 Arduino 进行传感器输入(如超声波测距)。我们的代码处理感知、导航、控制和喷洒。仓库地址:GitHub Repo。我编写的代码在 end_detector.py 。以下是构成机器人主要组件的列表:

  • Ubuntu 16.04 Xenial
  • ROS Kinetic Kame
  • Python 2.7
  • Nvidia Jetson TX2
  • Hokuyo URG-04LX-UG01 Lidar
  • Arduino Uno & Mega
  • 直流电机、编码器、驱动器、电池等

团队不大,但有几位成员尤为突出:

Tyler 是俱乐部的领袖和创始人,我当时非常尊敬他,至今仍然如此。Zachary 负责软件开发,教会我很多关于软件开发和 ROS 的知识,我至今感激不已。

还有其他成员,如Kevin Barnard和 Amit Rotem。但我已不记得所有原始成员的名字和联系方式,因为俱乐部已结束超过 5 年。

大多数机器人开发在周末和夜深时进行,课程结束后才继续工作。工程学位和 AgBot 的工作非常辛苦,但我们坚持了下来。

旅程与混乱

我永远不会忘记这次旅行。比赛在印第安纳州西拉法叶的普渡大学校园附近举行,恰好在矿学院期末考试结束后,几乎没有时间恢复。

我们用 Tyler 的卡车把机器人和所有工具从科罗拉多州金色镇运到印第安纳。奇怪的是,我们在比赛周前一天才开始驱车。我们把所有东西——机器人、工具、电池、电脑——全部装上,开车从金色镇到西拉法叶,理论上 18 小时,实际约 20-22 小时,途中加油和休息。

Tyler 整程开车,喝咖啡怪兽。另一位队友(忘记名字了,但在照片里)有时接替他。途中下大雨,我们在一个关闭的加油站停下来,拿一块防水布保护机器人。那是混乱、混乱、大学机器人。我们还是成功了。

到达后,我们在场地搭起帐篷,摆好工具。我专注于完成代码并运行。大部分比赛时间,我们主要调试机器人并检查其他团队的酷炫机器人。

我们赢了吗?

没有

回顾过去,我们只是一些孩子,尝试构建超出经验的东西。其他团队水平更高,有的来自创业公司,有的来自研究实验室,有的得到完整的学术支持。我们是一群熬夜的本科生,希望 Python 能把 Lidar 数据转化为有用信息。

我们的机器人有缺陷,甚至在比赛时几乎无法工作。很多人因为觉得可能完成不了而退出,甚至有人没来。期末结束,机器人未准备好,士气低落。

但我们坚持了下来

我没有放弃… Tyler 没有放弃… 照片里的大家也没有放弃!

虽然我们没有获胜,也没有完全功能的机器人,但我不会用任何东西换取这段经历。我学会了 ROS、硬件调试、在压力下构建系统,也学会了忠诚。我意识到坚持到底的重要性。

2025 年的反思

2019 赛季后,AgBot 关闭。主要是因为 COVID 在一年后爆发,导致矿学院所有俱乐部停运 1-2 年,等世界恢复“正常”时我已毕业。

现在是 2025 年,回顾 AgBot,我把它视为我的起点。它给了我第一次真实的机器人经验,教会我如何与技术团队合作。它为我打开了通往惊人机会的道路。

此后,我在 eBay 担任后端工程师,部署服务,处理数百万指标。创办了首个专注于 AI 自动化网络安全渗透测试的创业公司。推出了Notify Cyber,吸引了数万访客。编写了 Docker、Kubernetes、Postgres 和高级 AI 基础设施的代码。

但 AgBot 仍是我人生中最好的经历之一。它混乱、压力大,有时甚至看似不可能,但它教会我的东西比任何课堂或教程都多。我学到即使没有完美的计划、足够的资金或最好的硬件,也能构建东西、学到很多、结识了不可思议的人。

感谢 2019 AgBot 团队的每个人。感谢那次 2019 公路旅行、加油站的防水布、以及不眠之夜。你们给了我追求大项目的勇气,无论多么不可能。

资源与链接

照片库

矿业学院 AgBot 团队,我们

GetStoredImage-1.jpeg GetStoredImage.jpeg IMG_9005.jpeg IMG_9006.jpeg
IMG_9663.jpeg IMG_9684.jpeg IMG_9685.jpeg IMG_9686.jpeg
IMG_9687.jpeg IMG_9688.jpeg IMG_9691.jpeg

我们的 AgBot 机器人

IMG_8854.jpeg IMG_8855.jpeg IMG_8856.jpeg IMG_8867.jpeg
IMG_8976.jpeg IMG_8977.jpeg IMG_9007.jpeg IMG_9008.jpeg
IMG_9037.jpeg IMG_9038.jpeg IMG_9039.jpeg IMG_9040.jpeg
IMG_9695.jpeg r1.jpeg r3.jpeg r5.jpeg
r6.jpeg r7.jpeg r9.jpeg

视频 / GIF

IMG_6724.gif NEHE1091.gif demo.gif random_demo.gif
rogo_hardware.gif

竞赛场地

IMG_8848.jpeg IMG_8849.jpeg IMG_8850.jpeg IMG_8851.jpeg
IMG_9042.jpeg IMG_9666.jpeg IMG_9668.png land.jpeg

其他团队

IMG_8827.jpeg IMG_8828.jpeg IMG_8857.jpeg IMG_8858.jpeg
IMG_8880.jpeg IMG_9651.jpeg IMG_9669.jpeg IMG_9671.jpeg
IMG_9672.jpeg IMG_9673.jpeg IMG_9674.jpeg IMG_9675.jpeg
IMG_9677.jpeg IMG_9678.jpeg IMG_9679.jpeg IMG_9696.jpeg
IMG_9697.jpeg gpage_2019.jpeg robot.jpeg

FRC 1339(2014-2017)

IMG_9629.jpeg IMG_9630.jpeg

其他随机图片

IMG_8825.jpeg IMG_8826.jpeg IMG_8852.jpeg IMG_8853.jpeg
IMG_8980.jpeg IMG_8981.jpeg IMG_9002.jpeg IMG_9003.jpeg
IMG_9043.jpeg mines_logo.png