robot_arm/ck.md
2026-02-10 23:31:14 +08:00

77 lines
No EOL
6 KiB
Markdown
Raw Permalink 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.

根据我们的全部聊天记录,我为你复盘并总结了整个项目的开发全过程。这个过程记录了你如何从零开始,一步步解决硬件抖动、数学建模错误、视觉偏差、以及大模型理解力不足等核心问题,最终实现了一个能够“听得懂指令、看得见物体、抓得准目标”的具身智能系统。
---
# 具身智能机械臂系统开发全过程总结
## 一、 硬件基础与底层调优 (Hardware Foundation)
这是项目的第一阶段,重点在于打通 ESP32 对 MG996R 大功率舵机的稳定控制。
* **技术栈**ESP32-WROOM-32, MG996R 舵机, 6V 6A 外部直流电源。
* **遇到的问题与迭代**
1. **引脚冲突**:发现 D2 引脚连通蓝灯且作为启动配置脚导致底座舵机初始化失败D19 等引脚在多轴联动时失效。
* **解决**重新分配引脚X:14, Y:4, Z:5, B:18, G:23/13避开冲突。
2. **掉电重启 (Brownout)**5 个舵机同时启动产生的浪涌电流导致 ESP32 电压跌落,蓝灯熄灭死机。
* **解决**:编写**阶梯式上电代码**,让电机按顺序间隔 0.5s~1.5s 依次激活;并在软件中临时禁用 Brownout 探测器。
3. **硬件极性反向**:发现不同关节的舵机安装方向不一致(顺时针 vs 逆时针)。
* **解决**在驱动层建立逻辑映射对小臂Z和手腕B采用**互补数映射**`180 - 角度`),统一了数学模型与物理执行。
## 二、 运动学建模的演进 (Kinematics Evolution)
这是项目最核心的数学攻坚阶段,解决了“爪尖走斜线”的毕设难题。
* **技术迭代路径**
1. **初级阶段 (几何解析法)**:尝试用简单的三角函数加减法。
* **失败表现**:由于 L4 (130mm) 极长,手腕补偿跟不上,控制 X 轴移动时,爪尖走出了 40 度的斜坡。
2. **进阶阶段 (解析公式法)**:参考手写笔记进行 $K_1, K_2$ 矢量分解。
* **失败表现**:模型与物理零位有 90 度相位差,导致坐标系定义混乱。
3. **终极阶段 (D-H 参数建模 + 数值解法)**
* **建模**:建立了标准 **D-H 参数表**,定义 90 度为“笔直向天”姿态(坐标 0,0,315
* **算法**:舍弃死板公式,采用 **Scipy 的数值优化器 (SLSQP)**。通过最小化目标点与当前点的欧氏距离,自动寻找最优舵机解。
* **姿态锁定**:在解算中加入 `Pitch=-90` 约束,强制让长达 13cm 的抓手垂直地面,从而彻底**消除了非线性路径偏移,实现了完美的水平直线移动**。
## 三、 视觉感知与手眼标定 (Perception & Calibration)
让机械臂拥有“空间感”,将摄像头画面的像素点转化为物理坐标。
* **关键技术**
1. **目标检测**:从 `YOLO-World`(开放词汇)切换到**自定义训练的 YOLOv8s**。
* **优化**:针对特定目标(销笔刀/零件)采集 50 张样本进行迁移学习,识别率从“忽隐忽现”提升到 90% 以上。
2. **手眼标定**:采用**单应性矩阵 (Homography)**。
* **交互式标定**:实现了按 `C` 键在视频窗口点击 4 个参考点P1-P4即可实时更新矩阵的功能解决了摄像头移位导致的精度丢失。
3. **镜像修正**:针对 USB 摄像头水平镜像问题,采用 `cv2.flip` 翻转,并配合数学修正公式 `ry = Center*2 - ry_raw` 确保画面动作与物理方向完全一致。
## 四、 认知层:语义理解与减震优化 (Intelligence & Refinement)
实现“具身智能”,让机械臂能理解人类指令并优雅地执行。
* **多模态技术**
1. **语音识别 (STT)**:使用本地 **Faster-Whisper (Base)**
* **迭代**:从固定时长录音改为**按空格开始/结束录音**,并加入 `initial_prompt` 关键词引导,解决了识别出乱码(“轻轻轻轻”)的问题。
2. **语义解析 (LLM)**:通过 **Ollama** 部署 **DeepSeek-R1-1.5B**
* **提示词工程**:使用 **Few-Shot Prompting**(少样本提示),让模型学会“销笔刀 -> box -> robot”的标签转换并自动计算“厘米到毫米”的单位换算。
3. **减震系统 (Damping System)**
* 针对 MG996R 剧烈震动,实现了 **S-Curve (余弦插值)** 轨迹规划。
* 引入 **EMA 移动平均滤波****阻尼系数**,实现了“慢起、匀移、慢停”,极大减轻了长力臂带来的惯性晃动。
## 五、 项目最终形态 (Final Integration)
最终代码集成了以下功能流:
1. **启动**:摄像头实时预览,显示标定红圈、中心基准及目标坐标。
2. **标定**:按 `C` 交互式重标,确保精度。
3. **交互**:空格触发录音,大模型解析意图输出 JSON 列表。
4. **执行**
* **Pick**:视觉定位后,执行“预备-下潜-抓取-提起”平滑序列。
* **Move_inc**基于坐标记忆实现“向上提5cm”等增量操作。
---
## 项目技术总结表
| 模块 | 关键技术 | 解决的毕设难题 |
| :--- | :--- | :--- |
| **控制层** | 32位 PWM / 阶梯启动 / 互补数映射 | 解决大功率电机掉电、死机及极性相反问题 |
| **算法层** | D-H 参数建模 / 数值逆解 (IK) | 解决 L4 长连杆引起的轨迹非线性斜移 |
| **规划层** | S-Curve 插值 / EMA 滤波器 | 解决廉价舵机在长力臂下的剧烈震动 |
| **感知层** | YOLOv8 / Homography / 交互标定 | 解决从图像像素到物理空间的精准映射 |
| **认知层** | Faster-Whisper / DeepSeek / 正则解析 | 解决非结构化自然语言到机器人动作的映射 |
---
**总结结论**:本项目通过**“硬件补偿+数学建模+深度学习”**的多层深度耦合,将一台由普通 3D 打印件和廉价舵机组成的机械臂,提升到了具备**高精度轨迹跟踪**和**语义智能交互**能力的工业级原型水平。