Why
The LeRobot card is about moving the arm; this is the step in front of it, and skipping it is why a cheap arm grabs at empty air. A policy trained on demonstrations learns actions in the robot's own coordinate frame, but everything the camera reports is in pixels, and nothing in the imitation-learning loop converts between them for you. So the question this card answers is the plainest one in robotics vision — two hundred pixels on screen is how many millimetres in the world? — and the reason it belongs in this catalogue rather than in a bookmark folder is that the honest answer is a measurement, not a pipeline. It also happens to be free: a built-in webcam and a sheet of A4 are the entire bill of materials, which makes it the cheapest way to find out where the ceiling actually is before spending anything on hardware. The V in VLA starts here.
How it works
Four steps, and only the last two are optional. Intrinsics: fifteen to twenty chessboard or ChArUco shots through cv2.calibrateCamera yield the matrix K (fx, fy, cx, cy) and the distortion coefficients, and reprojection RMS is the first of the two numbers this card exists to produce — under one pixel is the pass mark. Pose: an ArUco marker on the object or the gripper gives full 6-DOF position and rotation relative to the camera, and there is one version trap worth knowing before it costs half an hour — cv2.aruco.estimatePoseSingleMarkers was deprecated in OpenCV 4.7, so the current path is cv2.aruco.ArucoDetector for corners followed by cv2.solvePnP with SOLVEPNP_IPPE_SQUARE, which is why a large share of the tutorials online no longer run as written. Hand-eye: cv2.calibrateHandEye aligns the camera frame with the robot base frame, and the classic first mistake is not the algorithm choice (Tsai, Park, Horaud) but the setup — a camera mounted on the arm is eye-in-hand, a camera on a tripod is eye-to-hand, and getting that backwards produces a transform that is wrong in a way that still looks plausible. Inference: cv2.dnn runs an ONNX detector with no second framework, which is the natural lightweight pairing for an edge board like the Jetson Orin Nano Super and the reason that item sits next in the queue. The second number is the one that actually settles what this camera can do: put the marker at a distance measured with a ruler, compare it to tvec, and record the error as a percentage. Everything above is setup for those two figures — RMS and range error — and a card that reports them is worth more than one that reports that the axes rendered.
Where it lands in Jayverse
- Auditor: adopt the "two numbers, not a demo" standard. Any PoC or feature claim in the Jayverse catalogue should report a measured error, like this card's RMS reprojection and range error, rather than a screenshot, before Auditor accepts it as checked.
- Number: publish the error alongside the reading, not just the value. Apply the same reprojection-then-range-check pattern here: any distributed indicator should carry its own precision or error figure so a consumer can judge it the way this card judges millimetres per pixel.
- CI: reject a PoC script that only prints success. Require the numeric error or latency figure the way this card requires RMS and range error before a calibration step, or any PoC, counts as done.
Key expressions
| Expression | 뜻 · 쓰이는 자리 |
|---|---|
| bill of materials | 필요한 재료 목록, 준비물 전체 · 실험에 드는 비용이 얼마 안 됨을 강조할 때. "the entire bill of materials" |
| pass mark | 합격 기준선 · 어느 수치 이하면 통과로 볼지 정할 때. "under one pixel is the pass mark" |
| version trap | 버전 함정 · 구버전 예제 코드가 최신 버전에서 안 통하는 문제. "a version trap worth knowing" |
| deprecated | (기능이) 더 이상 지원되지 않는, 폐기 예정인 · 옛날 API를 쓰면 안 되는 이유. "was deprecated in OpenCV 4.7" |
| eye-in-hand / eye-to-hand | 카메라가 팔에 달림 / 카메라가 고정됨 · 캘리브레이션 설정을 헷갈리면 안 되는 두 방식. "a camera mounted on the arm is eye-in-hand" |
| settle (decide) | 결정적으로 판가름하다 · 최종적으로 성능을 확정 짓는 수치를 말할 때. "actually settles what this camera can do" |
| look plausible | 그럴듯해 보이다(실제론 틀림) · 오차가 있어도 결과가 자연스러워 보일 때. "a transform that is wrong in a way that still looks plausible" |
| ceiling | 상한선, 한계치(비유) · 하드웨어에 투자하기 전에 알아둘 성능 한계. "find out where the ceiling actually is" |
| natural pairing | 자연스럽게 잘 맞는 조합 · 두 기술이 특히 궁합이 좋을 때. "the natural lightweight pairing for an edge board" |
| ArUco | 증강현실 마커 시스템(ArUco marker) · 카메라 포즈 추정을 위해 인쇄해 붙이는 정사각형 코드 마커. "print one DICT_4X4_50 marker from chev.me/arucogen" |
| ChArUco | 체스보드와 ArUco를 결합한 보정용 패턴(ChArUco board) · 카메라 내부 파라미터를 보정할 때 쓰는 표준 패턴. "fifteen to twenty chessboard or ChArUco shots" |
| DOF | 자유도(Degrees of Freedom) · 물체의 위치·회전을 나타내는 축의 개수, 여기선 6축 포즈. "full 6-DOF position and rotation relative to" |
| LeRobot | 허깅페이스의 로봇 학습 프레임워크 · 팔을 움직이는 정책을 다루는 다른 카드가 참조하는 프로젝트. "The LeRobot card is about moving the arm" |
| ONNX | 신경망 교환 포맷(Open Neural Network Exchange) · 프레임워크 간 호환되는 모델 포맷, 엣지 보드 추론에 사용. "cv2.dnn runs an ONNX detector with no second" |
| RMS | 평균제곱근 오차(Root Mean Square error) · 카메라 보정의 정확도를 나타내는 첫 번째 지표. "reprojection RMS is the first of the two" |
| VLA | 시각-언어-행동 모델(Vision-Language-Action) · 로봇이 보고 이해하고 행동하는 모델 계열, 이 카드는 그 '시각' 부분. "The V in VLA starts here." |