IXNORFID Insight
← 返回洞察
物理智能2026-09-23 · 15 min

每件东西都应该有一个 URL:RFID 如何成为具身智能的物体词典

具身智能需要识别个体,不只是分类。RFID 填补视觉盲区,从「读号码」升级为「物体状态 API」。

二十多年前,互联网完成了一次跃迁:每台电脑都有了 IP 地址,每个网页都有了 URL。这次跃迁催生了搜索引擎、社交媒体、云计算——所有我们称之为「互联网经济」的东西,都建立在「每台电脑可寻址」这个前提上。

物理世界还没有完成这次跃迁。

你家里的杯子、钥匙、遥控器,工厂里的零件、工具、半成品,仓库里的每一件商品——它们都没有 URL。它们是物理世界的「暗物质」:存在,但不可寻址、不可查询、不可被程序直接操作。

RFID 有机会改变这件事。但前提是,我们不再把它当成「自动条码」来用。

一、物品互联网的缺失层

互联网的基础设施是 TCP/IP + DNS + HTTP。TCP/IP 让每台电脑可寻址,DNS 让人类可读,HTTP 让每台电脑可交互。这三层加起来,才有所谓的「互联网」。

物理世界对应这三层是什么?

# 物品互联网的三层架构(类比互联网)
physical_internet:
  addressing_layer:
    internet_equivalent: "IP Address"
    physical_equivalent: "EPC (Electronic Product Code)"
    description: "每件物品的唯一身份标识"
    current_status: "已有标准(GS1 EPC),但覆盖率极低"
    gap: "绝大多数物品没有 EPC,即使有也不联网"

  naming_layer:
    internet_equivalent: "DNS / URL"
    physical_equivalent: "物品 URI(如 https://thing.example.com/epc:xxx)"
    description: "让人和程序都能查询物品状态的接口"
    current_status: "EPC/ONS 曾尝试,已废弃"
    gap: "没有统一的物品命名和解析体系"

  interaction_layer:
    internet_equivalent: "HTTP / REST API"
    physical_equivalent: "物品状态 API(GET /status, POST /action)"
    description: "程序可以直接调用物品状态,而不只是读原始数据"
    current_status: "不存在"
    gap: "RFID 读取流是原始数据,不是结构化 API"

二十年前,GS1 推过 EPC/ONS(Object Naming Service),试图建立物品互联网的基础。但那时候标签太贵、读写器太贵、网络太慢,全链路成本太高,这件事没跑通。

现在成本结构变了。UHF 标签几毛钱一个,读写器几百到几千块,网络无处不在。但「物品互联网」这件事还是没人做——因为大家都在用 RFID 做「自动条码」,没想过它能做更多。

二、机器人有视觉无身份

具身智能正在找「结构化 ground truth」。机器人能看见世界,但它看见的是像素,不是语义。

视觉能告诉机器人「这是一个杯子」,但分不清「这是张三的杯子还是李四的」。在家庭场景里,这意味着机器人不知道该把杯子放回谁的房间;在工厂场景里,这意味着机器人不知道该把零件装进哪个盒子。

视觉的盲区,恰好是 RFID 的长项。

# 视觉 vs RFID 的能力边界
comparison:
  vision:
    strengths:
      - "识别品类(杯子、瓶子、工具)"
      - "定位(物体在图像中的位置)"
      - "姿态估计(物体的朝向)"
      - "无需标签,通用性强"
    limitations:
      - "无法区分同类物品(两个一样的杯子)"
      - "无法读取被遮挡的标签"
      - "依赖光照条件"
      - "需要大量训练数据"

  rfid:
    strengths:
      - "唯一身份识别(每个杯子都有独立ID)"
      - "可穿透非金属材质读取"
      - "不依赖光照"
      - "可同时读取多个标签"
    limitations:
      - "无法识别品类(只能读ID)"
      - "无法定位精确位置"
      - "无法估计姿态"
      - "需要预先贴标签"

RFID 不告诉机器人「这是什么」,但告诉机器人「这是哪个」。这两个问题看起来相似,实际上完全不同。

「这是什么」是分类问题,视觉擅长。「这是哪个」是身份问题,只有 RFID 能回答。

三、从读号码到物体词典

传统 RFID 的用法:读到一个 EPC 号码,查数据库,返回商品信息。这是「自动条码」的用法——只是把条码换成了射频。

但如果我们换一个思路:每个 RFID 标签不只是一个号码,而是一个「物体 API」的入口呢?

# 物体词典服务:每个 EPC 都是一个可查询的状态
from dataclasses import dataclass
from typing import Optional, Dict, Any
from datetime import datetime

@dataclass
class ObjectState:
    epc: str                    # EPC 唯一标识
    category: str               # 品类(杯子、工具、零件)
    owner: Optional[str]        # 所有者
    location: Optional[str]     # 当前位置
    status: str                 # 状态(在库、使用中、移动中)
    last_seen: datetime         # 最后读取时间
    metadata: Dict[str, Any]    # 扩展属性

class ObjectDictionary:
    """物体词典:把 RFID 读取流转化为结构化状态 API"""
    
    def __init__(self):
        self.objects: Dict[str, ObjectState] = {}
    
    def on_tag_read(self, epc: str, antenna: int, rssi: int):
        """RFID 读取回调:更新物体状态"""
        if epc not in self.objects:
            # 新物体:从主数据加载
            self.objects[epc] = self._load_from_master(epc)
        
        obj = self.objects[epc]
        obj.last_seen = datetime.now()
        obj.location = self._antenna_to_location(antenna)
        obj.status = self._infer_status(rssi)
    
    def get_status(self, epc: str) -> Optional[ObjectState]:
        """GET /objects/{epc}/status"""
        return self.objects.get(epc)
    
    def query_by_owner(self, owner: str) -> list:
        """GET /objects?owner=xxx"""
        return [o for o in self.objects.values() if o.owner == owner]
    
    def query_by_location(self, location: str) -> list:
        """GET /objects?location=xxx"""
        return [o for o in self.objects.values() if o.location == location]

这个服务的核心变化:RFID 不再只是「读号码」,而是「查询物体状态」。每个 EPC 都变成了一个可寻址的资源,有 REST API,有结构化数据,有业务语义。

这就是物体词典:把物理世界的物品,变成程序可以直接查询和操作的结构化数据。

四、具身智能的物体接入层

回到具身智能的场景。机器人在房间里,看见桌上有三个杯子。视觉告诉它:「三个圆柱形容器,高度约10cm,颜色分别是白色、蓝色、白色。」

但机器人需要知道:白色杯子是张三的,蓝色杯子是李四的。现在它不知道该把杯子放回哪个房间。

如果每个杯子底部都有 RFID 标签,机器人只需要: 1. 读取三个 EPC 2. 调用物体词典 API:GET /objects/{epc1}/status, GET /objects/{epc2}/status, GET /objects/{epc3}/status 3. 返回:epc1 → 张三房间,epc2 → 李四房间,epc3 → 张三房间 4. 机器人知道该把每个杯子放回哪里

视觉提供「是什么」,RFID 提供「是哪个」。两者结合,机器人才真正理解物理世界。

这就是物体词典对具身智能的价值:它填补了视觉的盲区,让机器人从「看见世界」升级到「理解世界」。

五、从数据采集到状态服务

传统 RFID 系统的架构: 读写器 → 中间件 → 数据库 → 业务系统 数据流是单向的:从物理世界到数字世界。业务系统只能查询历史数据,不能实时感知物理世界。

物体词典的架构: 读写器 → 物体词典服务 ← REST API ← 业务系统/机器人 数据流是双向的:业务系统可以实时查询物体状态,也可以下发指令(比如「监控这个物品,当它移动时通知我」)。

这个变化的意义:RFID 不再只是「数据采集工具」,而是「物体状态服务」。它从后台走到前台,从被动记录变成主动服务。

对具身智能来说,这意味着机器人有了一个标准化的接口来查询物理世界。不需要自己处理 RFID 原始数据,不需要自己建数据库,只需要调用 API。

六、技术栈参考

搭建一个最小的物体词典服务,需要这些组件:

# 物体词典技术栈
stack:
  rfid_hardware:
    reader: "KLMB100/200 或任何支持 TCP 协议的 UHF 读写器"
    tags: "UHF EPC Gen2 标签(Inlay: Impinj Monza 或 NXP UCODE)"
    protocol: "TCP/IP,端口 60000(默认)"
  
  backend:
    language: "Python 3.10+"
    framework: "FastAPI(轻量、异步、自动文档)"
    database: "PostgreSQL(主数据)+ Redis(实时状态缓存)"
    orm: "SQLAlchemy"
  
  api_design:
    rest_endpoints:
      - "GET /objects/{epc}/status - 查询单个物体状态"
      - "GET /objects?owner=xxx - 按所有者查询"
      - "GET /objects?location=xxx - 按位置查询"
      - "POST /objects - 注册新物体"
      - "PATCH /objects/{epc} - 更新物体属性"
    websocket:
      - "WS /objects/subscribe - 订阅物体状态变化"
  
  integration:
    robot_interface: "ROS 2 / Python SDK"
    wms_interface: "REST API 或 MQTT"
    monitoring: "Prometheus + Grafana"

这个技术栈的核心:FastAPI 提供 REST API,PostgreSQL 存储主数据,Redis 缓存实时状态。读写器通过 TCP 连接,读取的数据实时更新到 Redis,同时持久化到 PostgreSQL。

七、下一步

物品互联网不是新概念,但现在是第一次有可能真正实现它。标签便宜了,网络无处不在,具身智能需要结构化的物理世界数据。

RFID 有机会成为这个基础设施——但前提是,我们不再把它当成「自动条码」来用,而是把它升级成「物体词典」。

也许下一篇,我们写写怎么用 Python 搭一个最小的物体词典服务。

继续阅读