本项目利用 MediaPipe 进行手部关键点检测,结合计算机视觉算法实时识别并标注手部穴位(如合谷、少商、关冲等)。通过单应性矩阵标定,将图像坐标映射到 Dobot Magician 机械臂的物理坐标,实现点击屏幕穴位即可控制机械臂进行定点触碰或治疗模拟。
- 实时穴位识别: 基于 MediaPipe Hands 识别手部骨骼,通过几何算法计算出 20+ 个常用穴位(包括指甲侧方穴位、指蹼穴位、手背穴位等)。
- 坐标映射标定: 提供交互式标定工具,通过单应性矩阵 (Homography) 将摄像头图像坐标转换为机械臂空间坐标。
- 点击控制: 在实时视频流中点击任意位置(或标注的穴位),机械臂将自动移动到该位置并执行下降触碰动作。
- Windows 操作系统 (需调用 Dobot DLL)
- Python 3.8+ (建议)
- 依赖库:
opencv-pythonmediapipenumpyPillow(可选,用于中文标签显示)
real_time_acu_reg.py: 核心算法模块。包含RightHandAcupoint类,负责处理图像、解析手部关键点并计算所有穴位的屏幕坐标。dobot_interface.py: 硬件控制模块。封装了 Dobot Magician 的底层 DLL 调用,提供连接、运动控制、报警处理等高级接口。homography_calibration.py: 标定工具。引导用户进行“点击屏幕-拖动机械臂”的配对操作,生成坐标变换矩阵并保存为calibration_matrix.json。acupoint_clicker.py: 主程序。集成视觉识别与机械臂控制,加载标定文件,响应鼠标点击事件。DobotDllType.py/DobotDll.dll: Dobot 官方提供的 Python 接口文件与动态链接库。
确保 Dobot Magician 已连接电源与 USB,并处于开机状态。连接 USB 摄像头。
运行标定程序:
python homography_calibration.py操作流程:
- 程序启动后,机械臂会自动移动到预设的“观测位置”。
- 在视频窗口中,点击一个清晰的特征点(如桌上的黑点或特定的标记)。
- 按住机械臂前臂上的 Unlock (解锁) 按钮,手动拖动机械臂,使笔尖精确接触刚才点击的物理位置。
- 松开按钮,按 空格键 确认记录该点对。
- 重复上述步骤至少 4 次(建议覆盖不同区域)。
- 按
c键计算并保存标定矩阵。
运行主程序进行穴位识别与交互:
python acupoint_clicker.py操作流程:
- 摄像头画面中将实时显示识别出的穴位(红点)及名称。
- 使用鼠标点击画面中的任意红点(或任意位置)。
- 机械臂将自动移动到目标位置上方,下降触碰,然后抬起并返回观测位置。
- 光线环境: 保持光线充足且均匀,避免强逆光,以保证 MediaPipe 手部识别的稳定性。
- 机械臂安全: 在运行程序前,请确保机械臂工作范围内无障碍物。
- 标定精度: 标定点的选取应尽量覆盖工作区域的四个角,以提高映射精度。摄像头与工作平面的相对位置一旦改变,必须重新标定。