HowYouSeeMe
给任何法学硕士一双眼睛、一段记忆和一张地图。
    
______________________________________________________________________
______________________________________________________________________
问题
法学硕士可以对世界进行推理,但他们对此视而不见。
你可以根据习惯问GPT-4你的钥匙在哪里。你可以让克劳德帮你找到你的3D打印机。但他们都不能环顾房间,记住打印机最后一次出现在走廊是三个小时前,注意到它被移动了,然后导航到它——因为他们对他们应该帮助你的物理世界没有持久的、脚踏实地的空间意识。
“谈论世界的人工智能”和“实际感知世界的人工智慧”之间的差距是机器人研究中一个已解决的问题。它还没有被组装成开放、可部署和LLM原生的东西。
这个集会是怎样的。
______________________________________________________________________
它做什么
Kinect v2和BlueLily IMU提供了一个连续的感知循环。ORB-SALM3跟踪相机姿态并实时构建3D地图。YOLO11识别帧中的所有内容,并将每次检测反向投影到SLAM坐标空间中,因此每个对象都会得到一个3D世界位置,而不仅仅是一个像素边界框。
空间知识在积累。对象在帧间被跟踪。当发生重要的事情时——一个人走了进来,一个已知的物体移动了,一个新的物体出现了——系统会保存一个检查点:RGB帧、深度图、姿势和检测,以原子方式写入磁盘。异步工作者然后用SAM2掩码、InsightFace身份和情绪估计来丰富每个检查点,而不会阻塞实时感知循环。
结果是 world_state.json --一份不断更新的文档,描述机器人见过的每个物体,它在3D空间中的位置,最后一次确认的时间,以及系统了解到的任何信息。任何LLM都可以通过MCP查询。
"where is the soldering iron?"
→ /tmp/world_state.json → last seen at [2.4, 0.8, 0.9] → 4 minutes ago → confidence 0.91当机器人睡觉时,OpenSplat会在累积的关键帧上运行,并生成逼真的高斯环境图——地图每天晚上都会变得更好,无需任何主动努力。
______________________________________________________________________
人工智能的空间感知
大多数人工智能系统将空间视为平面。HowYouSeeMe为LLM提供了一个基础的3D世界模型,它可以像数据库一样查询。
没有内在的感觉 *哪里* 事情在3D中是相互关联的,不记得昨天在哪里,也无法说“杯子在笔记本电脑左侧的桌子上,大约80厘米远。”直到现在。
LLM: "Is there anyone in the room?"
→ query_world() → people: [{position: [1.2, 0.3, 0.0], identity: "unknown", emotion: "neutral"}]
→ "Yes, one person, about 1.2 metres ahead, appears neutral."
LLM: "Go find the 3D printer"
→ navigate_to("3D printer")
→ not in world_state → visual search mode
→ LLM generates description → robot sweeps room → YOLO+CLIP locks on → pathplans precisely
→ saves named memory → next time: direct navigation in <15 seconds
LLM: "Remember where I left my keys"
→ remember_object("keys")
→ YOLO watches for keys class → locks 3D position on next detection
→ survives reboots → queryable foreverMCP服务器使其可组合。任何LLM——克劳德、GPT-4、当地Olama模型、Ally的语音接口——都可以连接到 http://localhost:8090/mcp 并得到可靠的空间答案。机器人变成了一个任何人工智能都可以插入的空间记忆系统。
______________________________________________________________________
建筑
5层
┌─────────────────────────────────────────────────────────┐
│ TIER 1 — always on │
│ ORB-SLAM3 · YOLO11 · Event checkpointer │
│ ~1GB VRAM · 3-4 CPU cores · never killed │
├─────────────────────────────────────────────────────────┤
│ TIER 2 — event-driven │
│ SAM2 · InsightFace · FER · Async frame analyser │
│ spawned on trigger · killed when idle │
├─────────────────────────────────────────────────────────┤
│ TIER 3 — world synthesis │
│ World synthesiser · Named memory store │
│ merges all perception → world_state.json every 3s │
├─────────────────────────────────────────────────────────┤
│ TIER 4 — persistence │
│ /tmp/stm/checkpoints · world_state.json │
│ ~/howyouseeme_persistent/named_memories.json │
├─────────────────────────────────────────────────────────┤
│ TIER 5 — interface │
│ MCP server :8090 · RViz · Rerun · Ally Robot Mode │
└─────────────────────────────────────────────────────────┘为什么分层? 你的GPU有4GB。同时运行SAM2、InsightFace、FER、YOLO和SLAM将超过这一水平。分层系统意味着在空闲时,您将使用约1GB。一个人走了进来——InsightFace和FER为该事件旋转,异步地丰富检查点,然后死亡。峰值使用率永远不会超过约1.43GB VRAM。
导航 [PLANNED/WIP]
Natural language goal
↓
Semantic goal resolver
├─ named memory? → direct 3D coordinate → RRT* → DWA → /cmd_vel
├─ seen recently? → last known position → RRT* → DWA → /cmd_vel
├─ room name? → SLAM map centroid → RRT* → DWA → /cmd_vel
└─ never seen? → visual search mode
↓
LLM generates description
+ optional web reference image
↓
room sweep: rotate → expand spiral
score: YOLO conf × CLIP similarity
↓
detection → back-project → save memory → pathplan睡眠时间图增强 [PLANNED]
Robot active → keyframes saved to disk continuously
Robot sleeps → OpenSplat runs on accumulated frames (15-25 min on RTX 3050)
Robot wakes → photorealistic .ply splat loaded as /splat/background
YOLO semantic labels float on top of photorealistic map
map quality improves every night automatically______________________________________________________________________
人工智能模型
| 型号 | 用途 | 层级 | VRAM | 何时 |
|---|---|---|---|---|
| YOLO11 | 物体检测 | 1 | ~400MB | 始终 |
| SAM2微小 | 精确分割 | 2 | ~280MB | 活动中 |
| InsightFace | 人脸识别 | 2 | ~200MB | 检测到人员 |
| FER(hsemotion) | 情绪检测 | 2 | ~150MB | 检测到人员 |
| FastSAM | 快速细分 | 2 | ~200MB | 按需 |
| CLIP | 视觉搜索匹配 | nav | ~200MB | 视觉搜索 |
| TensorRT | YOLO加速 | opt | -- | 如果导出 |
峰值(全部活动):约1.43GB VRAM。 适合4GB,并为操作系统留出空间。
______________________________________________________________________
MCP工具
机器人的世界知识作为一个可调用的API。任何LLM都连接到 http://localhost:8090/mcp.
| 工具 | 它做什么 |
|---|---|
query_world | 完整的世界状态——物体、人、最近的事件 |
where_is(label) | 任何物体的最后已知3D位置 |
remember_object(name, label) | 固定一个对象以进行持续跟踪 |
recall_memory(name) | 获取被固定物体的确认位置 |
forget_memory(name) | 停止跟踪 |
get_recent_events | 最后N个带有时间戳的感知事件 |
get_checkpoint(id) | 检索特定的过去检查点帧并进行分析 |
get_camera_frame | 最新RGB帧为base64 JPEG,适用于视觉LLM |
get_robot_status | 自然语言状态摘要 |
get_robot_context | 盟友机器人模式的系统提示上下文块 |
navigate_to(query) | 找到自然语言中的任何东西 [PLANNED] |
navigate_to_pose | 精确三维坐标的路径查找 [PLANNED] |
cancel_navigation | 立即停止 [PLANNED] |
navigation_status | 当前导航状态、目标、预计到达时间 [PLANNED] |
______________________________________________________________________
盟友整合
盟友 是语音和聊天界面。在机器人模式下,它连接到HowYouSeeMe的MCP服务器,成为具有扎实世界知识的空间人工智能助手。
"What can you see right now?"
→ query_world → objects with 3D positions → natural language description
"Go find the 3D printer"
→ navigate_to("3D printer") → visual search → pathplan → arrive → confirm
"Remember where the apple is"
→ remember_object → YOLO watches → pins on next detection → survives reboot
"Show me what you see"
→ get_camera_frame → base64 JPEG → vision LLM describes the scene在Ally中启用机器人模式自动获取 get_robot_status 并将其作为系统上下文注入——因此LLM在第一条消息之前总是知道机器人的当前状态。
______________________________________________________________________
关键主题
| 主题 | 类型 | Hz |
|---|---|---|
/kinect2/hd/image_color | 图片 | 14.5 |
/kinect2/hd/image_depth_rect | 图片 | 14.5 |
/imu/data | 伊穆 | 800 |
/orb_slam3/pose | 姿势盖章 | 14.5 |
/tsdf/pointcloud | PointCloud2 | 1 |
/splat/background | PointCloud2 | 0.1 |
/cv_pipeline/results | 字符串JSON | 14.5 |
/cv_pipeline/enriched | 字符串JSON | 14.5 |
/semantic/markers | MarkerArray | 0.3 |
/semantic/world_state | JSON字符串 | 0.3 |
/memory/checkpoint_saved | 字符串 | 事件 |
/navigation/path | 路径 | 事件 |
/cmd_vel | 扭曲 | 10 |
______________________________________________________________________
实施状态
| 功能 | 状态 | 注释 |
|---|---|---|
| Kinect v2 ROS 2桥接器 | ✅ 完成 | CUDA加速,14.5fps |
| 蓝百合IMU桥 | ✅ 已完成 | 800Hz,/imu/data |
| ORB-SLAM3 RGB-D | ✅ 已完成 | 仅限视觉,IMU融合等待校准 |
| YOLO11检测 | ✅ done | cv_pipeline,流媒体 |
| SAM2/FastSAM/洞察脸/FER | ✅ 已完成 | 按需工人 |
| Open3D TSDF集成器 | ✅ 已完成 | 1Hz CPU映射更新 |
| 语义投影节点 | ✅ 已完成 | RViz中的3D标签 |
| 事件检查指针 | ✅ done | 检查点保存+富集管道 |
| 异步帧分析器 | ✅ 已完成 | 非阻塞浓缩工人 |
| 实时丰富节点 | ✅ done | 实时人脸/姿势/面部表情/cv_pipeline/增强 |
| 世界合成器 | ✅ done | 每3秒运行一次,输出world_state.json |
| 命名内存存储 | ✅ done | 重启后持续 |
| MCP服务器 | ✅ 已完成 | 端口8090,可流式传输http,10个工具上线 |
| 重新运行可视化 | ✅ done | rerun_bridge_node,深度+TSDF+姿态+富集 |
| 盟友机器人模式集成 | ✅ done | MCP会话握手,代理工具循环 |
| IMU相机校准(Kalibr) | 🔧 WIP | 身份转换占位符 |
| 导航堆栈(RRT\*+DWA) | 📋 计划 | 完全设计 |
| 视觉搜索(YOLO+CLIP) | 📋 计划 | 设计 |
| 睡眠时间高斯分布 | 📋 已规划 | 已设计,需要Orin全速行驶 |
| 艾萨克ROS迁移(cuVSLAM+NVLOX) | 📋 计划中 | AGX Orin硬件待定 |
______________________________________________________________________
计算目标
| 平台 | 状态 | 注释 |
|---|---|---|
| RTX 3050笔记本电脑,Ubuntu 24.04 | ✅ 当前 | 4GB VRAM上限,开发平台 |
| 杰森AGX奥林64GB | 📋 计划 | 64GB统一内存,目标机器人平台 |
| 艾萨克·罗斯(cuVSLAM+NVBLOX) | 📋 计划 | 替换ORB-LAM3+TSDF,相同的代码库 |
______________________________________________________________________
快速启动
# Dependencies (system Python 3.12, ROS2 Jazzy)
sudo apt install ros-jazzy-desktop ros-jazzy-cv-bridge
pip install open3d ultralytics rerun-sdk --user
# Build
cd ros2_ws && colcon build && source install/setup.bash
# Launch everything
./scripts/run_complete_slam_system.sh
# Visualisation (separate terminal)
rerun # Rerun opens automatically via rerun_bridge_node
# or RViz:
rviz2交互式CV模型菜单
./scripts/cv_pipeline_menu.shCV Pipeline — Model Selection
1) SAM2 segment anything
2) FastSAM fast segmentation with text prompts
3) YOLO11 detection, pose, segmentation, OBB
4) InsightFace face recognition + liveness
5) FER emotion detection (7 emotions)
8) List available models
9) Stop active streaming______________________________________________________________________
回购结构
HowYouSeeMe/
├── ros2_ws/src/
│ ├── kinect2_ros2_cuda/ Kinect v2 bridge — do not modify
│ ├── bluelily_bridge/ IMU serial bridge
│ │ └── src/bluelily_imu_node.cpp
│ ├── cv_pipeline/ AI model nodes (C++ pipeline + Python workers)
│ │ ├── src/cv_pipeline_node.cpp
│ │ └── python/
│ │ ├── cv_model_manager.py
│ │ ├── sam2_server_v2.py
│ │ ├── sam2_worker.py
│ │ └── insightface_worker.py
│ └── kinect2_slam/ SLAM, memory, MCP, visualisation
│ ├── kinect2_slam/
│ │ ├── tsdf_integrator_node.py
│ │ ├── event_checkpointer_node.py
│ │ ├── async_analyser_node.py
│ │ ├── live_enrichment_node.py
│ │ ├── world_synthesiser_node.py
│ │ ├── named_memory_node.py
│ │ ├── rerun_bridge_node.py
│ │ └── mcp_server.py ← MCP on :8090
│ └── launch/
│ └── howyouseeme_memory.launch.py
├── scripts/
│ ├── run_complete_slam_system.sh ← main launch script
│ ├── run_phase2_3.sh ORB-SLAM3 + TSDF
│ └── cv_pipeline_menu.sh interactive model selector
├── integration/
│ └── Ally/glass-pip-chat/ Ally desktop overlay + Robot Mode
├── data/faces/ InsightFace database
├── orb_slam3_configs/ ORB-SLAM3 YAML configs
├── kalibr_configs/ IMU-camera calibration
└── docs/ guides and references______________________________________________________________________
研究背景
该项目借鉴了机器人和视觉研究的几个方面:
概念融合(2023) --语言嵌入的3D地图,其中每个点都带有CLIP嵌入,支持自然语言空间查询。与世界合成器和语义投影节点直接相关。
SayPlan(2023) --使用3D场景图作为结构化上下文的LLM任务规划。 world_state.json 是一个用于此目的的简化场景图。
家用机器人(Meta,2023) --开放词汇移动操作:查找并与自然语言中描述的任何对象交互。视觉搜索模式实现了此功能的一个版本。
OpenScene / LERF --可查询的神经场景表示,其中地图本身可以通过语言进行搜索。睡眠时间延迟管道指向这个方向。
特定的组合——模块化按需模型加载、睡眠时间高斯斑点致密化、MCP作为LLM机器人接口标准,以及持久命名空间记忆——在其他地方并不作为一个集成的开放系统存在。这就是贡献。
______________________________________________________________________
相关项目
- 盟友 --glassmorphic桌面AI叠加,机器人模式通过MCP连接到HowYouSeeMe
- DroidCore --HowYouSeeMe输入的完整机器人控制堆栈
______________________________________________________________________
硬件
| 组件 | 零件 | 接口 |
|---|---|---|
| RGB-D摄像头 | 微软Kinect v2 | USB 3.0 |
| IMU | 蓝百合(MPU6500) | /dev/ttyACM0 115200波特 |
| 计算(开发) | RTX 3050笔记本电脑,Ubuntu 24.04 | CUDA 12.x |
| 计算机(机器人) | Jetson AGX Orin 64GB [planned] | JetPack 6 |
机器人头部是一个3D打印的外壳,安装了Kinect v2前置、内部BlueLily IMU和顶部计算。看 机器人头部设置.
______________________________________________________________________
联系
- github: @雅利安拉伊
- 电子邮件:buzzaryanrai@gmail.com
- 问题:
