2025年3月11日

写字机器人

ApplePencil + Franka阻抗控制

简介

这篇内容更适合以“系统设计页”的方式呈现,而不是单纯的长段说明。核心目标是把 Apple Pencil 的书写轨迹 稳定采集出来,并通过跨语言通信链路送到机器人控制端,让 Franka 复现书写过程。

系统概览

Apple Pencil -> Swift 采集层 -> Proto3 序列化 -> ZeroMQ -> Python 控制端 -> Franka Robot

项目概述

通过 Apple Pencil 采集书写轨迹数据,使用 Proto3 协议序列化,再通过 ZeroMQ 在 Swift 与 Python 间传输,最终控制机器人执行轨迹复现。

技术架构

flowchart LR
  A[Apple Pencil] --> B[Swift 数据采集]
  B --> C[Proto3 序列化]
  C --> D[ZeroMQ 传输]
  D --> E[Python 机器人控制]
  E --> F[Franka Robot]

开发环境配置

依赖安装

# Swift 环境
brew install protobuf swift-protobuf

# Python 环境
pip install pyzmq protobuf

Xcode 包依赖

File > Add Package Dependencies > 添加 protobuf 与 zeromq 的 Swift binding

代码生成

# Swift 代码生成(需先安装 swift-protobuf)
protoc --swift_out=. stroke.proto

# Python 代码生成
protoc --python_out=. stroke.proto

通信模式

sequenceDiagram
  participant Pad as Pad (Client)
  participant Robot as Robot (Server)
  Pad->>Robot: REQ: StrokeArray 数据
  Note right of Robot: 处理轨迹数据
  Robot-->>Pad: REP: 执行结果

适合下一步继续补充的内容

  • 轨迹采样频率与平滑策略
  • 压感、倾角等额外维度是否进入协议
  • 机器人端的轨迹重参数化与阻抗控制接口
  • 失败案例与误差分析