【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。

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

相关推荐
仙俊红19 小时前
计算机网络知识总结01
网络·计算机网络·智能路由器
lzhdim2 天前
中兴BE7200 MAX Wi-Fi7路由器首发679元:万兆SFP、全2.5G网口
5g·智能路由器
zbtlink2 天前
目前路由器是用宽带好还是插电话卡好?
网络·智能路由器
BOF_dcb2 天前
网络设备安装与调试
网络·智能路由器
一执念3 天前
【路由器-AP、DHCP、ARP、广播帧、交换机、信道】-初级知识串联(二)
网络·智能路由器
希赛网3 天前
网络工程师学习:OSPF手动汇总配置实验ensp
网络·智能路由器·网络工程师·hcie·hcia·hcip·华为认证备考
一执念4 天前
【路由器-AP、DHCP、ARP、广播帧、交换机、信道】-初级知识串联(一)
网络·智能路由器
写代码的橘子n4 天前
IPV6的六种单播地址:本地链路地址 环回地址 未指定地址 唯一本地地址 嵌入式Ipv4地址 全局单播地址
网络·计算机网络·智能路由器
云川之下4 天前
【网络】华为AR201路由器
网络·华为·智能路由器
zbtlink4 天前
智能路由器进化论:从信号发射器到家庭网络中枢
网络·智能路由器