docs: make Chinese README the default

This commit is contained in:
wehub-resource-sync
2026-07-13 10:20:56 +00:00
parent 309b76afaf
commit 9bd6ed170f
+103 -119
View File
@@ -1,171 +1,155 @@
<!-- 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
*Open-source robot vacuum you build yourself.*
*可自行搭建的开源扫地机器人。*
Clean well · Hackable · Raspberry Pi · ROS2 · Home Assistant · 2D LiDAR · 3D printed · ESP32 · Arduino
扫得干净 · 可二次开发 · 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>
## What is this?
## 这是什么?
OOMWOO is an *open-source home robot vacuum* you can build yourself, made for the
Raspberry Pi, ROS2, Home Assistant, and 3D-printing communities. It uses an
affordable 2D LiDAR to map your home and navigate on its own. Local, no
cloud required for regular functionality, no vendor lock-in. Follow us building in public
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 design images - this is approximately how the finished design will look:
参考设计图——成品大致将呈现如下外观:
![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)
## Goals
## 目标
- Affordable, fully open hardware, software and firmware
- Home appliance product quality - not a throwaway build
- Easy to build, with step-by-step zero-to-hero instructions
- 2D LiDAR mapping and autonomous navigation (ROS2 / Nav2)
- Native Home Assistant integration for local control
- 3D-printable, documented, and hackable chassis
- Buildable from parts you source yourself
- Local, no cloud required for regular functionality
- Optional extra functionality when connected cloud
- Apps on top of ROS2 to customize vacuum operation
- Stretch goal: App store
- Stretch goal: LeRobot integration, OpenClaw
- 价格实惠,硬件、软件和固件完全开源
- 家用电器级品质——不是一次性搭建项目
- 易于搭建,提供从零到精通的逐步教程
- 2D LiDAR 建图与自主导航(ROS2 / Nav2
- 原生 Home Assistant 集成,支持本地控制
- 3D 可打印、有文档且可二次开发的车体
- 可使用自行采购的零件搭建
- 本地运行,日常功能无需云端
- 连接云端时可获得可选的额外功能
- 基于 ROS2 的应用,可自定义清扫行为
- 延伸目标:应用商店
- 延伸目标:LeRobot 集成、OpenClaw
*v0 target: bare-bones build:*
*v0 目标:精简版搭建:*
- 3D-printed chassis
- ROS2 Gazebo sim
- LiDAR with manual SLAM
- ROS2 on Raspberry Pi 5 AND/OR ESP32 running micro-ROS with ROS2 on local PC - decision TBD
- 3D 打印车体
- ROS2 Gazebo 仿真
- 配备 LiDAR 的手动 SLAM
- Raspberry Pi 5 上运行 ROS2,和/或在 ESP32 上运行 micro-ROS 并在本地 PC 上运行 ROS2——待确定
Open Source Deliverables:
开源交付物:
- [x] [Software development environment](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] Placeholder real [vacuum cleaner](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)
- [ ] [Bill of materials (BoM)](BOM.md) (in progress)
- [ ] 3D-printable files
- [ ] Firmware
- [ ] Motor drivers and sensors [I/O PCB](https://github.com/makerspet/oomwoo-io-board)
- [ ] Build, setup, bringup and troubleshooting [instructions](BUILD_INSTRUCTIONS.md)
- [ ] Demo video(s)
- [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
## 参与贡献
Would you like to contribute? See [CONTRIBUTING](docs/CONTRIBUTING.md) for the full guide.
想要参与贡献?完整指南请参阅 [CONTRIBUTING](docs/CONTRIBUTING.md)
OOMWOO is organized to built by the community, massively *in parallel*.
The vacuum and its software are subdivided into [modules](#requests-for-contributions), see list below.
OOMWOO 采用社区大规模*并行*搭建的组织方式。
扫地机及其软件划分为多个[模块](#requests-for-contributions),见下方列表。
A volunteer picks whatever module she wants and works on it whenever she wants.
For *code and simulation* modules she builds her package in her *own repo* and sends
a short PR *linking* it from the module; for *docs and specs* she contributes files
in-tree under `contributions/module-name/<her-github-username>`. See
[CONTRIBUTING](docs/CONTRIBUTING.md) for how this works.
志愿者可自由选择任意模块,并按自己的节奏开展工作。
对于*代码与仿真*模块,她在*自己的仓库*中开发软件包,并提交简短 PR 从模块处*链接*;对于*文档与规格*,她在 `contributions/module-name/<her-github-username>` 下以树内(in-tree)方式贡献文件。具体做法请参阅
[CONTRIBUTING](docs/CONTRIBUTING.md)。
Multiple developers are welcome to work on the same module.
The best solution for each module surfaces over time, with the project master having the last call.
欢迎多位开发者同时参与同一模块。
各模块的最优方案将随时间浮现,项目负责人拥有最终决定权。
1. Pick a contribution from the [list below](#requests-for-contributions).
2. [Let us know](https://github.com/makerspet/oomwoo/discussions) you're working on it and your progress.
3. Check [ARCHITECTURE.md](docs/ARCHITECTURE.md) and
[SOFTWARE_INTERFACES.md](docs/SOFTWARE_INTERFACES.md) for the system design
and ROS2 interfaces.
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 接口。
## Requests for Contributions
## 贡献征集
Every module below is *actionable now* — build it against the Gazebo simulation
([oomwoo-one](https://github.com/makerspet/oomwoo-one)) or a real *placeholder robot*
(a [Proscenic M6 Pro connected to ROS2](https://makerspet.com/blog/tutorial-connect-robot-vacuum-cleaner-to-ros-2-proscenic-m6-pro/)),
until OOMWOO hardware is ready. Pick one, tell us in
[Discussions](https://github.com/makerspet/oomwoo/discussions), build it in your own
repo (docs and specs go in-tree), and send a short PR linking it from the module.
以下每个模块*现在即可动手*——可基于 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 从模块处链接。
| Module | ID | Status | Notes |
| 模块 | ID | 状态 | 备注 |
|---|---|---|---|
| ROS2 URDF + Gazebo sim | [urdf-gazebo-sim](./contributions/urdf-gazebo-sim) | In progress | Placeholder URDF + Gazebo sim (reference: [oomwoo-one](https://github.com/makerspet/oomwoo-one); [@alvarosamudio](https://github.com/alvarosamudio/oomwoo_gazebo) featured), refined when hardware lands |
| First clean: coverage + mapping + exploration | [clean-and-map](./contributions/clean-and-map) | Ready to start work | Coverage cleaning while SLAM-mapping and exploring |
| Auto cleaning | | In progress | Clean the entire room using an existing map (using coverage path planning) |
| Regression tests | | In progress | Set up simulatior regression test framework (auto cleaning in Gazebo) |
| Localization & navigation on a known map | [nav-localize](./contributions/nav-localize) | In progress | Nav2 nav, AMCL localization, relocalize when lost, resume map |
| Dock cycle: undock, dock, recharge | [dock-cycle](./contributions/dock-cycle) | Ready to start work | Undock, return-to-dock, precise docking, station services, find dock when lost |
| Recovery behaviors & safety | [recovery-safety](./contributions/recovery-safety) | Ready to start work | Recovery ladder, escalation, pause-and-alert, safety sensors, status reporting |
| Compute benchmark & memory reduction | [compute-benchmark](./contributions/compute-benchmark) | In progress | Measure ROS2/Nav2/SLAM memory, compare composable nodes, and track the 4 GB -> 2 GB target |
| Floor-surface handling & edge cleaning | [floor-care](./contributions/floor-care) | Ready to start work | Wall/edge following, carpet vs hardwood, mop lift/lower |
| Cleaning modes, zones & job orchestration | [cleaning-jobs](./contributions/cleaning-jobs) | Ready to start work | Modes (regular/spot), virtual walls, room segmentation, job splitting + resume |
| Live robot bring-up & validation | [live-robot-bringup](./contributions/live-robot-bringup) | Ready to start work | Connect the placeholder Proscenic M6 Pro to ROS2, re-run sim tests on hardware |
| Source 3D models (STEP) for BOM parts | [source-3d-models](./contributions/source-3d-models) | In progress | Obtain / measure / model STEP files of off-the-shelf parts (wheels, fans, caster…) so mounts fit |
| Procure part specs & datasheets | [part-specs](./contributions/part-specs) | In progress | Find/measure/reverse-engineer specs (pinouts, encoder PPR, torque, how to drive fans…) for sourced parts |
| I/O + motor-driver PCB | [io-pcb](./contributions/io-pcb) | In progress | I/O board with CM4/CM5 socket, STM32G070 MCU - motors, sensors, 4S2P charging, safety, FreeRTOS, custom serial to CM4/CM5, 2D LiDAR header, IMU, audio serial/amp/speaker, MIPI camera(s) i/f; KiCad, JLCPCB |
| Fit software into 2GB RAM | [compute-benchmark](./contributions/compute-benchmark) | In progress | ROS2 node composition, Rust; remove Gazebo, desktop UI |
| 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 摄像头接口;KiCadJLCPCB |
| 将软件适配至 2GB RAM | [compute-benchmark](./contributions/compute-benchmark) | 进行中 | ROS2 节点组合、Rust;移除 Gazebo、桌面 UI |
> Planned and on-hold modules (mechanical design, later-phase software) live in the
> [RFC backlog](docs/RFC_BACKLOG.md).
> 规划中及暂缓的模块(机械设计、后期软件)收录于
> [RFC 待办清单](docs/RFC_BACKLOG.md)
## Source code reference
## 源代码参考
- [OOMWOO ROS2 and Ubuntu installation](https://github.com/makerspet/oomwoo-install/) source code
- [OOMWOO ROS2 URDF package and config](https://github.com/makerspet/oomwoo_urdf/) source code
- [remakeai reference vacuum teardown](https://github.com/remakeai/vacuum-cleaner-teardown) — a consumer LiDAR vacuum with a basic dock and stationary mop.
- [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 扫地机。
## Related prior art
## 相关先行作品
- [AlieksieievYurii/vacuum-cleaner](https://github.com/AlieksieievYurii/vacuum-cleaner) — a DIY 3D-printed robot vacuum (Raspberry
Pi Zero W, gyroscope-based, Fusion 360, Android control app, no dock)
- [kaiaai/LDS](https://github.com/kaiaai/LDS), [kaiaai/lds2d](https://github.com/kaiaai/lds2d) — open-source 2D LiDAR libraries (C++, Python) supporting 23+ LiDAR models
- [remakeai/vacuum_ros2_bridge](https://github.com/remakeai/vacuum_ros2_bridge) — ROS2 bridge for a 3irobotix CRL-200-based vacuum (Proscenic), full ROS2 control
- [Valetudo](https://github.com/Hypfer/Valetudo) — cloud-free firmware replacement for commercial vacuums (local app-level control, not ROS2)
- [Dennis Giese / robotinfo.dev](https://robotinfo.dev) — teardowns and rootability of commercial robot vacuums.
- [codetiger/VacuumTiger](https://github.com/codetiger/VacuumTiger) - 3irobotix CRL-200-based vacuum low-level control reverse engineered
- [Build a ROS2/LiDAR robot crash course](https://makerspet.com/blog/build-arduino-self-driving-robot-video-instructions/) - watch this if you have no robotics experience
- [Open Mower](openmower.de) - open-source outdoor lawn mower
- [AlieksieievYurii/vacuum-cleaner](https://github.com/AlieksieievYurii/vacuum-cleaner) — 一款 DIY 3D 打印扫地机器人(Raspberry Pi Zero W,基于陀螺仪,Fusion 360,Android 控制应用,无充电座)
- [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) - 开源户外割草机
## Design research
## 设计调研
We reviewed the 20252026 consumer robot vacuum landscape (global + China-sourceable
brands, all price tiers) to decide which solutions to copy and which to skip. Key
takeaways for the build:
我们调研了 2025–2026 年消费级扫地机器人市场格局(全球 + 中国可采购品牌,各价位段),以决定哪些方案值得借鉴、哪些可以跳过。对本项目构建的关键结论:
- *Suction is a sourcing problem, not an engineering one.* Real-world cleaning does
*not* track advertised suction (Pa); ~$500 mid-tier models beat flagships. A
moderate *sealed* sourced motor + a good brush + tight airflow sealing matches
flagships — *no custom impeller needed.*
- *"Never gets stuck" needs camera + AI sensor fusion*, not LiDAR alone — LiDAR is
blind below its ~10 cm turret (cables, socks). v1 leans on the *bumper* for low
obstacles; vision-based avoidance is a later / experimental goal, not an MVP promise.
- *Anti-tangle brush:* a *tapered rubber roller* resists hair-wrap best (a top user
complaint) and is easy to 3D-print.
- *Mop:* a 3D-printed *dual-spinning* mop is competitive; the self-washing roller
mop's edge is overstated and hard to replicate — skip it for now.
- *吸力是采购问题,而非工程问题。* 实际清洁效果*并不*与宣传的吸力(Pa)成正比;约 500 美元的中端机型往往胜过旗舰款。一台适中的*密封*外购电机 + 优质滚刷 + 严密的气流密封,即可媲美旗舰 —— *无需定制叶轮。*
- *「永不卡住」需要摄像头 + AI 传感器融合*,单靠 LiDAR 不够 —— LiDAR 对其约 10 cm 云台以下区域是盲的(电线、袜子等)。v1 主要依赖*防撞条*应对低矮障碍;基于视觉的避障是后续/实验性目标,并非 MVP 承诺。
- *防缠绕刷:* *锥形橡胶滚刷*最能抵抗毛发缠绕(用户头号抱怨之一),且易于 3D 打印。
- *拖地:* 3D 打印的*双旋转*拖布已具竞争力;自清洗滚刷拖地的优势被夸大且难以复现 —— 现阶段先跳过。
*Well-loved models worth studying:* Eufy Omni S2 (obstacle avoidance), Narwal Flow
(roller mop), Ecovacs Deebot T90 Pro Omni (~$499 all-rounder), Dreame X40 Ultra
(dual-spinning mop). *Dreame* is also the most [Valetudo](https://github.com/Hypfer/Valetudo)-rootable
brand — the safest donor to study. *(Per-model rankings are directional, from
single-run reviewer tests.)*
*值得研究的口碑机型:* Eufy Omni S2(避障)、Narwal Flow(滚刷拖地)、Ecovacs Deebot T90 Pro Omni(约 499 美元全能型)、Dreame X40 Ultra(双旋转拖布)。*Dreame* 也是与 [Valetudo](https://github.com/Hypfer/Valetudo)-rootable 兼容度最高的品牌 —— 最安全的拆解研究对象。*(各机型排名仅供参考,来自单次评测测试。)*
## About
## 关于
The project name "OOMWOO" is a rotational ambigram - it reads the same flipped 180°, like the robot itself, roaming your floor in every direction.
项目名称 "OOMWOO" 是一个旋转对称字(rotational ambigram)—— 旋转 180° 后读法相同,就像机器人本身,朝各个方向在你家地板上漫游。
The project is sponsored by makerspet.com and remake.ai. We are reusing their open-source solutions.
- If you'd rather skip the parts hunt, a kit (motors, PCB, brushes, gaskets, LiDAR) will be available at [makerspet.com](https://makerspet.com), from the same maker behind this project. The kit is a convenience, never a requirement. *Everything here stays open.*
- When we get to apps, [remake.ai](https://remake.ai) will be providing its robot apps platform and app store. Using the app store will be entirely optional. The vacuum will *always support cloud-free, local operation for regular functionality out-of-the-box*.
本项目由 makerspet.com remake.ai 赞助。我们正在复用他们的开源方案。
- 若你不想四处搜罗零件,可在 [makerspet.com](https://makerspet.com), 购买套件(电机、PCB、滚刷、垫圈、LiDAR),提供方即本项目作者。套件仅为便利选项,绝非必需。*此处一切内容均保持开源。*
- 待开发应用时,[remake.ai](https://remake.ai) 将提供其机器人应用平台与应用商店。是否使用应用商店完全可选。扫地机器人将*始终开箱即支持免云端、本地运行,满足日常功能需求*。
## License
## 许可证
Code is released under the [Apache License 2.0](LICENSE).
代码以 [Apache License 2.0](LICENSE) 发布。
Hardware design files, once added, to be released under an open hardware
license (TBD).
硬件设计文件(待添加)将以开放硬件许可证发布(待定)。
<a href="https://www.star-history.com/?type=date&repos=makerspet%2Foomwoo">
<picture>