国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

機(jī)械臂進(jìn)行手眼標(biāo)定(眼在手上)python代碼

這篇具有很好參考價(jià)值的文章主要介紹了機(jī)械臂進(jìn)行手眼標(biāo)定(眼在手上)python代碼。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

執(zhí)行手眼標(biāo)定(eye in hand)步驟:

  1. 收集數(shù)據(jù):使用相機(jī)拍攝多張不同角度的標(biāo)定板圖像,并記錄相機(jī)和機(jī)械臂的位姿數(shù)據(jù)。

  2. 提取標(biāo)定板角點(diǎn):使用OpenCV庫(kù)中的函數(shù)cv2.findChessboardCorners()提取標(biāo)定板圖像中的角點(diǎn)坐標(biāo)。

  3. 計(jì)算相機(jī)內(nèi)參矩陣:使用OpenCV庫(kù)中的函數(shù)cv2.calibrateCamera()計(jì)算相機(jī)的內(nèi)參矩陣,包括焦距、主點(diǎn)和畸變系數(shù)等。

  4. 計(jì)算相機(jī)外參矩陣:對(duì)于每張標(biāo)定板圖像,使用OpenCV庫(kù)中的函數(shù)cv2.solvePnP()計(jì)算相機(jī)的外參矩陣,即相機(jī)在世界坐標(biāo)系中的位姿。

  5. 計(jì)算機(jī)械臂末端在世界坐標(biāo)系中的位姿:對(duì)于每個(gè)機(jī)械臂的位姿數(shù)據(jù),使用機(jī)械臂的運(yùn)動(dòng)學(xué)模型計(jì)算機(jī)械臂末端在世界坐標(biāo)系中的位姿。

  6. 計(jì)算相機(jī)和機(jī)械臂之間的變換矩陣:將相機(jī)在世界坐標(biāo)系中的位姿和機(jī)械臂末端在世界坐標(biāo)系中的位姿作為輸入,使用OpenCV庫(kù)中的函數(shù)cv2.solvePnP()計(jì)算相機(jī)和機(jī)械臂之間的變換矩陣。

  7. 應(yīng)用手眼標(biāo)定結(jié)果計(jì)算目標(biāo)世界坐標(biāo):對(duì)于每個(gè)目標(biāo)點(diǎn)的像素坐標(biāo),使用相機(jī)的內(nèi)參矩陣將其轉(zhuǎn)換為相機(jī)坐標(biāo)系下的坐標(biāo),然后使用相機(jī)和機(jī)械臂之間的變換矩陣將其轉(zhuǎn)換為機(jī)械臂末端坐標(biāo)系下的坐標(biāo),最后使用機(jī)械臂的逆運(yùn)動(dòng)學(xué)模型計(jì)算機(jī)械臂需要運(yùn)動(dòng)到的關(guān)節(jié)角度,從而實(shí)現(xiàn)目標(biāo)點(diǎn)的定位。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-595698.html

import cv2
import numpy as np
import rospy
from sensor_msgs.msg import Image, CameraInfo
from cv_bridge import CvBridge

# 訂閱相機(jī)圖像和相機(jī)信息
def image_callback(image_msg):
    global cv_image
    bridge = CvBridge()
    cv_image = bridge.imgmsg_to_cv2(image_msg, desired_encoding='bgr8')

def camera_info_callback(info_msg):
    global camera_info
    camera_info = info_msg

rospy.init_node('handeye_calibration')

# 訂閱相機(jī)圖像和相機(jī)信息
rospy.Subscriber('/camera/image_raw', Image, image_callback)
rospy.Subscriber('/camera/camera_info', CameraInfo, camera_info_callback)

# 獲取標(biāo)定板參數(shù)
pattern_size = (9, 6) # 內(nèi)部角點(diǎn)數(shù)量
square_size = 0.0254 # 標(biāo)定板方塊大小
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001)

# 定義物體點(diǎn)和圖像點(diǎn)數(shù)組
object_points = []
image_points = []

# 檢測(cè)標(biāo)定板并提取角點(diǎn)
while len(image_points) < 20:
    if cv_image is not None and camera_info is not None:
        gray = cv2.cvtColor(cv_image, cv2.COLOR_BGR2GRAY)
        ret, corners = cv2.findChessboardCorners(gray, pattern_size, None)
        if ret:
            object_point = np.zeros((pattern_size[0] * pattern_size[1], 3), np.float32)
            object_point[:, :2] = np.mgrid[0:pattern_size[0], 0:pattern_size[1]].T.reshape(-1, 2)
            object_point *= square_size

            corners_refined = cv2.cornerSubPix(gray, corners, (11, 11), (-1, -1), criteria)

            object_points.append(object_point)
            image_points.append(corners_refined)

        cv2.drawChessboardCorners(cv_image, pattern_size, corners_refined, ret)
        cv2.imshow('image', cv_image)
        cv2.waitKey(100)

# 計(jì)算相機(jī)和機(jī)械臂姿態(tài)之間的變換
camera_matrix = np.array(camera_info.K).reshape((3, 3))
dist_coeffs = np.array(camera_info.D)[:4]
object_points_array = np.array(object_points)

rvecs_camera = []
tvecs_camera = []
rvecs_robot = []
tvecs_robot = []
for i in range(len(image_points)):
    # 計(jì)算相機(jī)姿態(tài)
    success, rvec, tvec = cv2.solvePnP(
        object_points_array[i],
        image_points[i],
        camera_matrix,
        dist_coeffs)
    rvecs_camera.append(rvec)
    tvecs_camera.append(tvec)

    # 獲取機(jī)械臂姿態(tài),這里假設(shè)機(jī)械臂已經(jīng)正確標(biāo)定,因此可以直接使用機(jī)械臂末端執(zhí)行器的位姿作為機(jī)械臂姿態(tài)
    robot_pos = get_robot_pos()
    rvecs_robot.append(robot_pos[:3])
    tvecs_robot.append(robot_pos[3:])

# 執(zhí)行手眼標(biāo)定
ret, H = cv2.calibrateHandEye(
    np.array(rvecs_robot),
    np.array(tvecs_robot),
    np.array(rvecs_camera),
    np.array(tvecs_camera),
    method=cv2.CALIB_HAND_EYE_TSAI)

print(f'Hand-eye transformation:\n{H}')

cv2.destroyAllWindows()

到了這里,關(guān)于機(jī)械臂進(jìn)行手眼標(biāo)定(眼在手上)python代碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 機(jī)械臂手眼標(biāo)定ZED相機(jī)——眼在手外python、matlab

    機(jī)械臂手眼標(biāo)定ZED相機(jī)——眼在手外python、matlab

    目錄 1.眼在手外原理 2.附上眼在手外求得手眼矩陣的python代碼 3.眼在手外標(biāo)定步驟 1)打印棋盤格 2)得到hand數(shù)據(jù) 3)得到camera數(shù)據(jù) 4.運(yùn)行python得到手眼矩陣 ? 眼在手外所求的手眼矩陣是基坐標(biāo)到相機(jī)的轉(zhuǎn)換矩陣 其中: ????????hand為基坐標(biāo)系下抓夾的位姿,一般從示教器

    2024年02月11日
    瀏覽(23)
  • 機(jī)械臂與RealSense相機(jī)手眼標(biāo)定

    機(jī)械臂與RealSense相機(jī)手眼標(biāo)定

    環(huán)境: 本文主要使用kinova mico機(jī)械臂 + RealSense D435i深度相機(jī)進(jìn)行了eye to hand的手眼標(biāo)定。 系統(tǒng)環(huán)境:Ubuntu18.04,ROS Melodic 硬件:Kinova mico,RealSense D435i 特別注意:經(jīng)測(cè)試,本方法有效可行,好多博客里說(shuō)的運(yùn)行寫(xiě)好的標(biāo)定launch文件后,只有兩個(gè)rviz界面,而沒(méi)有標(biāo)定的rqt_easy_

    2024年02月15日
    瀏覽(18)
  • 3D相機(jī)與機(jī)械臂手眼標(biāo)定流程

    1.采集n組點(diǎn)云數(shù)據(jù),將第一組點(diǎn)云命名為(點(diǎn)云target)基準(zhǔn)點(diǎn)云 ? ?這些數(shù)據(jù)可以通過(guò)3D相機(jī)采集得到,然后通過(guò)一些處理方法(如去噪、濾波等)進(jìn)一步優(yōu)化。 2.采集n組點(diǎn)云的同時(shí)記錄n組機(jī)械臂位姿,同樣將第一組位姿設(shè)為基準(zhǔn)位姿(機(jī)械臂target) 3.將獲取的n組機(jī)械臂位姿由歐

    2024年02月12日
    瀏覽(18)
  • 利用ROS做機(jī)器人手眼標(biāo)定和Qt+rviz+圖片話題顯示的UI設(shè)計(jì)

    利用ROS做機(jī)器人手眼標(biāo)定和Qt+rviz+圖片話題顯示的UI設(shè)計(jì)

    ??????? 博主是在上一篇博文的基礎(chǔ)上作的研究和總結(jié),希望這篇文章可以對(duì)諸君有用,同時(shí)博主也對(duì)魚(yú)香ROS、小魚(yú)大佬、以及其他相關(guān)創(chuàng)作者的支持表示由衷的感謝,本文章內(nèi)容也將繼續(xù)公開(kāi)且代碼開(kāi)源。 ??????? 文章將講述usb_cam(usb相機(jī)內(nèi)參標(biāo)定)、handeye-calib(手眼標(biāo)

    2024年02月21日
    瀏覽(29)
  • python 手眼標(biāo)定OpenCV手眼標(biāo)定(calibrateHandeye())一

    python 手眼標(biāo)定OpenCV手眼標(biāo)定(calibrateHandeye())一

    以下代碼來(lái)源 本篇博客通過(guò)該代碼,附上記錄的公式與查找連接,方面以后調(diào)用能弄懂各個(gè)參數(shù)的意思 本篇看完看第二篇代碼踩坑部分python 手眼標(biāo)定OpenCV手眼標(biāo)定(calibrateHandeye())二 相機(jī)標(biāo)定原理視頻介紹 calibrateHandeye() 參數(shù)描述如下:R_gripper2base,t_gripper2base是機(jī)械臂抓手

    2024年02月15日
    瀏覽(24)
  • python 手眼標(biāo)定OpenCV手眼標(biāo)定(calibrateHandeye())二

    python 手眼標(biāo)定OpenCV手眼標(biāo)定(calibrateHandeye())二

    這一章我們來(lái)根據(jù)上一章的分析,為手眼標(biāo)定函數(shù)calibrateHandEye 準(zhǔn)備他那些麻煩的參數(shù) 更詳細(xì)的參數(shù)參考鏈接 即R_all_end_to_base_1,T_all_end_to_base_1, 我們可用通過(guò)輸入的機(jī)械臂提供的6組參數(shù)得到,3個(gè)位姿與3個(gè)歐拉角 示例代碼 這里是關(guān)系是 通過(guò) cv2.findChessboardCorners 角點(diǎn)查找函數(shù)

    2024年02月01日
    瀏覽(18)
  • 機(jī)器人手眼標(biāo)定原理與python實(shí)現(xiàn)

    機(jī)器人手眼標(biāo)定原理與python實(shí)現(xiàn)

    機(jī)器人手眼標(biāo)定分為eye in hand與eye to hand兩種。介紹之前進(jìn)行變量定義說(shuō)明: : base基坐標(biāo)系 {g}: gripper夾具坐標(biāo)系 {t}: target標(biāo)定板坐標(biāo)系 {c}: camera相機(jī)坐標(biāo)系 1、眼在手上(eye in hand) 眼在手上,相機(jī)固定在機(jī)器人上。 圖1. eye in hand示意圖 由以上兩公式得: 經(jīng)變換得: 可得:

    2024年02月02日
    瀏覽(19)
  • Python-opencv 手眼標(biāo)定(九點(diǎn)定位)

    ?Python-opencv 手眼標(biāo)定(九點(diǎn)定位) 本文主要解決相機(jī)像素坐標(biāo)轉(zhuǎn)換機(jī)械臂坐標(biāo)的問(wèn)題,用到的opencv版本為4.5.5.64 一、手眼定位原理? 以下可以參考 基于OpenCv的機(jī)器人手眼標(biāo)定(九點(diǎn)標(biāo)定法) 主要思路就是將九點(diǎn)標(biāo)定圖放在機(jī)械臂獲取范圍內(nèi),得到九個(gè)圓心坐標(biāo)(像素坐標(biāo)

    2024年02月09日
    瀏覽(22)
  • 將歐拉角轉(zhuǎn)換為旋轉(zhuǎn)矩陣(手眼標(biāo)定)python版本

    將歐拉角轉(zhuǎn)換為旋轉(zhuǎn)矩陣(手眼標(biāo)定)python版本

    1、歐拉角版 2、四元數(shù)版 3、旋轉(zhuǎn)矩陣版本 4、齊次矩陣

    2024年02月16日
    瀏覽(19)
  • 手眼標(biāo)定必備——旋轉(zhuǎn)向量轉(zhuǎn)換為旋轉(zhuǎn)矩陣python——羅德里格斯公式Rodrigues

    手眼標(biāo)定必備——旋轉(zhuǎn)向量轉(zhuǎn)換為旋轉(zhuǎn)矩陣python——羅德里格斯公式Rodrigues

    在使用matlab工具箱對(duì)相機(jī)標(biāo)定后,得到的旋轉(zhuǎn)向量轉(zhuǎn)換為旋轉(zhuǎn)矩陣 ? 參考旋轉(zhuǎn)向量和旋轉(zhuǎn)矩陣的互相轉(zhuǎn)換(python cv2.Rodrigues()函數(shù))_旋轉(zhuǎn)向量轉(zhuǎn)旋轉(zhuǎn)矩陣_FC_code的博客-CSDN博客 p為輸入的旋轉(zhuǎn)向量cameraParams.RotationVectors 得到旋轉(zhuǎn)矩陣cameraParams.RotationMatrices 結(jié)果為 轉(zhuǎn)置之后,剛好

    2024年02月04日
    瀏覽(27)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包