로봇 시력 시스템: 카메라, 깊이 센서, 처리
로봇 시야 가이드: 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
특정 제품 추천
예산 연구 설정 (총액 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로 하고 있어 근접 포착 관측에 적합하다.
비전 처리 파이프라인
조작 작업에 필요한 전형적인 로봇 시력 파이프라인:
- ** 이미지 획득:** 카메라 드라이버가 ROS2 주제에 대해
T7 을 30-60 Hz로 게시합니다 - 불변화:
T8 노드 또는 드라이버를 통해 캘리브레이션 매개 변수를 적용한다 - ** 객체 탐지/분열:** GPU에서 추론을 실행 (YOLOv8, Segment Anything, 또는 사용자 지정 모델)
- ** 포인트 클라우드 생성:** 깊이 카메라를 사용한다면
T10 를 통해 포인트 클라우드를 생성하십시오. 작업 공간 경계 상자에 따라 필터링 - Grasp 계획: 피드 탐지 대상 및 포착 계획자 (GraspIt!, 연락처-GraspNet, 학습 정책)
- ** 기록:** 훈련 데이터에 대한 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 추천: 둘 다 사용하세요. 작업 공간 컨텍스트에 고정된 오버헤드 + 고정된 사이드 카메라, 그리고 근접 포착 정확성을 위한 손목 카메라. 이것은 [데이터 수집 서비스] (
특정 제품 추천
예산 연구 설정 (총액 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로 하고 있어 근접 포착 관측에 적합하다.
비전 처리 파이프라인
조작 작업에 필요한 전형적인 로봇 시력 파이프라인:
- ** 이미지 획득:** 카메라 드라이버가 ROS2 주제에 대해
T16 을 30-60 Hz로 게시합니다 - 불변화:
T17 노드 또는 드라이버를 통해 캘리브레이션 매개 변수를 적용한다 - ** 객체 탐지/분열:** GPU에서 추론을 실행 (YOLOv8, Segment Anything, 또는 사용자 지정 모델)
- ** 포인트 클라우드 생성:** 깊이 카메라를 사용한다면
T19 을 통해 포인트 클라우드를 생성하십시오. 작업 공간 경계 상자에 따라 필터링 - Grasp 계획: 피드 탐지 대상 및 포착 계획자 (GraspIt!, 연락처-GraspNet, 학습 정책)
- ** 기록:** 훈련 데이터에 대한 HDF5에 동기화 된 이미지, 자세 및 동작을 로그
GPU 추론을 위해 NVIDIA RTX 3060 (12GB VRAM) 는 1280x960 화면에서 30+fps로 YOLOv8-Medium를 처리한다.







