守护网格

GitHub 仓库LinkedIn 帖子演示视频黑客马拉松详情

关于

Guardian Grid (SF) 是一款智慧城市紧急疏散工具,帮助社区在重大灾害中快速且安全地响应。系统允许城市管理员或应急官员在交互式地图上标记危险区域(如自然灾害影响区),并直接定义安全区域。随后使用先进的路径寻找算法生成并传达最安全的疏散路线,考虑当前的危害因素。

当紧急情况发生时,官员可以更新危险和安全区域,并立即通过短信向居民手机发送警报。每个人会收到一个指向网页门户的链接,门户使用其当前位置显示一条考虑危险的安全路线,并通过 Google Maps 提供即时导航。随着情况变化,路线会实时重新计算,并发送新警报以保持所有人更新和安全。查看演示:

在当前的演示代码中,警报通过短信发送到单个电话号码,仅用于演示和测试。然而,在真实部署中,Guardian Grid SF 将与 无线紧急警报 (WEA) 系统 集成,向受影响城市或地区的所有人广播疏散警报。

虽然目前的重点是旧金山湾区,但我们的愿景是将 Guardian Grid 推广到全球其他主要城市。我们的目标是提供一个强大的系统,实现协同且数据驱动的疏散,使每个城市都能保护其居民,最小化拥堵,并在紧急情况展开时快速响应。

团队 Aspen

Guardian Grid 由国家安全黑客马拉松期间的团队 Aspen 开发。我们的团队成员包括:

我们感谢导师和组织者的指导与支持,包括 Elliott Wolf、Adam Papa 和 Ray Del Vecchio。

我们的黑客马拉松之旅

2025 年 4 月 26-27 日的黑客马拉松周末汇聚了一次意想不到却强大的合作。我亲密的朋友 Dylan Eck 与我分别从科罗拉多和密苏里前往旧金山,参加 Cerebral Valley 的第二届国家安全黑客马拉松。在活动启动时,我们结识了 Christina HuangIoana Munteanu,Team Aspen 因此诞生。

LinkedIn 帖子

Ioana 的 LinkedIn 帖子,突出我们的黑客马拉松经历

黑客马拉松提出了两个不同的挑战。主要赛道是基于项目的竞争,设有传统的名次奖项;而特别挑战邀请参与者对 Code Metal 的冷却系统进行伦理黑客。鉴于我们团队的多元专长——尤其是 Dylan 同时具备软件和机械工程背景——我们决定在 24 小时内同时攻克这两个挑战。

这种雄心勃勃的做法带来了两个重要成果:

  1. Guardian Grid (SF) - 我们的主要黑客马拉松项目,聚焦紧急疏散:

  2. Code Metal Challenge - 我们对其冷却系统完成了最成功的渗透测试,赢得了 5,000 美元的特别奖。虽然该方案仍保密,但它展示了我们团队在软件和热力系统方面的技术深度。

虽然 Guardian Grid 未能在主赛道中获得前三名,但评委认可了其潜在影响力和创新方法。项目范围宏大,而在两个挑战之间分配精力导致我们无法在时间限制内实现所有设想的功能。尽管如此,评委的反馈验证了我们方案在城市应急管理中的重要意义。

这次黑客马拉松是一段变革性的经历。除了技术成就和奖金之外,它还促成了新友谊,展示了在压力下多元技能集合的力量。在经历了 2024 年底和 2025 年初的个人挑战后,这次成功尤为意义深远,令人振奋。

黑客马拉松详情

Guardian Grid (SF) 是在第二届 National Security Hackathon(2025 年 4 月 26-27 日)期间构建的,由 Cerebral Valley 与 Shield Capital 联合主办,并与斯坦福 DEFCON 合作。该活动汇聚了技术人员和工程师,针对美国军方利益相关者策划的国家安全问题陈述开发解决方案,并得到政府、军方和创业导师的指导。

  • 周末包括防务技术职业博览会和斯坦福大学的团队建设活动,随后在旧金山进行 24 小时的黑客马拉松。
  • 赞助商和支持者包括 Shield Capital、In-Q-Tel、北约创新基金、Vannevar Labs、Scale AI、Groq、Windsurf、Anthropic、Microsoft、Maxar、Dedrone、Distributed Spectrum 和 Code Metal。
  • 黑客马拉松类别包括智能城市、战争游戏、海事模式分析、AI 部署的网络安全、射频导航、通用国家安全,以及 Hack A Refrigeration System

