【RK摄像头使用指南】

RK摄像头使用指南

任务目的

使用RK开发板识别摄像头中的apriltag标签位置姿态。在机械臂程序中通过lebai_sdk使用信号量读取RK开发板的识别结果。

前置知识

路由器及网络配置、Linux使用、AprilTag测距原理、Lua编程、lebai sdk开发

配置RK开发板

摄像头安装

将摄像头固定到手臂末端,将USB线沿手臂固定好并将USB插头接入RK开发板。

网络配置

需要准备好一个路由器,并登录路由器的后台管理系统,确保其正常工作。

准备3根网线,一根有网的网线接入路由器wan口,另一根网线路由器和RK板连接,最后一根分别接入手臂控制箱与路由器。

在路由器的后台管理系统中分别找到手臂控制箱和RK开发板的 IP地址,文档后续假设手臂控制箱的IP为 192.168.22.200 ,RK开发板的IP为 192.168.22.201 /ui/plugin,需要根据实际情况进行修改。

摄像头配置

安装插件

在浏览器中打开RK开发板的控制系统 http://192.168.22.201/ui/plugin

点击左上角的安装插件,选中cameracamera_calibraterapriltag共3个插件,点击"确定"安装插件。安装完成后,点击右侧开关,操作使能打开这3个插件

配置摄像头插件

点击camera插件的"前往插件"按钮,填写摄像头的序号index、画面的宽度width、画面的高度height,画面翻转,填写完成后点击"save"保存参数

配置视觉标定插件

准备标定板,放在摄像头显示范围内。

点击camera_calibrater插件的"前往插件"按钮,填写网络配置时获取到的手臂控制箱的IP、相机位置选择眼在手上、标定板的角点行数、标定板的角点列数、相邻角点之间的间隔长度,格子长度填写完成后点击"save"保存参数

进行视觉标定

通过示教手臂到不同位置,待摄像头画面稳定不晃动后,点击"记录点位"按钮。

持续上述步骤,直到记录的点位数量足够多,点位数量越多,结果越精准,通常需要6~20个点位。

点位采集完成后,点击标定按钮,待下方出现标定结果记录点位变为0,即为标定完成。

配置apriltag插件

点击apriltag插件的"前往插件"按钮,填写标签类型tag_family、标签尺寸tag_size、信号量signal,填写完成后点击"save"保存参数。

完成配置

恭喜,至此已完成对RK开发板的配置。

配置手臂

在浏览器中打开手臂的控制系统 http://192.168.22.200/dashboard/

点击"场景" "导入",将上方的apriltag.zip导入进去,即可得到如图所示3个场景。

配置RK开发板参数

打开名为apriltag的场景,即上图第1个。

第1步修改变量way为signal,使用进行通信,第2步将RK开发板的IP地址赋值给camera_ip变量,第3步将配置RK开发板的apriltag插件时设置的信号量signal赋值给sid变量。

第四步可以将run_test置为true后,点击右上角的运行,会打印出找到的所有标签,并打印耗费的时间。测试完后务必将run_test置为false,后续场景中均需要以此场景为基础 调用该场景里的函数。

csharp 复制代码
import cv2
import apriltag
import numpy as np

# 初始化摄像头
cap = cv2.VideoCapture(0)

# 初始化AprilTag检测器
detector = apriltag.Detector()

while True:
    ret, frame = cap.read()
    if not ret:
        break

    # 转换为灰度图像
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    # 检测AprilTag
    tags = detector.detect(gray)

    for tag in tags:
        # 获取标签的中心位置
        center = tag.center
        print(f"Tag ID: {tag.tag_id}, Center: {center}")

        # 获取标签的姿态
        pose = tag.pose
        print(f"Pose: {pose}")

    # 显示图像
    cv2.imshow('frame', frame)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

示教获取抓取点与标签的相对位置

打开名为apriltag-offset的场景,即上图第3个。

配置tag_id为目标标签的ID。

点击右上角的运行,会打印出识别到的所有标签的位置信息,然后工具中心点TCP会移动到标签上方200mm的位置,并自动进入示教模式,将手臂拖拽到理想的抓取位后,按下手臂肩部灯板的按钮,会打印出位置信息,首先检验一下good_pose和verify是否相差2mm以内,确认数据无误后复制offset的值

csharp 复制代码
-- 初始化lebai_sdk
local lebai = require("lebai_sdk")

-- 读取信号量
local tag_position = lebai.read_signal("tag_position")
local tag_pose = lebai.read_signal("tag_pose")

-- 根据标签位置和姿态控制机械臂
-- 示例:移动机械臂到标签位置
lebai.move_to(tag_position)

运行抓取示例

打开名为"抓标签"的场景,即上图第2个,该场景为使用示例,可自由更改使用。

将上一步得到的offset赋值给cell2tag,配置tag_id为目标标签的ID。

将手臂示教到一个合适的位置后,点击右上角的运行,会运动到抓取点进行抓取,并返回到起始位置。

相关推荐
wanderful_5 小时前
使用eNSP模拟器搭建网络拓扑结构(笔记2):从 0 到 1 掌握华为网络仿真
网络·智能路由器
王道长服务器 | 亚马逊云1 天前
AWS Systems Manager:批量服务器管理的隐藏利器
linux·网络·云计算·智能路由器·aws
qianshang2331 天前
区域综合实验
智能路由器
汪汪大队u2 天前
IPv4与IPv6的对比
运维·网络·智能路由器
云卓SKYDROID2 天前
飞控开发难点与技术要点
网络·智能路由器·无人机·高科技·云卓科技
张紫娃3 天前
ipconfig详解
网络·智能路由器
阎*水4 天前
虚拟化网络连接与虚拟机嵌套
网络·智能路由器
cozil5 天前
记录磊科B39路由器跨域组网遇到的问题
网络·智能路由器·跨域组网
JXNL@5 天前
路由器和机顶盒的射频核心:深入解析PA、LNA、PHY与滤波器
智能路由器