Files
makerspet--oomwoo/README.md
T
2026-07-13 10:20:56 +00:00

161 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!-- WEHUB_ZH_README -->
> [!NOTE]
> 本文档由 WeHub 基于上游 README 翻译整理,属于社区翻译,非官方中文文档。
> [English](./README.en.md) · [原始项目](https://github.com/makerspet/oomwoo) · [上游 README](https://github.com/makerspet/oomwoo/blob/HEAD/README.md)
> 原作者、版权与许可证归属以原始项目及本仓库 LICENSE 文件为准。
<div align="center">
# OOMWOO
*可自行搭建的开源扫地机器人。*
扫得干净 · 可二次开发 · Raspberry Pi · ROS2 · Home Assistant · 2D LiDAR · 3D 打印 · ESP32 · Arduino
![License](https://img.shields.io/badge/license-Apache--2.0-blue)
![Status](https://img.shields.io/badge/status-early%20development-orange)
</div>
## 这是什么?
OOMWOO 是一款可自行搭建的*开源家用扫地机器人*,面向 Raspberry Pi、ROS2、Home Assistant 和 3D 打印社区打造。它使用价格亲民的 2D LiDAR 绘制家中地图并自主导航。本地运行,日常功能无需云端,无厂商锁定。欢迎关注我们公开搭建的过程
[Discord](https://discord.gg/3y2JKz5T25) | [X](https://x.com/@0OMWO0) | [Instagram](https://www.instagram.com/oomw0o/) | [Facebook](https://www.facebook.com/profile.php?id=61591466775035) | [Reddit](https://www.reddit.com/r/oomwoo/) | [newsletter](https://stats.sender.net/forms/bo2rAK/view) | [YouTube](https://www.youtube.com/@makerspet) | [oomwoo.com](oomwoo.com) | [Tutorials](https://makerspet.com/learn/)
参考设计图——成品大致将呈现如下外观:
![Reference robot vacuum cleaner top](./assets/vacuum_model_top.webp)
![Reference robot vacuum cleaner bottom](./assets/vacuum_model_bottom.webp)
![Reference robot vacuum cleaner - top cover removed](https://github.com/makerspet/oomwoo/blob/main/assets/vacuum-no-top-back.webp)
## 目标
- 价格实惠,硬件、软件和固件完全开源
- 家用电器级品质——不是一次性搭建项目
- 易于搭建,提供从零到精通的逐步教程
- 2D LiDAR 建图与自主导航(ROS2 / Nav2
- 原生 Home Assistant 集成,支持本地控制
- 3D 可打印、有文档且可二次开发的车体
- 可使用自行采购的零件搭建
- 本地运行,日常功能无需云端
- 连接云端时可获得可选的额外功能
- 基于 ROS2 的应用,可自定义清扫行为
- 延伸目标:应用商店
- 延伸目标:LeRobot 集成、OpenClaw
*v0 目标:精简版搭建:*
- 3D 打印车体
- ROS2 Gazebo 仿真
- 配备 LiDAR 的手动 SLAM
- 在 Raspberry Pi 5 上运行 ROS2,和/或在 ESP32 上运行 micro-ROS 并在本地 PC 上运行 ROS2——待确定
开源交付物:
- [x] [软件开发环境](https://github.com/makerspet/oomwoo-install), robot [description package](https://github.com/makerspet/oomwoo-one/) and [tutorials](https://makerspet.com/blog/simulate-oomwoo-one-robot-vacuum-in-gazebo-with-ros-2/) (ROS2)
- [x] 占位用真实[扫地机](https://github.com/makerspet/proscenic-m6pro) and [tutorials](https://makerspet.com/blog/tutorial-connect-robot-vacuum-cleaner-to-ros-2-proscenic-m6-pro/) (temporary while OOMWOO is being designed)
- [ ] [物料清单(BoM](BOM.md) (in progress)
- [ ] 3D 可打印文件
- [ ] 固件
- [ ] 电机驱动与传感器 [I/O PCB](https://github.com/makerspet/oomwoo-io-board)
- [ ] 搭建、配置、启动与故障排查[说明](BUILD_INSTRUCTIONS.md)
- [ ] 演示视频
## 参与贡献
想要参与贡献?完整指南请参阅 [CONTRIBUTING](docs/CONTRIBUTING.md)。
OOMWOO 采用社区大规模*并行*搭建的组织方式。
扫地机及其软件划分为多个[模块](#requests-for-contributions),见下方列表。
志愿者可自由选择任意模块,并按自己的节奏开展工作。
对于*代码与仿真*模块,她在*自己的仓库*中开发软件包,并提交简短 PR 从模块处*链接*;对于*文档与规格*,她在 `contributions/module-name/<her-github-username>` 下以树内(in-tree)方式贡献文件。具体做法请参阅
[CONTRIBUTING](docs/CONTRIBUTING.md)。
欢迎多位开发者同时参与同一模块。
各模块的最优方案将随时间浮现,项目负责人拥有最终决定权。
1. 从[下方列表](#requests-for-contributions)中选择一个贡献项。
2. [告知我们](https://github.com/makerspet/oomwoo/discussions) 你的工作项及进展。
3. 查阅 [ARCHITECTURE.md](docs/ARCHITECTURE.md) 和
[SOFTWARE_INTERFACES.md](docs/SOFTWARE_INTERFACES.md) 了解系统设计与 ROS2 接口。
## 贡献征集
以下每个模块*现在即可动手*——可基于 Gazebo 仿真
([oomwoo-one](https://github.com/makerspet/oomwoo-one)) 或真实的*占位机器人*
(一款[已接入 ROS2 的 Proscenic M6 Pro](https://makerspet.com/blog/tutorial-connect-robot-vacuum-cleaner-to-ros-2-proscenic-m6-pro/)),
直到 OOMWOO 硬件就绪。择一开工,在
[Discussions](https://github.com/makerspet/oomwoo/discussions), 中告知我们,在你的自有仓库中搭建(文档与规格以树内方式贡献),并提交简短 PR 从模块处链接。
| 模块 | ID | 状态 | 备注 |
|---|---|---|---|
| ROS2 URDF + Gazebo sim | [urdf-gazebo-sim](./contributions/urdf-gazebo-sim) | 进行中 | 占位 URDF + Gazebo 仿真(参考:[oomwoo-one](https://github.com/makerspet/oomwoo-one); [@alvarosamudio](https://github.com/alvarosamudio/oomwoo_gazebo) 精选),硬件落地后细化 |
| 首次清扫:覆盖 + 建图 + 探索 | [clean-and-map](./contributions/clean-and-map) | 可开始工作 | 在 SLAM 建图与探索的同时进行覆盖清扫 |
| 自动清扫 | | 进行中 | 使用已有地图清扫整个房间(采用覆盖路径规划) |
| 回归测试 | | 进行中 | 搭建仿真器回归测试框架(Gazebo 中的自动清扫) |
| 已知地图上的定位与导航 | [nav-localize](./contributions/nav-localize) | 进行中 | Nav2 导航、AMCL 定位、丢失后重定位、恢复地图 |
| 回充循环:离桩、回桩、充电 | [dock-cycle](./contributions/dock-cycle) | 可开始工作 | 离桩、返回充电座、精准对接、充电座服务、丢失后寻桩 |
| 恢复行为与安全 | [recovery-safety](./contributions/recovery-safety) | 可开始工作 | 恢复阶梯、升级机制、暂停告警、安全传感器、状态上报 |
| 算力基准与内存优化 | [compute-benchmark](./contributions/compute-benchmark) | 进行中 | 测量 ROS2/Nav2/SLAM 内存占用,对比可组合节点,跟踪 4 GB -> 2 GB 目标 |
| 地面材质处理与沿边清扫 | [floor-care](./contributions/floor-care) | 可开始工作 | 沿墙/沿边行驶、地毯与硬木地板区分、拖布升降 |
| 清扫模式、分区与任务编排 | [cleaning-jobs](./contributions/cleaning-jobs) | 可开始工作 | 模式(常规/定点)、虚拟墙、房间分割、任务拆分与续扫 |
| 实机启动与验证 | [live-robot-bringup](./contributions/live-robot-bringup) | 可开始工作 | 将占位用 Proscenic M6 Pro 接入 ROS2,在硬件上复现仿真测试 |
| 为 BoM 零件采集 3D 模型(STEP | [source-3d-models](./contributions/source-3d-models) | 进行中 | 获取/测量/建模市售零件(轮子、风扇、万向轮等)的 STEP 文件,确保支架匹配 |
| 采购零件规格与数据手册 | [part-specs](./contributions/part-specs) | 进行中 | 查找/测量/逆向工程所采零件的规格(引脚定义、编码器 PPR、扭矩、风扇驱动方式等) |
| I/O + 电机驱动 PCB | [io-pcb](./contributions/io-pcb) | 进行中 | 带 CM4/CM5 插座的 I/O 板,STM32G070 MCU——电机、传感器、4S2P 充电、安全、FreeRTOS、与 CM4/CM5 的自定义串口、2D LiDAR 接头、IMU、音频串口/功放/扬声器、MIPI 摄像头接口;KiCad、JLCPCB |
| 将软件适配至 2GB RAM | [compute-benchmark](./contributions/compute-benchmark) | 进行中 | ROS2 节点组合、Rust;移除 Gazebo、桌面 UI |
> 规划中及暂缓的模块(机械设计、后期软件)收录于
> [RFC 待办清单](docs/RFC_BACKLOG.md)。
## 源代码参考
- [OOMWOO ROS2 与 Ubuntu 安装](https://github.com/makerspet/oomwoo-install/) 源代码
- [OOMWOO ROS2 URDF 包与配置](https://github.com/makerspet/oomwoo_urdf/) 源代码
- [remakeai 参考扫地机拆解](https://github.com/remakeai/vacuum-cleaner-teardown) —— 一款带基础充电座和固定拖布的商用 LiDAR 扫地机。
## 相关先行作品
- [AlieksieievYurii/vacuum-cleaner](https://github.com/AlieksieievYurii/vacuum-cleaner) — 一款 DIY 3D 打印扫地机器人(Raspberry Pi Zero W,基于陀螺仪,Fusion 360Android 控制应用,无充电座)
- [kaiaai/LDS](https://github.com/kaiaai/LDS), [kaiaai/lds2d](https://github.com/kaiaai/lds2d) — 开源 2D LiDAR 库(C++、Python),支持 23+ 种 LiDAR 型号
- [remakeai/vacuum_ros2_bridge](https://github.com/remakeai/vacuum_ros2_bridge) — 基于 3irobotix CRL-200 的扫地机器人(ProscenicROS2 桥接,完整 ROS2 控制
- [Valetudo](https://github.com/Hypfer/Valetudo) — 商用扫地机器人的免云端固件替代方案(本地应用级控制,非 ROS2)
- [Dennis Giese / robotinfo.dev](https://robotinfo.dev) — 商用扫地机器人的拆解与 root 可行性分析。
- [codetiger/VacuumTiger](https://github.com/codetiger/VacuumTiger) - 基于 3irobotix CRL-200 的扫地机器人底层控制逆向工程
- [Build a ROS2/LiDAR robot crash course](https://makerspet.com/blog/build-arduino-self-driving-robot-video-instructions/) - 若无机器人经验可看此教程
- [Open Mower](openmower.de) - 开源户外割草机
## 设计调研
我们调研了 2025–2026 年消费级扫地机器人市场格局(全球 + 中国可采购品牌,各价位段),以决定哪些方案值得借鉴、哪些可以跳过。对本项目构建的关键结论:
- *吸力是采购问题,而非工程问题。* 实际清洁效果*并不*与宣传的吸力(Pa)成正比;约 500 美元的中端机型往往胜过旗舰款。一台适中的*密封*外购电机 + 优质滚刷 + 严密的气流密封,即可媲美旗舰 —— *无需定制叶轮。*
- *「永不卡住」需要摄像头 + AI 传感器融合*,单靠 LiDAR 不够 —— LiDAR 对其约 10 cm 云台以下区域是盲的(电线、袜子等)。v1 主要依赖*防撞条*应对低矮障碍;基于视觉的避障是后续/实验性目标,并非 MVP 承诺。
- *防缠绕刷:* *锥形橡胶滚刷*最能抵抗毛发缠绕(用户头号抱怨之一),且易于 3D 打印。
- *拖地:* 3D 打印的*双旋转*拖布已具竞争力;自清洗滚刷拖地的优势被夸大且难以复现 —— 现阶段先跳过。
*值得研究的口碑机型:* Eufy Omni S2(避障)、Narwal Flow(滚刷拖地)、Ecovacs Deebot T90 Pro Omni(约 499 美元全能型)、Dreame X40 Ultra(双旋转拖布)。*Dreame* 也是与 [Valetudo](https://github.com/Hypfer/Valetudo)-rootable 兼容度最高的品牌 —— 最安全的拆解研究对象。*(各机型排名仅供参考,来自单次评测测试。)*
## 关于
项目名称 "OOMWOO" 是一个旋转对称字(rotational ambigram)—— 旋转 180° 后读法相同,就像机器人本身,朝各个方向在你家地板上漫游。
本项目由 makerspet.com 和 remake.ai 赞助。我们正在复用他们的开源方案。
- 若你不想四处搜罗零件,可在 [makerspet.com](https://makerspet.com), 购买套件(电机、PCB、滚刷、垫圈、LiDAR),提供方即本项目作者。套件仅为便利选项,绝非必需。*此处一切内容均保持开源。*
- 待开发应用时,[remake.ai](https://remake.ai) 将提供其机器人应用平台与应用商店。是否使用应用商店完全可选。扫地机器人将*始终开箱即支持免云端、本地运行,满足日常功能需求*。
## 许可证
代码以 [Apache License 2.0](LICENSE) 发布。
硬件设计文件(待添加)将以开放硬件许可证发布(待定)。
<a href="https://www.star-history.com/?type=date&repos=makerspet%2Foomwoo">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/chart?repos=makerspet/oomwoo&type=date&theme=dark&legend=top-left&sealed_token=_pwRsmK4mVgCA-wKPZeTQOv6tMzrsQLXFfDoOVMTu1hralpzmceqsNPdBJLLFUfct1DSWAvFA9QaH7KIYC5aiVuC6IXHO76GC8BQlLPlJZB67Vvj6AiwS9neO5174BaYtLDETkKmv9_M8IYiGhFSHHUf29kTBt5pUhW6HQcLpPjQ0GufF2KDPONMJdzV" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/chart?repos=makerspet/oomwoo&type=date&legend=top-left&sealed_token=_pwRsmK4mVgCA-wKPZeTQOv6tMzrsQLXFfDoOVMTu1hralpzmceqsNPdBJLLFUfct1DSWAvFA9QaH7KIYC5aiVuC6IXHO76GC8BQlLPlJZB67Vvj6AiwS9neO5174BaYtLDETkKmv9_M8IYiGhFSHHUf29kTBt5pUhW6HQcLpPjQ0GufF2KDPONMJdzV" />
<img alt="Star History Chart" src="https://api.star-history.com/chart?repos=makerspet/oomwoo&type=date&legend=top-left&sealed_token=_pwRsmK4mVgCA-wKPZeTQOv6tMzrsQLXFfDoOVMTu1hralpzmceqsNPdBJLLFUfct1DSWAvFA9QaH7KIYC5aiVuC6IXHO76GC8BQlLPlJZB67Vvj6AiwS9neO5174BaYtLDETkKmv9_M8IYiGhFSHHUf29kTBt5pUhW6HQcLpPjQ0GufF2KDPONMJdzV" />
</picture>
</a>