黑客马拉松的主要赛段设有奖项,第一名奖励 3,000 美元和 Starlink 设备,第二名 2,000 美元,第三名 1,000 美元。但还有一个针对冷藏系统挑战的特殊隐藏奖,奖金为 5,000 美元。

我们的团队同时参加了 Smart CitiesHack A Refrigeration System 两个挑战。Guardian Grid (SF) 是我们的 Smart Cities 参赛作品。我们在冷藏系统挑战中获得了 5,000 美元的特别奖和荣誉提名,而我们的 Smart Cities 方案也获得了评委和同行的高度评价。

评委和同行认可 Guardian Grid (SF) 是对紧急管理中重要问题的有影响力的响应,赞扬其创意、实用方法以及避免仅使用大语言模型(LLM)技术作为万能解决方案的做法。尽管由于在两个挑战之间分配资源导致时间受限,我们的 Smart Cities 项目未能获得前三名奖项,但评委对其潜力和相关性印象深刻。我们的团队荣幸地获得了此认可,并赢得了 Hack A Refrigeration System 挑战。

在我们的 LinkedIn 帖子 中可以找到更多细节和感想,黑客马拉松的照片库请点击 此处 查看。

GPS 数据来源

为了在旧金山湾区进行路径寻找和地图绘制,我们需要精确且全面的道路数据。我们最初尝试使用 Google Maps API 和 Mapbox API 来获取这些数据。然而,它们的许可限制和功能局限阻止我们以符合黑客马拉松目标的方式获取或使用底层路由图。基于这些限制,我们转而使用开放的原始地理数据集。我们通过以下两个开源渠道获取了这些原始地理数据:

线性要素代表旧金山湾区的道路。该要素集由大都会交通委员会 (MTC/ABAG) 使用所有县级 2021 年 TIGER/Line shapefile 汇编而成。数据集包括所有主要、次要、当地社区和农村道路、城市街道、车辆小径、坡道、服务车道、巷道、私人道路、自行车道、马道/骑马路径、人行道、步行小径以及全区域的楼梯。

  • 该特征集为每个县包含唯一的道路段,并包括单一路段具有多个名称的情况(例如,一条州际公路既有编号又有本地名称)。
  • 主干道是主要的分隔高速公路,而次干道是该地区的主要干线。
  • 数据集包含用于识别道路类型、管辖权等的属性列,支持灵活的路径规划和数据分析。

您可以在MTC 数据集来源了解更多关于许可和数据细节。

如何运行

  1. 克隆此仓库并进入该目录。

  2. 设置你的 .env.local 文件。参考 env.local.example 文件了解需要哪些环境变量。请注意,你需要一个用于地图 UI 和地理编码的 MapBox API 密钥,一个用于短信提醒(仅演示)的 TextBelt API 密钥,以及演示期间用于发送短信的电话号码。

  3. 创建 .env.local 文件后,你可以开始设置 GuardianGrid 的所有服务,包括:

    • frontend:应用的前端界面。
    • backend:应用的后端,包括地图路径寻找逻辑。
  4. 要设置 frontend 服务,请确保已安装 Yarn 并运行:

    yarn install
    
  5. 要设置 backend 服务,请执行以下操作:

    # go into this directory
    cd ./src/backend
    
    # set up a python environment
    python3 -m venv env
    
    # activate the python environment
    source env/bin/activate
    
    # install dependencies
    pip3 install -r requirements.txt
    
    # deactivate python environment
    deactivate
    
    # return to the project's root directory
    cd -
    
  6. 完成所有设置后,最后一步是运行应用。你需要两个独立的终端窗口或标签页,分别称为 Terminal #1Terminal #2

  7. Terminal #1 中,启动 backend 服务:

    # go into the backend service directory
    cd ./src/backend
    
    # activate the python environment
    source env/bin/activate
    
    # run the backend
    bash ./run.sh
    
  8. Terminal #2 中,启动 frontend 服务:

    yarn dev
    
  9. 所有服务运行后,打开浏览器并访问:http://localhost:3000/

  10. 完成后,关闭 Terminal #1Terminal #2