Skip to content
ericzhubonnie-glitchPublic

About

No description, website, or topics provided.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

机械工程 · 仿真与交互实验集

个人实验代码仓库,涵盖触觉传感仿真(毕业设计方向)、MuJoCo 物理仿真、计算机视觉手势识别、嵌入式编译链四块内容。全部可离线运行,双击 .bat 即可启动。

目录

目录 内容 技术栈
force3d/ 交互式触觉传感器工作台:双层切向力解算 + 上位机 + 画布模拟 + 滑移检测 + 竞技场/教练/助手 NumPy / SciPy / Tkinter
plugins/ 算法插件目录(放 .py 即被自动加载,参与竞技场比较) Python
tests/ 自动化测试(python -m unittest discover -s tests -t .) unittest
examples/ 示例录制数据(.npz / .csv),无硬件可直接试用 —
tactile_lab/ 毕业设计:柔性触觉阵列建模、信号链仿真、触觉引导轴孔装配 MuJoCo / NumPy
mujoco_lab/ MuJoCo 学习实验:单摆、倒立摆 LQR、齿轮传动、渲染 MuJoCo / Matplotlib
gesture/ 摄像头手势识别,8 种手势映射到系统媒体键 MediaPipe Tasks / OpenCV
games/ 霓虹打砖块,支持手势控制 paddle pygame
keil_lab/ STM32F103 工程 + 命令行编译脚本 Keil MDK / ARMCC
openclaw_bridge/ OpenClaw 本地代理诊断与调用示例 Python

环境要求

  • Python 3.12 / 3.13
  • 触觉与 MuJoCo 实验:pip install mujoco numpy matplotlib
  • 手势与游戏:pip install mediapipe opencv-python pygame(模型文件首次运行自动下载)

快速开始

各目录下均有 run.bat,双击按菜单选择实验:

tactile_lab/run.bat     # 触觉仿真:标定 / 成像 / 定位 / 参数扫描 / 轴孔装配
mujoco_lab/run.bat      # MuJoCo 六课实验
games/run.bat           # 打砖块(键盘 / 手势两种模式)

通用触觉上位机(force3d)

见 intro.md 与 docs/dual_layer_shear.svg。 原生 Python(tkinter)界面,免网页、点级交互。同一套解算可迁移到任意 taxel 布局:灵巧手指尖、智能布料、散点阵列、多指灵巧手。

物理内核:力经弹性层"传递 + 沿力方向各向异性扩散", 同一接触面改变力的方向 → 扩散朝向随之改变,这是反解切向力的依据。

  • 双通道解方向:位移(有符号,各布局稳健)+ 各向异性主轴(对微小位移敏感),互为交叉验证
  • 布局抽象层:物理坐标 mm → 核密度重采样 → 已验证 NCC;κ 与位移和 taxel 间距解耦
  • 三模式:45° 标定 / 串口·TCP 实测(含进程内模拟源)/ 画布模拟(点击放置、拖拽=力方向)
  • 协议优先:串口 / TCP 统一 T/B 帧协议,附模拟源、监视器、Arduino 参考固件
  • 输入模式切换:双层(成对矩阵)/ 单层(单矩阵)

窗口应用(双击 force3d_lab.bat 进菜单)

入口 作用
① 上位机 apps/host.py 主功能。三模式(45°标定 / 串口·TCP 实测 / 模拟)共用「读数 → 信号调理 → 解算 → 显示」,顶端实时显示滑移余量
② 画布模拟 apps/sim.py 任意布局:点击放置接触、拖拽定力的方向,看力场与扩散;灵巧手各指尖独立接触
③ 自由触觉点 apps/points.py 布点 → 施压 → 实时解算:点击/导入触觉点坐标,拖动压头读矩阵,逐点切向力
④ 滑移检测实验室 apps/slip.py 粘着→滑移转变检测、摩擦锥余量、在线逐帧报警(四图联动)
⑤ 信号调理工作台 apps/filters.py 逐触觉点归零 + 尖峰钳位 + 时域滤波 + 漂移补偿,全程可视化(主链路的拆开细看版)
⑤ 研究工具箱 apps/tools.py 算法竞技场 / 自动标定教练 / 研究助手

