mycobot 280 M5初级运动-左右跟随晃动

在这里插入图片描述

一、用到了以下一些api

1. 单关节控制

send_angle(id, degree, speed)
  • 功能: 发送指定的单个关节运动至指定的角度
  • 参数说明:
  • id: 代表机械臂的关节,用数字1-6来表示。
  • degree: 表示关节的角度
  • speed:表示机械臂运动的速度,范围0~100
  • 返回值: 1
set_encoder(joint_id, encoder, sp)
  • 功能: 发送指定的单个关节运动至指定的电位值

  • 参数说明:

  • joint_id: 代表机械臂的关节,用数字1-6来表示。

  • encoder:表示机械臂的电位值,取值范围是 0 ~ 4096

  • sp: 表示机械臂运动的速度,范围1~100

  • 返回值: 1

二、使用cv获取面部识别

由于cv获取的面部检测是多面部检测,所以我们挑选最大的那一个,定位其中央坐标。当然,如果机器配置跟不上,可以降低帧率或者不显示画面。

while True:
    # Capture frame-by-frame
    ret, frame = cap.read()
    
    # 镜像效果
    frame = cv2.flip(frame, 1)  # 水平翻转帧

    # Convert to grayscale
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    
    # Load the Haar cascade for face detection
    face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
    
    # Detect faces
    faces = face_cascade.detectMultiScale(gray, 1.1, 4)
    
    # 选择最大的一个人脸
    if len(faces) > 0:
        largest_face = max(faces, key=lambda f: f[2] * f[3])  # 计算面积
        (x, y, w, h) = largest_face
        center_x = x + w // 2
        center_y