9월, 2026의 게시물 표시

Isaac Sim은 하나의 프로그램이 아니었습니다

NVIDIA 문서에 적힌 최소 사양은 RTX 4080, VRAM 16GB였습니다. 제 책상 아래 컴퓨터에 꽂힌 것은 RTX 3060 Ti, 8GB. 정확히 절반이라 시작도 하지 말자는 쪽으로 기울었습니다. 그런데 설치해 보니 그냥 돌아가더군요. 그래서 이 글은 사양 이야기가 아닙니다. 겨우 켜 놓고 안을 들여다봤더니, Isaac Sim은 제가 생각하던 하나의 프로그램 이 아니었거든요. 실행 파일부터 로봇 한 대까지, 열어 보는 곳마다 예상과 다른 물건이 나왔습니다. 이 글은 그 구조를 더듬어 본 기록입니다. 최소 사양의 절반짜리로 켜 봤습니다 공식 문서의 표는 세 단으로 되어 있습니다. 최소가 RTX 4080에 VRAM 16GB와 램 32GB, 권장이 RTX 5080에 램 64GB, 이상적 사양은 RTX PRO 6000 블랙웰에 VRAM 48GB. 맨 오른쪽 칸은 개인이 살 물건의 가격대가 아니죠. 제 사양을 그 표 옆에 나란히 적어 봤습니다. CPU는 i7-14700K 20코어, 램 32GB, 저장 공간은 넉넉했고요. 그러니까 세 항목은 기준을 넘고 GPU 하나만 절반 이었습니다. 하필 그 하나가 가장 중요한 부품이라는 게 문제였죠. 그래도 한번 깔아 보기로 했습니다. 설치본을 풀어 놓고 용량을 재 보니 18.1GB, 버전은 6.0.1이더군요. 압축 푸는 데만 한참 걸렸습니다. 첫 실행이 길었습니다. 셰이더를 전부 컴파일하는 동안 창이 흰 화면으로 굳어 있어서 몇 번이나 강제 종료를 누를 뻔했고요. 여기서 끄면 캐시가 깨져 다음에 더 오래 걸린다는 걸 나중에 알았습니다. 두 번째 실행부터는 금방 떴습니다. 정직하게 덧붙일 것이 있습니다. 돌아간다는 것과 제대로 쓴다는 것은 다릅니다. 지금 확인한 건 화면이 뜨고 로봇이 움직인다는 사실까지예요. 강화학습으로 환경을 수천 개씩 동시에 굴리는 단계에서 8GB가 어디서 멈추는지는 아직 재 보지 않았습니다. 최소 사양이라는 표는 아마 그 지점을 염두에 두고 그어진 선일 겁니다. 언젠가 그 벽에 부...

로봇, 사기 전에 화면 속에서 먼저 써봤습니다 (6편) — 로봇 팔은 왜 무거운가: 감속기·소재 해부

지난 5편에서 SO-101과 Franka를 비교하다, 한 줄이 계속 마음에 걸렸습니다. Franka의 무게 18kg. 사람 팔은 약 3.5kg인데, 성능 좋은 로봇 팔은 왜 그 5배가 넘을까요? 이건 단순한 호기심이 아닙니다. 앞으로 다룰 휴머노이드 는 이 무게 문제가 훨씬 치명적입니다. 팔 하나가 아니라 온몸을, 그것도 다리로 들고 걸어야 하니까요. 그래서 저는 무게 줄이기가 휴머노이드 업체들의 진짜 승부처 라고 봅니다. 복잡한 휴머노이드에서 이걸 파헤치긴 어렵습니다. 그러니 지금, 팔이라는 가장 단순한 대상 에서 원재료·부품 원리까지 끝까지 파보겠습니다. 이 글은 좀 깁니다. 하지만 여기서 제대로 해두면, 나중에 휴머노이드를 볼 때 눈이 달라집니다. 1. 먼저 숫자로: 우리 두 로봇을 해부하다 말로 하기 전에, 우리가 실제로 다룬 두 로봇의 시뮬레이션 모델(MJCF)에 박힌 질량 데이터 를 그대로 뽑아봤습니다. (추측이 아니라 실측입니다.) 실측 · 우리 프로젝트 시뮬 모델(MJCF) 기준 무게는 어디에 쏠려 있나 — 링크별 무게 지도 두 로봇의 각 링크(마디) 무게를 같은 축척으로 나란히. Franka는 어깨(link1) 하나가 5kg , SO-101 팔 전체(0.63kg)의 8배다. 무게가 밑동에 쏠릴수록 그 관절이 팔 전체를 드느라 큰 감속기·모터를 쓴다는 뜻. SO-101 · 총 0.63 kg base 147g shoulder 100g upper_arm 103g lower_arm 104g wrist 79g gripper 87g jaw 12g Franka Panda · 총 17.5 kg link0 630g link1 4,971g link2 647g link3 3,229g link4 3,588g link5 1,226g link6 1,667g link7 736g hand 730g 막대 길이는 F...

