STAG码跟踪案例

将相机安装在机械臂的末端。 该功能使用 eye-in-hand 的方式。重新安装相机之后,需进行一次手眼标定。(注意:260、270设备不支持此功能)

系统开机后,会自动启动程序,该程序支持启动颜色识别、形状识别、特征点图像识别、AR二维码识别、YOLOv5 图像识别、AiKit_UI程序、手柄控制程序、myCobot自适应夹爪案例、myCobot五指灵巧手案例以及stag码跟踪案例。

注意:M5版本机器使用前需选择设备型号,PI版本则不需要。

根据终端信息提示,选择对应机械臂型号,如果是PI版本设备,则忽略此步骤。这里以280M5为例,输入1:

按下数字0,启动stag码跟踪案例功能。首先机械臂会运动到观测点初始位置,然后Stag码木块与机械臂末端摄像头法兰保持30cm距离,机械臂开始进行跟踪运动。

演示视频:

Stag码

本文使用stag码用作二维码跟踪,建议使用彩印,黑白打印识别率较低。

下载地址:Stag码下载

注意: stag码的左上角为编号,使用opencv的stag识别库可以识别该编号,你可以为不同编号设计不同的行为逻辑,比如00设为位置跟踪,01设为回到观测点。

手眼标定

2.1 手眼矩阵原理

手眼标定是视觉跟踪必不可少的一环,其作用是求得机械臂坐标系(手)与相机坐标系(眼)之间的相对关系,我们把这种相对关系用一个4*4的手眼矩阵来表示,具体原理可以参考以下链接: 手眼矩阵原理

2.2 手眼标定方法

注意: 重新安装相机之后,需进行一次手眼标定。

将相机装配到机械臂上(一般装配在机械臂末端),连接需要控制的机械臂

home/er/convenient_aikit/AiKit_280M5/scripts/camera_detect.py 文件部分内容修改如下:

if __name__ == "__main__":
    # Load camera configuration parameters
    camera_params = np.load("/home/er/convenient_aikit/AiKit_280M5/scripts/camera_params.npz")
    mtx, dist = camera_params["mtx"], camera_params["dist"]

    # Initialize the camera detector
    m = camera_detect(0, 32, mtx, dist)

    # Disable vision mode initially
    mc.set_vision_mode(0)

    # Uncomment the following lines to run specific functions
    # m.camera_open_loop()               # Open camera in a continuous loop
    # m.stag_identify_loop()             # Continuously detect STAG markers
    # m.stag_robot_identify_loop(mc)     # Continuously calculate robot coordinates based on STAG
    m.Eyes_in_hand_calibration(mc)     # Calibrate Eyes-in-Hand matrix
    # m.vision_trace(0, mc)              # Perform a one-time vision trace

    # Start continuous vision trace loop
    # m.vision_trace_loop(mc)

修改后保存,运行命令:

cd ~/convenient_aikit/AiKit_280M5/scripts/
python3 camera_detect.py

此时机械臂会先运动到观测姿态

offset_j5 = -90
self.origin_mycbot_level = [-45, 5, -104, 14, 90 + offset_j5, 40]
ml.send_angles(self.origin_mycbot_level, 50)  # Move to observation point

注意: 用户可自定义修改观测点位,比如旋转6关节使相机处于更合适的位置。

  1. 运动到观测姿态后,终端会弹出以下提示,将stag码置于相机视野内,输入任意键即可继续识别
make sure camera can observe the stag, enter any key quit
  1. 若相机识别到stag码,则会自动进入下一步识别,机械臂移动并捕捉机械臂和相机的位置信息
Move the end of the robot arm to the calibration point, press any key to release servo
  1. 贴紧后根据提示,输入任意键完成手眼标定
focus servo and get current coords

此时会打印EyesInHand_matrix信息,视为标定完成,生成"EyesInHand_matrix.json配置文件,标定成功后无需重复操作! 具体效果参考如下视频,效果与mycobot 280类似:

注意:手眼标定可能会由于操作不当、机器虚位等原因出现误差,当视觉跟踪效果不好时,需要重新手眼标定

results matching ""

    No results matching ""