命令行工具(无窗口,故不在菜单里)

python apps/points.py          # 自由触觉点工作台(布点 → 施压 → 实时解算)
python apps/serial_sim.py --port tcp://127.0.0.1:9001 --scene point30   # 模拟源
python tools/serial_monitor.py --port COM3 --rows 24 --cols 24          # 监视器
python apps/filters.py             # 信号调理工作台(逐点归零 + 滤波)
python apps/slip.py --check        # 滑移检测自检
python apps/filters.py --check     # 信号调理自检
python apps/tools.py --check       # 工具箱自检
python apps/points.py --check      # 自由触觉点自检(含实时性)
python apps/sim.py --check         # 画布模拟自检(含灵巧手各指尖独立性)
python -m force3d.check            # 核心算法自检
python -m force3d.align            # 双层独立坐标自检
python -m force3d.filters          # 时域信号调理自检
python -m unittest discover -s tests -t .    # 全量测试(49 项)

能力一览

类别 模块 说明
数据接入 serial_link.py 串口/TCP 统一 T/B 帧协议,坏行丢弃不中断
预处理 preprocess.py 中值/高斯/卡尔曼、离群剔除、基线校正、接触区域识别(含不规则布局的坐标聚类)
解算 invert.py solver.py 模糊不变 NCC、法向/切向力、摩擦上限与滑移
双层独立坐标 align.py 两层点云各自独立时的配准(Chamfer 粗扫 + ICP)+ 逐点切向力;DualSolver 缓存几何做实时链路
滑移 slip.py 不依赖已知 μ:从"位移-力脱钩"反推门槛,进而估计 μ
信号调理 filters.py 逐触觉点零位(tare) + 尖峰钳位 + EMA/中值/滑动平均 + 漂移跟踪(时域,与 preprocess.py 的空域互补)
事件 events.py 接触/释放/冲击/滑移/粘着状态机
录制 iodata.py 录制回放、.npz/.json/.csv 导入导出、合成示例数据
标定 coach.py 四步流程 + κ 自动拟合 + 健康度评分
对比 plugins.py arena.py 算法插件系统 + 竞技场(精度/自证/稳定性/延迟)
诊断 assistant.py 本地规则引擎:数据体检、结果解读、根因排查、用例推荐
基建 config.py 参数持久化、错误日志(轮转)、设备连接记录

自检 python apps/host.py --check 全项 PASS(垂直自证 0、45° 方向误差 0°、 幅值误差 0.8%、滑移判定、布局方向误差 ≤8°);滑移 μ 估计误差 0.72.2%; κ 自动标定复原误差 0.13.8%。

毕业设计:触觉仿真

两个课题构成"感知 → 决策"的完整链路:

课题一 · 柔性触觉阵列建模与标定

24×24 弹性 taxel 阵列(间距 1.5 mm),物理层用 MuJoCo 软接触求解真实接触力,其上叠加完整的采集信号链——串扰、蠕变、迟滞、自适应死区、12 bit 量化、电子噪声。

  • 静态标定:三类压头(球头 / 平头 / 探针)的力—深度曲线与接触面积变化
  • 空间定位:重心法与高斯拟合对比,真值误差 < 0.05 mm
  • 相位特性:细扫曲线呈现周期等于阵列间距的定位误差起伏(离散阵列固有下界)
  • 性能边界:串扰对定位几乎无影响(对称扩散被重心法抵消),噪声才是主导误差源

课题二 · 触觉引导的轴孔装配

10 mm 方轴插入 12 mm 方孔(单边间隙 1 mm),孔位随机偏移 ±3 mm,轴身四面贴 40 个触觉单元,按力差做"先摆正、再进给"的两段式修正。

策略 成功率 峰值侧向力
盲插 2 / 6 27.8 N
触觉引导 6 / 6 2.3 N

说明

  • output/ 与模型权重不入库,由脚本运行时生成 / 下载。
  • Keil 部分需要本机安装 MDK;keil_lab/build.bat 支持拖入 .uvprojx 直接编译。

About

No description, website, or topics provided.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages