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。该比赛有两个主要挑战:
- 病虫害和杂草的识别与根除
- 通过机器人创建新的收获方法
我们的团队选择专注于第一个挑战。这是矿业学院首次参加 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 2019 代码库
- 普渡大学 AgBot 文章
- 普渡视觉回顾文章
- DTN 进步农民文章
- AgBot 的 Twitter/X 账号
- AgBot 官方网站
- Zach 的 GitHub
- Kevin 的 GitHub
- Tyler 的 GitHub
照片库
矿业学院 AgBot 团队,我们
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
我们的 AgBot 机器人
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
视频 / GIF
![]() |
![]() |
![]() |
![]() |
![]() |
竞赛场地
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
其他团队
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
FRC 1339(2014-2017)
![]() |
![]() |
其他随机图片
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |