Guides(으)로 돌아가기

로봇 시력 시스템: 카메라, 깊이 센서, 처리

로봇 시야 가이드: RGB 카메라, 깊이 센서 (RealSense, ZED), 처리 파이프라인 및 조작 시스템과의 통합.

전체적인 설명

시각은 로봇 조작에 가장 풍부한 정보의 감각 채널이다. 제대로 구성된 시각 시스템은 정책이 물건을 잡거나 배치하거나 쏟아부거나 조립해야 하는 지리학적 및 의미적 이해를 제공합니다. 그러나 잘못된 카메라, 설치 위치 또는 처리 파이프라인을 선택하는 것은 그렇지 않은 능력을 가진 시스템을 마비시킬 수 있습니다.

이 가이드 는 로봇 비전 스택의 모든 층을 다루고 있습니다. 센서 선택, 로봇 기술, 캘리브레이션 절차, 설치 전략, 처리 파이프라인과 ROS2 통합을 위한 광학적 고려 사항. 우리의 권고 사항은 조작 연구, 원격 조작 및 생산 검사 응용 프로그램에서 RCSV에서 수십 개의 비전 시스템 배포에 기초합니다.

센서 타입 비교

Sensor Type Example Products Resolution Price Best For
2D RGB (global shutter) Basler ace2, FLIR Blackfly S, Allied Vision Alvium Up to 5472x3648 $400-$2,000 High-quality data collection, policy training, inspection
2D RGB (rolling shutter / USB) Logitech BRIO, ELP USB cameras, Arducam Up to 4K $30-$200 Budget prototyping, slow-motion tasks
Stereo Depth (active IR) Intel RealSense D435i, D455 1280x720 depth, 1920x1080 RGB $200-$350 Supplemental depth, point cloud generation
Stereo Depth (neural) Stereolabs ZED 2i, ZED Mini 2208x1242 (2K), depth to 20m $450-$550 Mobile robots, outdoor depth, spatial mapping
Structured Light Photoneo PhoXi, Ensenso N-series 2064x1544 (3.2 MP depth) $5,000-$15,000 Bin picking, high-precision 3D scanning
Time-of-Flight (ToF) Azure Kinect DK, Lucid Helios2 1024x1024 (Kinect), 640x480 $400-$3,000 Body tracking, scene understanding
Event Camera Prophesee EVK4, iniVation DVXplorer 1280x720 (event stream) $3,000-$8,000 High-speed tracking, dynamic scenes, low latency
Thermal (LWIR) FLIR Lepton 3.5, Seek Thermal 160x120 to 640x512 $200-$5,000 Thermal inspection, human detection, food handling

로봇 기술 에 대한 광학적 고려 사항

글로벌 셔터 VS 롤링 셔터

이것은 로봇 공학에서 가장 중요한 카메라 사양이다. ** 롤링 셔터**는 이미지 행을 줄에 걸친 것으로 나타냅니다. (정상적인 읽기: 10-30 ms) 노출 중에 카메라 또는 장면이 움직이면 이미지는 왜곡, 흔들림 또는 부분 프레임 왜곡을 나타냅니다. 10 ms의 읽기 시간으로 200mm/s로 움직이는 로봇 팔의 경우, 프레임의 위와 밑부분은 2mm로 위축될 수 있습니다.

글로벌 클러터**는 모든 픽셀을 동시에 노출시킵니다. 산업 기계 시각 카메라 (Basler ace2, FLIR Blackfly S) 는 글로벌 클러터 센서를 (Sony Pregius / Pregius S 가족) 사용한다. 이들은 손목에 설치된 카메라, 고속 조작 및 이미지 촬영 중에 팔이 움직이는 모든 설정에 필수적입니다.

** 추천:** 손목에 설치된 위치에서 항상 글로벌 셔터 카메라를 사용하십시오. 느린 작업을 (<50mm/s) 촬영하는 고정된 오버헤드 카메라에서는 예산이 제한된 경우 롤링 셔터가 허용됩니다.

지연 예산

텔레오퍼레이션에서 전체 시력 파이프라인 지연시간 ( 캡처 + 전송 + 처리 + 디스플레이) 은 안정적인 동작을 위해 100 ms 이하, 반응성 감각을 위해 50 ms 이하로 있어야 한다. 폐쇄 루프 시각 서비스용에서는 <16 ms (한 프레임 60 fps) 를 목표로 한다. 지연시간의 주요 요인은 다음과 같다.

  • 센서 노출: 1-33 ms (빛과 프레임 속도에 따라 달라집니다)
  • 전송: <1 ms (하드웨어 트리거를 가진 GigE) ~ 50 ms (버퍼링을 가진 USB)
  • 처리 (탐지/분열): 5-50 ms (GPU에 따라 달라)
  • 네트워크 (거래역으로 스트리밍되는 경우): 5-200 ms (프로그램에 따라)

ROS2 카메라 드라이버

당신이 고려하는 모든 카메라에는 ROS2 드라이버가 유지되어야합니다.

  • T2 -- D400 및 L500 시리즈의 공식 인텔 드라이버. 깊이, IR, RGB, IMU 주제를 게시합니다.
  • T3 -- 스테레오랩 ZED 카메라. 공간 지도 및 객체 탐지 노드를 포함합니다.
  • T4 -- Basler 카메라를 Pylon SDK를 통해 하드웨어 트리거를 지원합니다.
  • T5 - FLIR/Point Grey 카메라, 하드웨어 트리거 및 GPIO 지원
  • T6 - USB 카메라에 대한 일반 V4L2 드라이버. 하드웨어 트리거 지원이 없습니다.

OpenCV로 카메라 캘리브레이션

적절한 캘리브레이션은 협상 불가능하다. 캘리브레이션되지 않은 카메라는 3D 재구성 및 정책 일반화를 악화시키는 방사선 왜곡을 도입합니다. 여기 OpenCV를 사용하는 표준 절차입니다:

import cv2
import numpy as np
import glob

# Checkerboard dimensions (inner corners)
BOARD_SIZE = (9, 6)
SQUARE_SIZE = 25.0  # mm

# Prepare 3D object points
objp = np.zeros((BOARD_SIZE[0] * BOARD_SIZE[1], 3), np.float32)
objp[:, :2] = np.mgrid[0:BOARD_SIZE[0], 0:BOARD_SIZE[1]].T.reshape(-1, 2) * SQUARE_SIZE

obj_points, img_points = [], []

for fname in sorted(glob.glob("calib_images/*.png")):
    img = cv2.imread(fname)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    ret, corners = cv2.findChessboardCorners(gray, BOARD_SIZE, None)
    if ret:
        corners = cv2.cornerSubPix(gray, corners, (11, 11), (-1, -1),
            (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001))
        obj_points.append(objp)
        img_points.append(corners)

ret, K, dist, rvecs, tvecs = cv2.calibrateCamera(
    obj_points, img_points, gray.shape[::-1], None, None)

print(f"Reprojection error: {ret:.4f} px")  # Target: < 0.5 px
print(f"Camera matrix K:\n{K}")
print(f"Distortion coeffs: {dist}")

# Save for ROS2 camera_info
np.savez("calibration.npz", K=K, dist=dist, rvecs=rvecs, tvecs=tvecs)

최고의 실습: 쉐커보드와 다양한 각 (45도까지 기울여), 거리를 (프레임의 20-80%를 채우며) 그리고 전체 이미지에 걸쳐 위치를 30~50개의 이미지를 수집한다. 연구 수준 작업에 있어서 재탄생 오류는 0.5 피클스 이하로 있어야 한다. 렌즈 변경, 집중 조정 또는 물리적 충격 후 재탄생한다.

손목 장착 카메라와 외부 카메라 상거래

Factor Wrist-Mounted External (Fixed)
Field of View Narrow, focused on grasp point Wide, full workspace coverage
Occlusion Minimal -- always sees what end-effector sees Arm and gripper can occlude objects
Motion blur High -- requires global shutter + short exposure Low -- camera is stationary
캘리브레이션 Eye-in-hand calibration required Eye-to-hand calibration (simpler)
Cable management Challenging -- cable must route along arm Simple -- fixed cable run
Weight at end-effector Adds 50-300g (reduces payload budget) Zero impact on payload
Policy training impact Strong signal for fine manipulation Good for spatial reasoning and navigation

RCSV 추천: 둘 다 사용하세요. 작업 공간 컨텍스트에 고정된 오버헤드 + 고정된 사이드 카메라, 그리고 근접 포착 정확성을 위한 손목 카메라. 이것은 [데이터 수집 서비스] (T20) 에서 배포하는 표준 3 카메라 설정입니다. 완전한 구성을 위해 우리의 [전체 조작용 카메라 설정] (T21) 가이드 참조하십시오.

특정 제품 추천

예산 연구 설정 (총액 400~800달러)

2x 로지텍 BRIO 4K (200달러/세트) 상부 및 사이드뷰, 1x 인텔 리얼센스 D435i (200달러) 추가 깊이. 제한: BRIO에 롤링 셔터, USB 지연기 잇터. 느린 조작 작업 (<50mm/s) 및 초기 프로토타입 제작에 적합.

표준 연구 설정 (총 1,500~ 3,000 달러)

2x Basler ace2 a2A1920-160ucBAS (개는 650달러) 가 대장 및 측면 관측을 위한 글로벌 셔터, 1x RealSense D435i (개는 200달러) 가 깊이에 대한 기능으로 구성되어 있습니다. PoE (100달러) 와 Arduino Uno (25달러) 를 하드웨어 트리거를 위해 GigE 스위치를 추가합니다. 이것은 대부분의 [데이터 수집 작업]에 RCSV의 설정입니다.

생산 시시스템 (5,000~$20,000)

포토네오 포시 3D 스캐너는 미리미터 이하의 깊이 정확도로 칸을 뽑는 데 사용된다. 또는 구조화된 빛 3D 스캐닝을 위한 엔센소 N 시리즈 ($5,000-$8,000) 이 일반적으로 산업 수준의 2D 카메라 (Basler ace2 또는 FLIR Blackfly S) 로 색상 덮개를 위해 결합된다.

손목 카메라

인텔 리얼센스 D405 (200달러, 단거리형으로 설계된 컴팩트형 요소) 또는 USB3 (USB3 300~500달러, 글로벌 셔터, 매우 컴팩트) 을 가진 바슬러 다트. D405는 최소 깊이 거리를 1.5cm로 하고 있어 근접 포착 관측에 적합하다.

비전 처리 파이프라인

조작 작업에 필요한 전형적인 로봇 시력 파이프라인:

  1. ** 이미지 획득:** 카메라 드라이버가 ROS2 주제에 대해 T7을 30-60 Hz로 게시합니다
  2. 불변화: T8 노드 또는 드라이버를 통해 캘리브레이션 매개 변수를 적용한다
  3. ** 객체 탐지/분열:** GPU에서 추론을 실행 (YOLOv8, Segment Anything, 또는 사용자 지정 모델)
  4. ** 포인트 클라우드 생성:** 깊이 카메라를 사용한다면 T10를 통해 포인트 클라우드를 생성하십시오. 작업 공간 경계 상자에 따라 필터링
  5. Grasp 계획: 피드 탐지 대상 및 포착 계획자 (GraspIt!, 연락처-GraspNet, 학습 정책)
  6. ** 기록:** 훈련 데이터에 대한 HDF5에 동기화 된 이미지, 자세 및 동작을 로그

GPU 추론을 위해 NVIDIA RTX 3060 (12GB VRAM) 는 1280x960 화면에서 30+fps로 YOLOv8-Medium를 처리한다.

전체적인 설명

시각은 로봇 조작에 가장 풍부한 정보의 감각 채널이다. 제대로 구성된 시각 시스템은 정책이 물건을 잡거나 배치하거나 쏟아부거나 조립해야 하는 지리학적 및 의미적 이해를 제공합니다. 그러나 잘못된 카메라, 설치 위치 또는 처리 파이프라인을 선택하는 것은 그렇지 않은 능력을 가진 시스템을 마비시킬 수 있습니다.

이 가이드 는 로봇 비전 스택의 모든 층을 다루고 있습니다. 센서 선택, 로봇 기술, 캘리브레이션 절차, 설치 전략, 처리 파이프라인과 ROS2 통합을 위한 광학적 고려 사항. 우리의 권고 사항은 조작 연구, 원격 조작 및 생산 검사 응용 프로그램에서 RCSV에서 수십 개의 비전 시스템 배포에 기초합니다.

센서 타입 비교

Sensor Type Example Products Resolution Price Best For
2D RGB (global shutter) Basler ace2, FLIR Blackfly S, Allied Vision Alvium Up to 5472x3648 $400-$2,000 High-quality data collection, policy training, inspection
2D RGB (rolling shutter / USB) Logitech BRIO, ELP USB cameras, Arducam Up to 4K $30-$200 Budget prototyping, slow-motion tasks
Stereo Depth (active IR) Intel RealSense D435i, D455 1280x720 depth, 1920x1080 RGB $200-$350 Supplemental depth, point cloud generation
Stereo Depth (neural) Stereolabs ZED 2i, ZED Mini 2208x1242 (2K), depth to 20m $450-$550 Mobile robots, outdoor depth, spatial mapping
Structured Light Photoneo PhoXi, Ensenso N-series 2064x1544 (3.2 MP depth) $5,000-$15,000 Bin picking, high-precision 3D scanning
Time-of-Flight (ToF) Azure Kinect DK, Lucid Helios2 1024x1024 (Kinect), 640x480 $400-$3,000 Body tracking, scene understanding
Event Camera Prophesee EVK4, iniVation DVXplorer 1280x720 (event stream) $3,000-$8,000 High-speed tracking, dynamic scenes, low latency
Thermal (LWIR) FLIR Lepton 3.5, Seek Thermal 160x120 to 640x512 $200-$5,000 Thermal inspection, human detection, food handling

로봇 기술 에 대한 광학적 고려 사항

글로벌 셔터 VS 롤링 셔터

이것은 로봇 공학에서 가장 중요한 카메라 사양이다. ** 롤링 셔터**는 이미지 행을 줄에 걸친 것으로 나타냅니다. (정상적인 읽기: 10-30 ms) 노출 중에 카메라 또는 장면이 움직이면 이미지는 왜곡, 흔들림 또는 부분 프레임 왜곡을 나타냅니다. 10 ms의 읽기 시간으로 200mm/s로 움직이는 로봇 팔의 경우, 프레임의 위와 밑부분은 2mm로 위축될 수 있습니다.

글로벌 클러터**는 모든 픽셀을 동시에 노출시킵니다. 산업 기계 시각 카메라 (Basler ace2, FLIR Blackfly S) 는 글로벌 클러터 센서를 (Sony Pregius / Pregius S 가족) 사용한다. 이들은 손목에 설치된 카메라, 고속 조작 및 이미지 촬영 중에 팔이 움직이는 모든 설정에 필수적입니다.

** 추천:** 손목에 설치된 위치에서 항상 글로벌 셔터 카메라를 사용하십시오. 느린 작업을 (<50mm/s) 촬영하는 고정된 오버헤드 카메라에서는 예산이 제한된 경우 롤링 셔터가 허용됩니다.

지연 예산