Franka로 성공, 무엇이 달랐나 (5편)

같은 코드였습니다. 명령도 같았습니다. "큐브를 집어서 초록 목표로 옮겨." 그런데 이번에는 보조 장치를 하나도 붙이지 않았는데 큐브가 3mm 오차로 목표에 내려앉았습니다. 3편에서 상자를 파고들던 그 집게와, 문장 하나 다르지 않은 명령을 받은 결과입니다. 달라진 것은 코드가 아니라 제품이었습니다. 같은 명령, 정반대 결과 3편의 SO-101은 이랬습니다. 그리퍼가 큐브를 파고들거나, 물었다 싶으면 미끄러졌습니다. 보조 장치를 붙여 옮기는 데까지는 갔지만 근본 한계는 그대로였죠. Franka Panda는 보조 하나 없이 실제 마찰로 큐브를 물었습니다. 접근하고, 내려가고, 손가락을 닫고, 20cm를 들어 올려, 목표 위에서 다시 내려놓고 손을 폈습니다. 배치 오차는 3mm. 몇 번을 반복해도 같은 결과였습니다. 코드 구조가 거의 동일했다는 점이 중요합니다. 제어 방식이 바뀐 것이 아니라 손끝이 바뀐 것이죠. 3편에서 며칠을 쓴 문제가 로봇을 갈아 끼우자 한 번에 사라졌습니다. 기분이 좋기보다는 조금 허탈했습니다. 같은 로봇팔이라는 이름 아래에서 왜 이렇게 다를까요. 답을 찾으려고 두 제품의 공개 사양을 나란히 늘어놓아 봤습니다. 사양을 나란히 재 보니 100배가 나왔습니다 같은 "로봇팔"이라는 이름 아래, 다른 세계의 장비 SO-101과 Franka Panda의 공개 사양을 나란히 놓아 봤습니다 SO-101 · 학습 입문용 ≈ 20만 원대 (부품 기준 조립형) ≈ 100배 가격 차이 Franka Panda · 연구 산업용 ≈ 수천만 원 (연구용 완제품) 6축 서보 6개 자유도 7축 여유 자유도 비규격 · 취미 교육급 반복 정밀도 ± 0.1 mm 수백 g급 소형 가반하중 3 kg 데스크탑급 약 0.4 m 작업 반경 855 mm 소형 비대칭 · 한쪽만 개폐 그리퍼 평행 2지 · 개폐 약 80mm · 약 70N 없음 힘 센싱 7축 토크 센서 약 1 kg 본체 무게 약 18 kg ✕ 그리퍼가 물체를 파고듦 시...

로봇, 사기 전에 화면 속에서 먼저 써봤습니다 (4편) — 다음 로봇 고르기: 왜 Franka Panda인가

모델 폴더를 열었더니 로봇이 70종 넘게 들어 있었습니다. 고를 것이 많다는 소식이 반갑지 않았습니다. 3편에서 확인한 것은 "SO-101로는 상자를 못 집는다"였지, "그럼 무엇으로 바꾸느냐"가 아니었으니까요. 이번 편은 답을 고르는 과정 자체를 남깁니다. 이 시리즈의 진짜 목적인 안목이 그대로 나오는 대목이라서입니다. 후보는 이미 다 있었습니다 MuJoCo에는 Menagerie라는 공식 로봇 모델 모음이 있습니다. 로봇팔, 사족보행, 휴머노이드, 손까지 70종이 넘게 무료로 공개돼 있습니다. 이름만 훑어도 규모가 짐작됩니다. 로봇팔 — Franka Panda, UR5e·UR10e, KUKA iiwa, Kinova, xArm, Trossen ViperX·WidowX 사족보행 — Unitree Go1·Go2, ANYmal, Boston Dynamics Spot 휴머노이드 — Unitree G1·H1, Apptronik Apollo, PAL Talos. 현장에 배치되고 있는 기종들 이 그대로 들어 있습니다. 손과 그리퍼 — Shadow Hand, Allegro, Robotiq 2F-85 여러 로봇을 하나씩 갈아 끼워 볼 수 있는 환경이 이미 갖춰져 있다는 뜻입니다. 제 장기 목표가 여러 기종을 이해하는 것이니 조건은 나쁘지 않았죠. 문제는 그다음이었습니다. 목록을 훑으면서 알았는데, 후보가 많다는 것은 고르기 쉽다는 뜻이 아니었습니다. 기준 없이 목록을 보면 결국 이름값으로 고르게 됩니다. 이름값으로 고르는 것은 3D 프린터를 살 때 제가 이미 해 본 방식이고, 그 결과가 창고 선반에 있습니다. 첫 갈림길은 성능이 아니라 그리퍼였습니다 그래서 로봇팔 모델부터 두 부류로 갈라 봤습니다. 기준은 단순합니다. 그리퍼가 붙어 있느냐, 아니냐. 한쪽은 팔과 그리퍼가 통합된 모델입니다. Franka나 Trossen처럼 받자마자 바로 집기를 시켜 볼 수 있습니다. 다른 쪽은 팔만 있는 모델입니다. UR...

로봇, 사기 전에 화면 속에서 먼저 써봤습니다 (3편) — "아무거나 잘 집을 줄 알았다"

상자는 목표 지점으로 옮겨졌습니다. 성공인 줄 알았습니다. 그런데 화면을 확대해 보니, 집게가 상자를 뚫고 들어가 있더군요. 물건을 든 채로 이동하긴 하는데 집게가 상자 속에 박혀 있는 기이한 그림이었습니다. 이번 편은 그 실패담이고, 이 시리즈를 시작한 이유를 가장 정확히 설명해 준 편이기도 합니다. 집을 물건도 없었고, 놓고 나니 잡히지도 않았습니다 처음에는 화면에 팔만 덩그러니 있었습니다. 집을 대상이 없으니 픽앤플레이스가 될 리가 없죠. 당연한 사실인데도 팔을 띄우고 나서야 알았습니다. MuJoCo는 물리 엔진이라 씬에 물체를 추가하면 됩니다. 다만 물체를 놓는다는 게 그림 하나를 얹는 일이 아니더군요. 크기와 질량, 마찰 계수를 직접 정해 줘야 합니다. 값을 적으면서 처음으로 "내가 집으려는 게 정확히 뭔가"를 스스로에게 물었습니다. 그전까지 제 머릿속의 대상은 그냥 물건이었습니다. 중력과 마찰이 적용되는 상자를 하나 놓았습니다. 밀면 굴러가고, 그리퍼로 누르면 반응하는 진짜 물리 객체죠. 여기까지는 좋았습니다. 그다음 상자를 집으라고 시켰습니다. 그런데 잘 안 잡힙니다. 그리퍼가 헛돌거나, 상자를 밀어 버리거나, 들어도 미끄러집니다. 열 번 시켜서 열 번 다른 방식으로 실패했습니다. 여기서 첫 번째 깨달음이 왔습니다. 로봇 그리퍼로 물건을 잡는다는 것은 생각보다 정밀한 일이더군요. 실제 로봇도 마찬가지라서, 산업 현장에서는 마찰 패드를 붙이거나 진공 흡착으로 바꾸거나 접근 각도를 정교하게 잡아 이 문제를 해결합니다. 카드 한 장을 집는 손끝 이 왜 그렇게 어려운 기술인지, 화면 안에서 처음으로 체감했죠. 좌표가 틀린 줄 알았는데, 손가락이 너무 길었습니다 집는 것을 도와주는 보조 장치를 넣어 어찌어찌 옮기는 데는 성공했습니다. 그리고 확대해 보니 앞에서 말한 그 장면이 나왔죠. 처음에는 좌표 계산이 틀렸나 싶었습니다. 목표 자세를 넣는 코드부터 다시 봤고, 숫자를 조금씩 바꿔 가며 열댓 번을 돌렸습니다. 그래...

로봇, 사기 전에 화면 속에서 먼저 써봤습니다 (2편) — MuJoCo 설치와 SO-101 첫 구동

터미널에 명령 몇 줄을 넣자 창이 하나 떴습니다. 회색 바닥 위에 로봇팔 하나. 마우스로 팔을 끌어 봤는데 꿈쩍도 하지 않더군요. 돌아간 것은 팔이 아니라 카메라 시점이었습니다. 이번 편에서 가장 크게 배운 것은 설치 방법이 아니라 그 사실이었습니다. 왜 MuJoCo였고, 왜 SO-101이었나 선택지는 여러 개였습니다. 엔비디아 아이작 심, 게이제보, 그 외에도 여럿이죠. 그중 MuJoCo로 시작한 이유는 세 가지입니다. 첫째, 무료이고 노트북에서 돕니다. 로봇 회사들이 가상 환경에서 먼저 넘어뜨려 보는 장면을 보면 대단한 장비가 필요할 것 같지만, 팔 한 대를 띄우고 관절을 돌려 보는 데는 비싼 GPU가 필요하지 않았습니다. 1편에서 정한 원칙이 첫 줄부터 지켜진 셈이죠. 둘째, 물리 엔진이 진짜입니다. 중력과 질량, 마찰, 접촉력을 실제로 계산합니다. 이 말을 그냥 믿기는 싫어서 직접 확인해 봤는데, 그 이야기는 바로 아래에 적습니다. 셋째, 모델이 풍부합니다. 로봇팔부터 사족보행, 휴머노이드까지 대표 기종이 무료로 공개돼 있어 나중에 갈아 끼워 볼 수 있습니다. 여러 로봇을 비교하는 것이 이 시리즈의 목적이니 이 조건이 컸습니다. 그런데 시뮬레이터를 고른 것과 로봇을 고른 것은 다른 문제입니다. 시뮬레이션만 하고 끝낼 생각이라면 어떤 모델을 띄우든 상관없죠. 제 목적은 사기 전 예습이니, 화면 속 그 팔을 실제로 살 수 있어야 합니다. 그래서 첫 로봇은 SO-101(SO-ARM101)로 정했습니다. 판매 중인 LeRobot 계열 오픈소스 6축 로봇팔이고, 공식 시뮬레이션 모델이 무료로 공개돼 있으며, 입문용으로 부담스럽지 않은 가격대입니다. 사려던 그 팔을 화면에서 그대로 다뤄 본다는 것이 이 시리즈의 전제입니다. 엔진이 진짜인지, 물체를 떨어뜨려 확인했습니다 "물리가 진짜"라는 문장은 광고에도 쓰입니다. 그래서 두 가지를 직접 재 봤습니다. 하나는 자유낙하입니다. 물체를 공중에 놓고 떨어뜨린 다음, 바닥에 닿기...