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

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

相关推荐
H_z_q240121 小时前
HCIP园区网
智能路由器·hcip
CS创新实验室21 小时前
《计算机网络》深入学:比较 RIP 和 OSPF 协议
网络·计算机网络·智能路由器
小红的布丁2 天前
公网 IP、私网 IP、路由表、转发表与 MAC 地址的关系
tcp/ip·macos·智能路由器
闻道且行之2 天前
虚拟机三种网络模式全解析(桥接 / NAT / 仅主机)
网络·智能路由器·vmware·虚拟机
深念Y2 天前
从路由器到SSD:关于自制NAND编程器的幻想与现实
智能路由器·路由器·ssd·主控·nand·闪存·智能机顶盒
以太浮标2 天前
华为eNSP模拟器综合实验之- WLAN瘦AP配置实战案例详解
运维·网络·网络协议·华为·智能路由器·信息与通信
星创易联2 天前
5G车载以太网网关赋能公交智能化升级
5g·车载系统·智能路由器
@insist1232 天前
网络工程师-核心考点:网络管理体系与 SNMP 协议全解析
网络·智能路由器·网络工程师·软考·软件水平考试
运维儿3 天前
7.ARP 代理与端口隔离:满足通信需求,保证通信安全
网络·智能路由器·代理模式·linux 网络·云计算网络
24zhgjx-lxq3 天前
OSPF的网络类型:P2P与Broadcast
网络·智能路由器·p2p·broadcast·ensp