텔레오퍼레이션에서 전체 시력 파이프라인 지연시간 ( 캡처 + 전송 + 처리 + 디스플레이) 은 안정적인 동작을 위해 100 ms 이하, 반응성 감각을 위해 50 ms 이하로 있어야 한다. 폐쇄 루프 시각 서비스용에서는 <16 ms (한 프레임 60 fps) 를 목표로 한다. 지연시간의 주요 요인은 다음과 같다.

  • 센서 노출: 1-33 ms (빛과 프레임 속도에 따라 달라집니다)
  • 전송: <1 ms (하드웨어 트리거를 가진 GigE) ~ 50 ms (버퍼링을 가진 USB)
  • 처리 (탐지/분열): 5-50 ms (GPU에 따라 달라)
  • 네트워크 (거래역으로 스트리밍되는 경우): 5-200 ms (프로그램에 따라)

ROS2 카메라 드라이버

당신이 고려하는 모든 카메라에는 ROS2 드라이버가 유지되어야합니다.

  • T11 -- D400 및 L500 시리즈의 공식 인텔 드라이버. 깊이, IR, RGB, IMU 주제를 게시합니다.
  • T12 -- 스테레오랩 ZED 카메라. 공간 지도 및 객체 탐지 노드를 포함합니다.
  • T13 -- Basler 카메라를 Pylon SDK를 통해 하드웨어 트리거를 지원합니다.
  • T14 -- FLIR/Point Grey 카메라 하드웨어 트리거 및 GPIO 지원
  • T15 - USB 카메라에 대한 일반 V4L2 드라이버. 하드웨어 트리거 지원이 없습니다.

OpenCV로 카메라 캘리브레이션

적절한 캘리브레이션은 협상 불가능하다. 캘리브레이션되지 않은 카메라는 3D 재구성 및 정책 일반화를 악화시키는 방사선 왜곡을 도입합니다. 여기 OpenCV를 사용하는 표준 절차입니다:

import cv2
import numpy as np
import glob

# Checkerboard dimensions (inner corners)
BOARD_SIZE = (9, 6)
SQUARE_SIZE = 25.0  # mm

# Prepare 3D object points
objp = np.zeros((BOARD_SIZE[0] * BOARD_SIZE[1], 3), np.float32)
objp[:, :2] = np.mgrid[0:BOARD_SIZE[0], 0:BOARD_SIZE[1]].T.reshape(-1, 2) * SQUARE_SIZE

obj_points, img_points = [], []

for fname in sorted(glob.glob("calib_images/*.png")):
    img = cv2.imread(fname)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    ret, corners = cv2.findChessboardCorners(gray, BOARD_SIZE, None)
    if ret:
        corners = cv2.cornerSubPix(gray, corners, (11, 11), (-1, -1),
            (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001))
        obj_points.append(objp)
        img_points.append(corners)

ret, K, dist, rvecs, tvecs = cv2.calibrateCamera(
    obj_points, img_points, gray.shape[::-1], None, None)

print(f"Reprojection error: {ret:.4f} px")  # Target: < 0.5 px
print(f"Camera matrix K:\n{K}")
print(f"Distortion coeffs: {dist}")

# Save for ROS2 camera_info
np.savez("calibration.npz", K=K, dist=dist, rvecs=rvecs, tvecs=tvecs)

최고의 실습: 쉐커보드와 다양한 각 (45도까지 기울여), 거리를 (프레임의 20-80%를 채우며) 그리고 전체 이미지에 걸쳐 위치를 30~50개의 이미지를 수집한다. 연구 수준 작업에 있어서 재탄생 오류는 0.5 피클스 이하로 있어야 한다. 렌즈 변경, 집중 조정 또는 물리적 충격 후 재탄생한다.

손목 장착 카메라와 외부 카메라 상거래

