行空板M10——AI五指机械手
本帖最后由 云天 于 2025-11-4 13:58 编辑行空板AI五指机械手:用MediaPipe+OpenCV“掰”动激光切割手掌
【项目背景】
“能不能让行空板看懂我的手势,再驱动真的机械手一比一复现?”——带着这个脑洞,我们只用了一周就把想法落地:
• 主控:行空板M10(自带Linux+Python,USB口直接插摄像头)
• 机械:激光切割5mm椴木手掌+5个DFS1809 180°舵机
• 视觉:OpenCV取流+MediaPipe Hands实时识别
• 交互:7颗NeoPixel指节灯,手指一伸就灭、一弯就亮
最终效果:对着摄像头比“Rock”,机械手同步握拳;比“Three”,无名指小指立刻跟上;延迟小,仪式感满满!
【硬件清单】行空板M10 、IO扩展板(Gravity)( 直插行空板,引出8路舵机 )、DFS1809舵机( 5 个180°)、 激光切割手掌+指节 (3mm/5mm亚克力均可)、NeoPixel环(5灯)、USB摄像头 、 皮筋、行空板电源扩展板 。
【工作原理】
行空板开机自启Python脚本,OpenCV全屏显示“logo.jpg”
MediaPipe Hands每帧返回21个关键点,计算指尖-第二关节y坐标差,判断“伸/弯”
拇指特殊处理:对比指尖与关节x坐标,解决左右手镜像问题
手指状态变化→控制舵机→指节同步弯曲;同时NeoPixel亮灭反馈
【激光切割图纸与机械装配】
设计图下载:https://www.yuque.com/lasermaker/ckzpj/il2g7l
【软件环境配置】行空板已预装opencv-python、pinpong、MediaPipe库。
【关键代码拆解】
[*]舵机安全初始化
for s in :
s.angle(120) # 120°=手指自然弯曲,不会打到掌心
time.sleep(0.3)2.拇指镜像修正
if hand_landmarks.landmark.x < wrist_x:# 左手
is_extended = tip_x < pip_x
else: # 右手
is_extended = tip_x > pip_x3.状态变化防抖
if current_finger_state != previous_finger_state:
control_servos(current_finger_state)
previous_finger_state = current_finger_state.copy()4.指节灯效
np1 = (0,0,0) if extended else (255,0,0)# 伸灭弯亮【踩坑指南】
[*]摄像头延迟高
cap.set(cv2.CAP_PROP_BUFFERSIZE, 1) 必须加,可降延迟50%
[*]舵机抖动
给舵机单独供5V,千万不要用行空板5V引脚直驱;GND共地即可
[*]拇指识别误触发
把pip点换成IP关节(关键点1)更稳定
[*]激光切割公差
切割材料遇热会缩,切完先试装,再用200目砂纸打磨轴孔
【视频展示】
https://www.bilibili.com/video/BV1vD1NBXE5z/?share_source=copy_web
【图片展示】
(行控板M10)
摄像头
舵机
LED灯
【完整代码】
请问MediaPipe库下载报错该怎么办呀 创意真强,楼主辛苦了
雁雁老师 发表于 2025-11-5 16:28
请问MediaPipe库下载报错该怎么办呀
行空板M10有专用mediapipe库,在df的官方教程里
页:
[1]