Factor Wrist-Mounted External (Fixed)
Field of View Narrow, focused on grasp point Wide, full workspace coverage
Occlusion Minimal -- always sees what end-effector sees Arm and gripper can occlude objects
Motion blur High -- requires global shutter + short exposure Low -- camera is stationary
캘리브레이션 Eye-in-hand calibration required Eye-to-hand calibration (simpler)
Cable management Challenging -- cable must route along arm Simple -- fixed cable run
Weight at end-effector Adds 50-300g (reduces payload budget) Zero impact on payload
Policy training impact Strong signal for fine manipulation Good for spatial reasoning and navigation

RCSV 추천: 둘 다 사용하세요. 작업 공간 컨텍스트에 고정된 오버헤드 + 고정된 사이드 카메라, 그리고 근접 포착 정확성을 위한 손목 카메라. 이것은 [데이터 수집 서비스] (T23) 에서 배포하는 표준 3 카메라 설정입니다. 완전한 구성에 대한 우리의 [전체 조작용 카메라 설정] (T24) 가이드 참조하십시오.

특정 제품 추천

예산 연구 설정 (총액 400~800달러)

2x 로지텍 BRIO 4K (200달러/세트) 상부 및 사이드뷰, 1x 인텔 리얼센스 D435i (200달러) 추가 깊이. 제한: BRIO에 롤링 셔터, USB 지연기 잇터. 느린 조작 작업 (<50mm/s) 및 초기 프로토타입 제작에 적합.

표준 연구 설정 (총 1,500~ 3,000 달러)

2x Basler ace2 a2A1920-160ucBAS (개는 650달러) 가 대장 및 측면 관측을 위한 글로벌 셔터, 1x RealSense D435i (개는 200달러) 가 깊이에 대한 기능으로 사용된다. PoE (100달러) 와 Arduino Uno (25달러) 를 하드웨어 트리거를 위한 GigE 스위치를 추가한다. 이것은 대부분의 [데이터 수집 작업]에 RCSV의 설정이다.

생산 시시스템 (5,000~$20,000)

포토네오 포시 3D 스캐너는 미리미터 이하의 깊이 정확도로 칸을 뽑는 데 사용된다. 또는 구조화된 빛 3D 스캐닝을 위한 엔센소 N 시리즈 ($5,000-$8,000) 이 일반적으로 산업 수준의 2D 카메라 (Basler ace2 또는 FLIR Blackfly S) 로 색상 덮개를 위해 결합된다.

손목 카메라

인텔 리얼센스 D405 (200달러, 단거리형으로 설계된 컴팩트형 요소) 또는 USB3 (USB3 300~500달러, 글로벌 셔터, 매우 컴팩트) 을 가진 바슬러 다트. D405는 최소 깊이 거리를 1.5cm로 하고 있어 근접 포착 관측에 적합하다.

비전 처리 파이프라인

조작 작업에 필요한 전형적인 로봇 시력 파이프라인:

  1. ** 이미지 획득:** 카메라 드라이버가 ROS2 주제에 대해 T16을 30-60 Hz로 게시합니다
  2. 불변화: T17 노드 또는 드라이버를 통해 캘리브레이션 매개 변수를 적용한다
  3. ** 객체 탐지/분열:** GPU에서 추론을 실행 (YOLOv8, Segment Anything, 또는 사용자 지정 모델)
  4. ** 포인트 클라우드 생성:** 깊이 카메라를 사용한다면 T19을 통해 포인트 클라우드를 생성하십시오. 작업 공간 경계 상자에 따라 필터링
  5. Grasp 계획: 피드 탐지 대상 및 포착 계획자 (GraspIt!, 연락처-GraspNet, 학습 정책)
  6. ** 기록:** 훈련 데이터에 대한 HDF5에 동기화 된 이미지, 자세 및 동작을 로그

GPU 추론을 위해 NVIDIA RTX 3060 (12GB VRAM) 는 1280x960 화면에서 30+fps로 YOLOv8-Medium를 처리한다.