Part I: 먼저 확실하게 움직인다 — 고전적 플래닝과 제어

Chapter 2: 고정된 작업의 기본값 — IK, Motion Planning, Trajectory Generation

집필일: 2026-07-15 최종수정일: 2026-07-15

개요

테이블 위 조립 셀에서 목표 물체와 치구의 위치를 알고 있고 장애물도 모델링할 수 있다면, 첫 질문은 “어떤 정책을 학습할까?”가 아닙니다. 먼저 목표 자세를 만들 수 있는가, 그 자세까지 충돌 없이 갈 수 있는가, 그 경로에 실행 가능한 시간을 붙일 수 있는가, 그리고 아래 제어기가 그 궤적을 추종할 수 있는가를 각각 증명해야 합니다. 이 네 질문은 비슷해 보이지만 서로 다른 산출물과 실패 원인을 갖습니다.

이 장은 순기구학(forward kinematics, FK)과 역기구학(inverse kinematics, IK), 충돌 인식 경로 계획, Cartesian 경로, 시간 매개화(time parameterization), 궤적 최적화(trajectory optimization), 작업 및 모션 계획(task and motion planning, TAMP)을 하나의 실행 계약으로 연결합니다. 목표는 알고리즘 이름을 많이 기억하는 것이 아니라, 구조화된 작업에서 가장 작은 충분한 도구를 선택하고 다음 단계로 넘어가기 전에 무엇을 검증할지 결정하는 것입니다.

관통 실험 질문은 다음과 같습니다. 6/7-DoF 팔과 평행 그리퍼가 알려진 부품을 집어 치구 앞으로 운반하고, 삽입 직전 자세까지 반복해서 도달해야 할 때 어느 계산을 IK에 맡기고, 어느 계산을 planner와 trajectory generator에 맡기며, 언제 학습을 추가해야 할까요? 접촉이 시작되는 마지막 구간은 Chapter 3의 제어 문제로 남겨 둡니다.

이 장을 읽고 나면... - pose, configuration, geometric path, timed trajectory, controller reference를 구분할 수 있습니다. - redundancy와 singularity를 “IK 성공/실패” 한 비트가 아니라 여유도와 조건의 문제로 진단할 수 있습니다. - sampling-based planning, Cartesian path, trajectory optimization, TAMP를 작업 구조에 맞춰 선택할 수 있습니다. - 경로 검증과 시간·추종 검증을 별도 gate와 별도 로그로 운영할 수 있습니다. - 고전적 baseline의 유지비가 실제로 측정된 뒤에만 학습 정책을 추가하는 기준을 세울 수 있습니다.

2.1 한 번의 motion request에는 다섯 개의 계약이 있다

Chapter 1의 실행 계층에서 motion generation은 skill의 의도를 저수준 제어기의 reference로 바꾸는 층입니다. “tool을 목표 pose로 옮겨라”라는 요청이 들어오면 하나의 planner가 모든 문제를 해결한다고 생각하기 쉽지만, 실제로는 다음 다섯 계약이 직렬로 연결됩니다.

  1. Kinematic contract: 현재 joint state와 모델에서 목표 pose를 만족하는 configuration 후보를 만든다.
  2. Geometric contract: 시작과 목표 사이의 모든 configuration과 edge가 joint limit와 collision constraint를 만족한다.
  3. Path-quality contract: clearance, 길이, Cartesian deviation, joint excursion 같은 목적에 맞는 경로를 고른다.
  4. Timing contract: 고정된 경로에 velocity, acceleration, 필요하면 jerk 한계를 만족하는 timestamp를 붙인다.
  5. Execution contract: controller가 허용하는 interface와 tolerance로 전송하고, deadline miss·tracking error·protective stop을 감시한다.
그림 2.1. Pose request부터 controller reference까지 IK·경로·독립 replay·timing·execution을 분리하고, 각 단계의 artifact와 reject reason을 대응시킨 승인 파이프라인. — 저자 제작(Codex 보조)

이 분해의 장점은 실패를 국소화할 수 있다는 것입니다. “planning failed”라는 한 줄 로그 대신 IK_NO_SOLUTION, START_STATE_IN_COLLISION, PATH_EDGE_INVALID, TIME_PARAMETERIZATION_FAILED, CONTROLLER_REJECTED, TRACKING_TOLERANCE_EXCEEDED처럼 책임자를 가를 수 있습니다. 각 단계는 입력 snapshot, versioned parameter, 출력, 검사 결과를 남겨야 합니다.

단계 주 소유자 입력과 출력 완료 gate 실패 행동
IK 후보 생성 kinematics plugin 또는 motion process 목표 pose + seed → joint configuration 집합 FK 오차·joint limit·branch 기록 다른 seed/branch를 시도하되 횟수 제한
경로 계획 planning process start/goal + planning scene → geometric path 모든 sampled state와 edge 재검사 scene 갱신 후 재계획 또는 안전 정지
경로 후처리 planner/optimizer valid path → smooth/clear path clearance·path length·constraint deviation 원 경로 보존, 후처리 결과 거부
시간 매개화 trajectory process q(s) + 동작 한계 → q(t) timestamp 단조성·속도·가속도 한계 더 느린 scaling 또는 다른 경로
실행 trajectory controller/vendor controller timestamped setpoints → measured state accept 응답·tracking bound·watchdog hold/stop; supervisor에 fault 전달

주기와 deadline은 알고리즘 이름으로 정해지지 않습니다. planning request는 비주기적일 수 있고, trajectory execution은 controller가 정한 주기로 interpolation될 수 있으며, motor servo는 vendor controller나 별도 real-time process가 소유할 수 있습니다. 이 장의 산출물은 따라서 “ROS 2가 몇 Hz인가”가 아니라 각 loop의 owner, nominal rate, 최대 허용 age, clock, deadline, timeout action을 적은 matrix입니다.

2.2 IK는 목표 configuration 후보를 만드는 단계다

2.2.1 FK와 IK를 같은 식으로 본다

joint vector를 q \in \mathbb{R}^n, tool pose를 x라고 하면 순기구학은 모델이 정한 함수로 씁니다.

$$

x = f(q)

$$

IK는 주어진 x^*에 대해 f(q)=x^* 또는 허용 오차 안의 q를 찾는 문제입니다. 6-DoF pose에는 position과 orientation 오차가 함께 있으므로, 구현에서는 단위와 가중치를 분리해야 합니다. 예를 들어 position error를 미터, orientation error를 라디안으로 그대로 더하면 가중치 선택이 암묵적인 설계 결정이 됩니다. 허용 오차와 frame을 task spec에 기록하십시오.

미분 관계는 Jacobian J(q)로 표현할 수 있습니다.

$$

\dot{x}=J(q)\dot{q}

$$

resolved-rate 방식의 계보는 Cartesian velocity에서 joint velocity를 구하는 이 관계를 중심으로 형성됐습니다 [1]. 그러나 이 식은 collision object, controller timing, force limit을 포함하지 않습니다. 우리는 이것을 servo 명령의 완성식이 아니라 kinematic proposal을 만드는 국소 모델로 사용합니다.

2.2.2 redundancy는 선택권이고 singularity는 조건 악화다

n이 task dimension보다 크면 같은 tool pose를 만족하는 joint configuration이 여러 개일 수 있습니다. 7-DoF 팔에서 elbow-up과 elbow-down을 단순한 이름으로만 고르지 말고, seed와 null-space objective를 명시하십시오. 한 가지 실용적인 형태는 다음과 같습니다.

$$

\dot q = J^{\#}\dot x + (I-J^{\#}J)z

$$

첫 항은 task motion을 만들고, 두 번째 항은 task를 가능한 한 보존하면서 joint-center, clearance, posture 같은 보조 목적 z를 반영합니다. manipulability 같은 지표는 configuration의 국소적 여유를 비교하는 진단 도구로 사용할 수 있습니다 [2]. 다만 하나의 scalar가 collision, torque margin, sensor visibility까지 대신한다고 해석해서는 안 됩니다.

singularity 근처에서는 작은 Cartesian motion이 큰 joint motion을 요구할 수 있습니다. damped least squares는 다음 최적화로 읽으면 직관적입니다.

$$

\Delta q = \arg\min_{u} \left\|J u-\Delta x\right\|_W^2 + \lambda^2\left\|u\right\|^2

$$

\lambda가 크면 joint step을 억제하는 대신 Cartesian 오차를 더 허용합니다. 이 계열의 목적은 “singularity를 없애는 것”이 아니라 조건이 나빠질 때 trade-off를 제어하는 것입니다 [3] [4]. 구현 검증에서는 최소 singular value, condition proxy, damping, 실제 joint step, pose error를 함께 로그로 남깁니다.

이 책의 검증 계약에서 국소 IK 결과는 오직 goal configuration 후보입니다. collision freedom, 동적 timing, controller trackability는 IK의 성공 코드로 승인하지 않고 뒤의 세 gate에서 따로 검사합니다. 이 문장은 특정 solver의 성능 우열이 아니라 단계별 승인 규칙입니다. 각 방법의 보편적 성공률을 주장하려면 별도의 일치된 실험이 필요합니다.

2.2.3 worked decision: 삽입 전 자세의 두 IK branch

가정해 봅시다. 부품을 집은 tool은 치구 위 120 mm의 pre-insertion pose에 도달해야 합니다. seed A는 현재 자세와 가깝지만 elbow가 카메라 시야를 가립니다. seed B는 joint travel이 더 길지만 시야와 치구 clearance가 큽니다. 여기서 “IK가 먼저 찾은 A”를 곧바로 채택하지 않습니다.

후보마다 FK position/orientation error, joint-limit margin, singularity proxy, self-collision, 환경 collision, 최소 clearance, joint displacement를 같은 record에 씁니다. A와 B 모두 pose를 만족하더라도 A의 카메라 occlusion이 perception update를 무효화한다면 task-level constraint로 거부할 수 있습니다. 반대로 B가 joint limit에 너무 가까워 시간 매개화 단계에서 느려진다면 A로 돌아갈 수도 있습니다. 즉 IK branch 선택은 solver 내부의 비가시적 운이 아니라 downstream cost를 반영한 명시적 결정이어야 합니다.

IK gate의 최소 산출물은 다음과 같습니다.

  • start_state_id, robot-model hash, tool frame, target-frame timestamp;
  • position/orientation tolerance와 각 단위;
  • solver/plugin, seed policy, timeout, 최대 후보 수;
  • 후보별 FK residual, joint margin, singularity proxy, collision status;
  • 선택된 후보와 거부된 후보의 reason code;
  • 동일 snapshot 재실행 시 결과를 비교할 regression fixture.
그림 2.2. 같은 pre-insertion pose를 만족하는 두 IK branch를 FK residual뿐 아니라 visibility·joint margin·collision·waypoint continuity로 비교하고, 선택 뒤에도 timing gate가 남음을 보인 audit. — 저자 제작(Codex 보조)

2.3 collision-aware planning은 configuration space에서 연결성을 묻는다

2.3.1 workspace의 직선은 joint space의 안전을 뜻하지 않는다

configuration space \mathcal{C}에서 로봇의 joint configuration 하나는 한 점입니다. collision이나 joint limit을 위반하는 집합을 \mathcal{C}_{obs}, 실행 가능한 집합을 \mathcal{C}_{free}라고 두면 geometric planning은 다음 경로를 찾는 문제로 적을 수 있습니다.

$$

q:[0,1]\rightarrow\mathcal{C}_{free},\qquad q(0)=q_{start},\quad q(1)=q_{goal}

$$

중요한 것은 waypoint만 검사하는 것으로 충분하지 않다는 점입니다. 두 state 사이 edge의 interpolation에서도 collision을 검사해야 합니다. 검사 해상도가 너무 거칠면 얇은 장애물을 건너뛸 수 있고, 너무 촘촘하면 planning 시간이 커집니다. continuous collision checking을 쓸지 discrete resolution을 쓸지, attached object와 swept volume을 어떻게 반영할지를 scene contract에 넣습니다.

PRM은 reusable roadmap 관점, RRT는 빠르게 새 영역을 탐색하는 tree 관점, RRT-Connect는 양쪽 tree를 연결하는 single-query 관점, RRT*는 최적성 계열의 질문을 제시해 온 대표적인 계보입니다 [5] [6] [7] [9]. OMPL은 여러 sampling-based planner를 공통 interface로 다루는 라이브러리입니다 [12]. 여기서 논문 계보는 “항상 가장 빠른 planner”를 고르기 위한 leaderboard가 아니라, scene reuse, query pattern, compute budget, cost objective가 다르면 어떤 family를 시험할지 정하는 지도입니다.

probabilistic completeness나 asymptotic optimality 같은 이론적 성질을 이 셀의 한 planning call이 deadline 안에 원하는 품질을 낸다는 보증으로 번역하지 않습니다. 이 장은 특정 finite-time 수치를 주장하지 않습니다. 실제 scene distribution에서 timeout, first-solution time, final cost, failure seed를 별도로 측정해야 합니다.

작업 구조 첫 후보 적합한 이유 반드시 별도 확인할 것
고정 셀, 반복 query가 많음 roadmap 또는 cached experience 계열 같은 free space의 연결 구조를 재사용할 여지가 있음 scene 변경 시 cache invalidation
start/goal이 자주 바뀌는 단일 query bidirectional tree 계열 빠른 feasibility 탐색에 초점을 둘 수 있음 seed variance와 좁은 통로 실패
경로 품질을 더 개선해야 함 optimizing sampler 또는 후처리 cost를 명시하고 compute budget만큼 개선 가능 deadline 시점의 incumbent 품질
표면을 따라야 하는 Cartesian 구간 constrained/Cartesian path task-space constraint를 직접 표현 jump, singularity, collision, orientation drift
단계와 물체 상태가 함께 바뀜 TAMP symbolic choice와 geometric feasibility를 연결 predicate/model explosion과 재계획 비용

2.3.2 Cartesian path는 별도 contract다

transport 구간에서는 joint-space path가 자연스럽지만, 카메라가 부품을 계속 바라봐야 하거나 tool orientation을 유지하며 접근해야 하면 Cartesian constraint가 중요합니다. 다만 tool pose를 직선으로 sampling한 뒤 각 waypoint에 IK를 푼 결과가 항상 연속적인 joint path가 되는 것은 아닙니다. branch flip, joint jump, singularity, collision, orientation wrap이 생길 수 있습니다.

따라서 Cartesian segment에는 frame, position/orientation constraint, max Cartesian step, joint jump threshold, minimum completion fraction, collision resolution, singularity threshold를 versioned config로 둡니다. “90%까지 계산됨” 같은 partial result를 자동 성공으로 승격하지 말고, 마지막 유효 pose가 task상 안전한 hold point인지 먼저 판단합니다. pre-insertion까지의 접근과 insertion 자체를 하나의 Cartesian request로 묶지 않는 이유도 여기에 있습니다. 후자는 force/contact state가 들어가는 Chapter 3의 계약입니다.

2.3.3 planning failure의 진단 순서

planner 이름을 바꾸기 전에 다음 순서를 지키면 원인을 훨씬 빨리 좁힐 수 있습니다.

  1. 입력 freshness: joint state, TF, planning scene, attached object timestamp와 clock domain을 확인합니다.
  2. start validity: 시작 state가 limit 또는 collision 안에 있지 않은지, padding이 이중 적용되지 않았는지 봅니다.
  3. goal validity: IK 후보가 동일한 robot model과 tool transform에서 재현되는지 확인합니다.
  4. constraint consistency: orientation/path constraint가 서로 모순되거나 지나치게 좁지 않은지 검사합니다.
  5. edge checking: interpolation resolution과 continuous checking 설정을 확인합니다.
  6. scene geometry: mesh scale, convex decomposition, attached payload, 치구의 실제 위치 오차를 확인합니다.
  7. planner sensitivity: 그 다음에야 seed, range, timeout, planner family를 바꾸고 분포로 비교합니다.

이 순서의 핵심은 모델 오류를 stochastic planner 탓으로 돌리지 않는 것입니다. 실패한 request의 scene snapshot과 random seed를 보존하면 regression test가 됩니다. “두 번째 실행에서는 됐다”는 관찰만으로 첫 실패를 폐기하지 마십시오.

2.4 path에 시간을 붙여야 trajectory가 된다

2.4.1 geometric path와 timed trajectory를 분리한다

geometric path를 q(s), s\in[0,1]로 두면 time scaling s(t)를 통해 trajectory를 얻습니다.

$$

q(t)=q(s(t)),\qquad \dot q=q'(s)\dot s

$$

$$

\ddot q=q''(s)\dot s^2+q'(s)\ddot s

$$

같은 geometric path라도 s(t)에 따라 속도와 가속도가 달라집니다. 따라서 collision-free라는 사실만으로 velocity·acceleration limit을 만족한다고 말할 수 없습니다. payload와 controller mode에 따른 더 보수적인 운용 한계, start/end velocity, blending 정책도 timing input입니다. 지정된 경로를 따라 시간 최적화하는 고전적 문제와 reachability 기반 parameterization은 이 분리 위에 놓입니다 [21] [16]. 우리는 논문의 성능 수치를 옮기지 않고, path와 timing을 별도 artifact로 관리한다는 설계 원칙만 사용합니다.

검사한 MoveIt 2 공식 trajectory-processing 문서는 geometric planner의 path와 별도의 velocity/acceleration-aware time-parameterization 단계를 구분합니다 [20]. 이 구현 경계는 현재 문서화된 processing 선택에 관한 근거이며, historical method의 모든 식이나 특정 로봇에서의 추종 성능을 보증하지 않습니다. 그러므로 path_valid.jsontimed_trajectory_validation.json을 분리해 보존합니다.

그림 2.3. 같은 geometric path에 aggressive·slower·jerk-limited time scaling을 적용하고 velocity·acceleration·jerk·controller acceptance를 각각 판정하는 진단 구조. 곡선은 설명용이며 측정값이 아니다. — 저자 제작(Codex 보조)

2.4.2 jerk와 controller acceptance는 마지막에 사라지지 않는다

velocity와 acceleration limit을 만족해도 acceleration의 급격한 변화, 즉 jerk가 문제가 될 수 있습니다. jerk-constrained online trajectory generation은 이 문제를 명시적으로 다루는 한 계열입니다 [18]. 그러나 어떤 smoother를 선택하든 후처리 뒤 collision과 path constraint를 다시 검사해야 합니다. smoothing이 waypoint 사이를 바꾸거나 Cartesian line에서 벗어나게 할 수 있기 때문입니다.

또한 timestamp가 유효하다는 사실과 vendor controller가 trajectory를 accept한다는 사실은 다릅니다. controller는 첫 point 시간, start-state tolerance, goal tolerance, joint ordering, interpolation mode, buffer 길이, preemption 규칙을 요구할 수 있습니다. 실행 전 dry-run validator가 다음을 검사하도록 만듭니다.

  • timestamp가 엄격히 증가하고 duplicate가 없는가;
  • position, velocity, acceleration, 가능하면 jerk가 운용 한계 안인가;
  • 첫 point가 measured start state 및 허용 tolerance와 맞는가;
  • 모든 joint 이름과 단위, wrap convention이 controller contract와 같은가;
  • network/queue delay 뒤에도 trajectory가 stale하지 않은가;
  • cancel, preempt, timeout에서 hold 또는 stop이 결정적으로 작동하는가.

trajectory generator의 output은 controller input이지 motor torque 그 자체가 아닙니다. controller rate와 interpolation, motor servo owner는 Chapter 1의 owner/rate/deadline matrix에 다시 연결합니다.

2.5 optimization과 TAMP는 고전적 스택의 범위를 넓힌다

2.5.1 trajectory optimization을 cost 설계로 읽는다

sampling-based planner가 feasible seed를 찾은 뒤 clearance나 smoothness를 개선하고 싶을 수 있습니다. discretized trajectory Q=(q_0,\ldots,q_N)에 대해 다음과 같은 목적을 구성할 수 있습니다.

$$

\min_Q\; w_s C_{smooth}(Q)+w_c C_{collision}(Q)+w_t C_{task}(Q)

$$

subject to start/goal, joint, path constraints를 둡니다. CHOMP, STOMP, TrajOpt는 서로 다른 최적화 관점과 collision 처리로 이 영역의 대표 계보를 이룹니다 [8] [10] [13]. 여기서 중요한 구현 질문은 “어느 이름이 최고인가”가 아니라 seed, cost scale, constraint tolerance, termination, post-validation을 누가 소유하는가입니다.

현재 claim packet은 initialization, model fidelity, local minimum에 관한 보편적 비교를 원문 위치까지 승인하지 않았습니다. 따라서 이 장은 그 성능 주장을 단정하지 않고, optimizer output을 독립 검사가 필요한 후보로 취급합니다. 여러 seed와 작은 scene perturbation으로 결과 분산을 기록하고, collision·constraint·timing을 최적화기 밖에서 다시 검증하십시오.

목적함수의 각 항은 단위가 다를 수 있습니다. smoothness와 clearance의 weight를 숫자 하나로 조절하면서 그 의미를 기록하지 않으면, 재현 가능한 planner가 아니라 수동 tuning ritual이 됩니다. weight sweep에서는 feasibility rate, minimum clearance, path length, integrated joint motion, planning time을 함께 보고, 한 metric의 개선이 다른 safety margin을 침식하지 않는지 확인합니다.

2.5.2 TAMP는 “무엇을 할지”와 “어떻게 움직일지”를 연결한다

assembly에는 연속 경로만 있는 것이 아닙니다. 어느 물체를 먼저 집을지, 어느 grasp를 쓸지, 임시로 내려놓을지, 문을 열고 접근할지 같은 discrete decision이 geometry를 바꿉니다. TAMP는 symbolic 또는 factored task choice와 continuous motion feasibility를 연결하려는 방법군입니다 [11] [15] [17].

한 번의 거대한 문제로 모두 풀 필요는 없습니다. 초심자 runbook에서는 FSM이나 behavior tree가 pick, transport, pre_insert 같은 phase를 선택하고, 각 phase가 명시된 precondition/effect와 motion request를 갖게 할 수 있습니다. 실패하면 NO_GRASP_IK, NO_TRANSPORT_PATH, PRE_INSERT_CONSTRAINT_FAILED로 올라가 task-level alternative를 선택합니다. 이것만으로도 “planner가 실패했으니 같은 call을 반복”하는 상태를 벗어날 수 있습니다.

contact가 포함된 planning formulation과 mode sequence를 다루는 연구도 존재합니다 [14]. 다만 quasi-static assumption, contact mode, friction/model fidelity, optimization 조건은 source와 formulation마다 다릅니다.

그러므로 contact가 있다는 사실 하나만으로 end-to-end RL이 필수라고 결론내리지 않습니다. 먼저 contact mode와 task structure를 모델링할 수 있는지 시험하되, 이 문장을 모든 접촉 문제에 대한 classical superiority 주장으로 확대하지 않습니다. 모델 오차와 불확실성을 견디며 force를 안정화하는 실제 실행은 Chapter 3의 impedance·admittance·force-control gate를 통과해야 합니다.

문제 classical formulation으로 먼저 시도 학습을 고려하는 측정 신호 남아야 할 검증 층
알려진 fixture의 반복 pick/place IK + collision-aware path + timed execution object/scene variation별 rule 수와 유지 시간이 증가 collision, limits, controller watchdog
constrained approach Cartesian constraint + replanning perception error 때문에 valid corridor 추정이 반복 실패 workspace gate, speed scaling, contact transition
단계 선택이 필요한 assembly FSM/TAMP + geometric feasibility predicate와 exception branch가 운영 가능 범위를 초과 phase authority, precondition, fallback
접촉 조작 contact plan + Chapter 3 controller material/shape variation에서 model residual이 임계 초과 force limit, stability/passivity test

2.6 tabletop assembly를 classical baseline으로 끝까지 통과시키기

이제 관통 과제의 한 episode를 설계합니다. robot은 scene camera로 부품 pose를 받고, 평행 그리퍼로 집고, 치구 전방까지 운반한 뒤, 접촉이 시작되기 전 pre-insertion pose에서 멈춥니다. 이 baseline의 목적은 최고 성공률을 선언하는 것이 아니라 이후 BC, ACT, diffusion, RL이 무엇을 개선했는지 비교할 auditable reference를 만드는 것입니다.

Phase A — snapshot과 goal contract

perception 결과를 즉시 쓰지 말고 scene_snapshot_id를 만듭니다. 여기에는 object pose와 covariance 또는 품질 지표, TF timestamp, robot state timestamp, calibration version, collision geometry version이 들어갑니다. snapshot의 age가 제한을 넘으면 planning을 시작하지 않습니다. grasp와 pre-insertion pose는 object/fixture frame에 정의하고 world frame으로 변환한 시각을 기록합니다.

Phase B — 후보와 경로

grasp 전 approach, grasp, retreat, transport, pre-insertion을 분리합니다. 각 phase의 start/goal과 constraint를 기록하고 IK 후보를 여러 개 만든 뒤 downstream score로 선택합니다. transport에는 attached object geometry를 반드시 scene에 반영합니다. planning 성공 뒤에는 planner와 독립된 collision validator로 path state와 edge를 재검사합니다.

Phase C — timing과 shadow execution

geometric path hash를 고정한 뒤 time parameterization을 수행합니다. simulation 또는 controller mock에서 timestamp, joint limit, start tolerance, cancel/timeout을 검증합니다. 실제 robot에는 처음부터 full speed를 보내지 않습니다. 낮은 speed/acceleration scaling, clear workspace, operator ready, E-stop 확인, single episode 한도로 bounded trial을 진행합니다.

Phase D — pre-contact handoff

pre-insertion pose에 도달하면 trajectory controller의 completion만 믿지 않고 measured pose error, joint tracking error, fixture-relative transform age를 확인합니다. 그 다음 phase가 contact controller의 authority를 인수할 수 있는 CONTACT_READY 상태를 발행합니다. 이 상태 전이에는 controller mode switch 성공, force sensor bias 확인, 낮은 접근 속도, force limit과 retreat path가 포함되어야 합니다. 자세한 contact law는 Chapter 3에서 다룹니다.

Worked decision — planner를 바꿀까, 학습을 추가할까

100개의 대표 scene snapshot으로 regression suite를 만들었다고 합시다. 숫자를 임의 threshold로 일반화하지 않고 팀이 사전에 gate를 정합니다. 실패를 분류했더니 대부분이 stale TF와 attached-object 누락이라면 학습 문제가 아닙니다. scene pipeline을 고쳐야 합니다. narrow passage에서 seed에 따라 path가 불안정하다면 planner family, timeout, constraint 표현, fixture layout을 먼저 비교합니다.

반면 object geometry와 clutter가 자주 변해 매주 collision primitive와 rule을 수정해야 하고, 동일한 perception 품질에서도 grasp/approach 선택 branch가 계속 늘어난다면 model-maintenance cost가 학습 도입 신호가 될 수 있습니다. 그때도 학습 policy가 곧 motor loop를 소유하지 않습니다. policy는 grasp candidate나 short-horizon motion proposal을 내고, 이 장의 IK·collision·timing gate가 승인합니다. 실제 시범 데이터 계약은 Chapter 4에서 시작합니다.

2.7 Servo, 실패 체크리스트, 그리고 증거의 경계

MoveIt Servo 같은 interface는 joint jog, Cartesian twist, pose command를 빠르게 처리하는 유용한 선택지입니다. 그러나 planning trajectory와 동일한 것으로 취급하면 안 됩니다. streaming command는 command age, input rate, singularity proximity, collision proximity, smoothing, stop behavior를 지속적으로 감시해야 합니다.

검사한 MoveIt Servo 공식 tutorial에 따르면 collision 및 singularity 검사는 command를 scale하거나 halt하는 보호 동작에 쓰일 수 있지만, 문서는 이를 인증된 safety function으로 제시하지 않습니다 [19]. filtering과 controller behavior도 plugin 및 platform에 의존합니다. 따라서 Servo의 검사 기능은 독립 safety supervisor, robot protective function, workspace/force limit, E-stop을 대체하지 않습니다.

실패 증상과 진단 순서

증상 먼저 볼 artifact 흔히 섞이는 원인 승인 전 확인
목표 pose에 IK가 간헐적으로 실패 seed·target frame·solver log stale transform, branch, tolerance, singularity 동일 snapshot/seed 재현
path가 obstacle을 스침 scene hash·edge-check log mesh scale, padding, attached object, resolution 독립 collision replay
경로는 valid인데 controller가 거부 timed trajectory·controller response 첫 point, timestamp, joint order, start tolerance mock + vendor-specific validator
실행 중 흔들림 또는 큰 tracking error measured/command trace aggressive timing, interpolation, payload, controller mode reduced-speed bounded trial
Cartesian servo가 갑자기 멈춤 singularity/collision scale·command age condition 악화, stale input, threshold crossing retreat/hold state 확인
재계획이 무한 반복 reason-code sequence·FSM state 동일 invalid scene, recovery 없는 retry retry budget과 safe terminal state

evidence tier를 실행 결정에 연결하기

peer-reviewed primary papers는 방법의 문제 정의와 계보를 이해하는 데 사용했습니다. 그러나 이 장의 packet에서 여러 historical source는 canonical identity와 method scope까지만 정리됐고, 정확한 equation/result locator가 모두 승인된 상태는 아닙니다. 그래서 benchmark 수치와 보편적 우열을 싣지 않았습니다. 공식 MoveIt 문서는 cutoff 시점의 interface 경계와 caveat를 확인하는 데 사용했지만, 특정 vendor controller의 acceptance나 셀 안전을 대신 증명하지 않습니다.

company demo나 analyst/news claim은 이 장의 load-bearing evidence로 사용하지 않았습니다. 실제 cell 결정은 자기 robot model, scene suite, controller, payload, rate에서 얻은 validation log가 최종 근거입니다. 현재 공개 근거에는 이 장의 전체 classical chain과 모든 learned baseline을 동일한 S12 tabletop task에서 맞춰 비교한 연구가 없습니다. Chapter 9의 실험은 그래서 “문헌 leaderboard 재현”이 아니라 동일한 task contract 아래의 내부 matched comparison으로 설계합니다.

구현을 맡길 때 쓸 bounded Codex prompt

Goal tabletop assembly의 transport_to_preinsert phase에 대해 IK 후보 생성, collision-aware path, time parameterization, controller dry-run을 분리 구현한다. Context 6/7-DoF arm, parallel gripper, versioned URDF/SRDF, fixed fixture, scene snapshot API, trajectory controller mock이 있다. 입력은 start state, attached-object geometry, pre-insertion pose다. Constraints 기존 controller와 safety configuration은 변경하지 않는다. 각 단계에 timeout과 reason code를 둔다. random seed와 scene hash를 저장한다. geometric path와 timed trajectory를 별도 artifact로 쓴다. Servo 또는 trajectory output은 독립 safety supervisor를 우회하지 않는다. Done when representative snapshot suite에서 deterministic replay가 가능하고, 모든 accepted path가 독립 collision check를 통과하며, timed trajectory가 joint/time limit validator와 controller mock acceptance를 통과한다. 실패 case는 원인별 fixture로 보존된다. Safety simulation과 mock까지만 자동 실행한다. hardware command는 생성하지 않는다. 실제 시험 절차는 reduced scaling, clear workspace, operator/E-stop check, one-episode authorization, tracking/timeout stop condition을 별도 문서로 출력한다.

제조 셀 적용 체크포인트

이 장을 마치면 다음 artifact가 repository와 실험 기록에 있어야 합니다.

  • Task schema: phase별 frame, precondition, goal tolerance, attached object, completion/failure state;
  • Kinematics: solver/plugin version, seed policy, candidate count, FK residual, joint margin, singularity proxy;
  • Scene/planning: snapshot hash, geometry/calibration version, planner config, seed, timeout, state/edge validation log;
  • Trajectory: path hash, timing algorithm/config, timestamp monotonicity, velocity/acceleration/jerk checks;
  • Execution: controller owner/rate/deadline, accept/reject response, command/measured trace, tracking tolerance;
  • Safety: supervisor owner, collision/workspace/force gate, watchdog, retry budget, hold/stop/retreat behavior;
  • Metrics: feasibility rate, first-solution latency distribution, minimum clearance, path cost, timing margin, controller rejection, tracking error, intervention;
  • Regression: representative valid, no-IK, in-collision, narrow-passage, stale-scene, timing-fail, controller-reject fixtures.

한 번의 성공 영상보다 이 artifact 집합이 중요합니다. 성공 episode와 실패 episode가 같은 schema로 replay되고, 어느 gate가 motion authority를 거부했는지 설명할 수 있어야 classical baseline이 완성됩니다.

그림 2.4. Tabletop assembly를 snapshot부터 CONTACT_READY까지 단계별로 승인하고, 실패를 이름 있는 복귀 상태로 보낸 뒤 측정된 variation·유지비가 클 때만 learned proposal을 추가하되 같은 IK·collision·timing·safety gate로 되돌리는 promotion ladder. — 저자 제작(Codex 보조)

다음에 배울 것

이 장은 robot을 접촉 직전까지 책임집니다. pre-insertion pose에 도달했다고 해서 position trajectory를 그대로 밀어 넣으면 fixture 오차와 contact force가 급격히 커질 수 있습니다. Chapter 3에서는 trajectory output이 impedance, admittance, force 또는 hybrid position-force controller의 reference로 어떻게 바뀌는지, loop owner와 rate·latency·energy·force limit을 어떻게 검증하는지 다룹니다.

학습은 아직 미뤘습니다. 이는 학습을 부정해서가 아니라 비교 가능한 baseline을 먼저 만든 것입니다. Chapter 4 이후의 policy가 개선해야 할 것은 planning_failed라는 모호한 숫자가 아니라 branch maintenance cost, variation coverage, intervention, latency, recovery처럼 이 장에서 정의한 구체 지표입니다.

참고문헌

  1. Whitney, D. E. (1969). Resolved Motion Rate Control of Manipulators and Human Prostheses. IEEE Transactions on Man-Machine Systems. DOI: 10.1109/TMMS.1969.299896.
  2. Yoshikawa, T. (1985). Manipulability of Robotic Mechanisms. The International Journal of Robotics Research. DOI: 10.1177/027836498500400201.
  3. Wampler, C. W. II. (1986). Manipulator Inverse Kinematic Solutions Based on Vector Formulations and Damped Least-Squares Methods. IEEE Transactions on Systems, Man, and Cybernetics. DOI: 10.1109/TSMC.1986.4308942.
  4. Nakamura, Y., & Hanafusa, H. (1986). Inverse Kinematic Solutions With Singularity Robustness for Robot Manipulator Control. Journal of Dynamic Systems, Measurement, and Control. DOI: 10.1115/1.3143764.
  5. Kavraki, L. E., Švestka, P., Latombe, J.-C., & Overmars, M. H. (1996). Probabilistic Roadmaps for Path Planning in High-Dimensional Configuration Spaces. IEEE Transactions on Robotics and Automation. DOI: 10.1109/70.508439.
  6. LaValle, S. M. (1998). Rapidly-Exploring Random Trees: A New Tool for Path Planning. Iowa State University Technical Report.
  7. Kuffner, J. J., & LaValle, S. M. (2000). RRT-Connect: An Efficient Approach to Single-Query Path Planning. IEEE ICRA. DOI: 10.1109/ROBOT.2000.844730.
  8. Ratliff, N., Zucker, M., Bagnell, J. A., & Srinivasa, S. (2009). CHOMP: Gradient Optimization Techniques for Efficient Motion Planning. IEEE ICRA. DOI: 10.1109/ROBOT.2009.5152817.
  9. Karaman, S., & Frazzoli, E. (2011). Sampling-Based Algorithms for Optimal Motion Planning. The International Journal of Robotics Research. DOI: 10.1177/0278364911406761.
  10. Kalakrishnan, M., Chitta, S., Theodorou, E., Pastor, P., & Schaal, S. (2011). STOMP: Stochastic Trajectory Optimization for Motion Planning. IEEE ICRA. DOI: 10.1109/ICRA.2011.5980280.
  11. Kaelbling, L. P., & Lozano-Pérez, T. (2011). Hierarchical Task and Motion Planning in the Now. IEEE ICRA. DOI: 10.1109/ICRA.2011.5980391.
  12. Şucan, I. A., Moll, M., & Kavraki, L. E. (2012). The Open Motion Planning Library. IEEE Robotics & Automation Magazine. DOI: 10.1109/MRA.2012.2205651.
  13. Schulman, J., Duan, Y., Ho, J., et al. (2014). Motion Planning with Sequential Convex Optimization and Convex Collision Checking. The International Journal of Robotics Research. DOI: 10.1177/0278364914528132.
  14. Posa, M., Cantu, C., & Tedrake, R. (2014). A Direct Method for Trajectory Optimization of Rigid Bodies Through Contact. The International Journal of Robotics Research. DOI: 10.1177/0278364913506757.
  15. Toussaint, M. (2015). Logic-Geometric Programming: An Optimization-Based Approach to Combined Task and Motion Planning. IJCAI.
  16. Pham, H., & Pham, Q.-C. (2018). A New Approach to Time-Optimal Path Parameterization Based on Reachability Analysis. IEEE Transactions on Robotics. DOI: 10.1109/TRO.2018.2819195. arXiv:1707.07239.
  17. Garrett, C. R., Lozano-Pérez, T., & Kaelbling, L. P. (2018). Sampling-Based Methods for Factored Task and Motion Planning. The International Journal of Robotics Research. DOI: 10.1177/0278364918761578.
  18. Berscheid, L., & Kröger, T. (2021). Ruckig: Online Trajectory Generation for Jerk-Constrained Robot Motion. Robotics: Science and Systems. DOI: 10.15607/RSS.2021.XVII.015.
  19. MoveIt (2025a). MoveIt Servo Realtime Teleoperation Tutorial. Official documentation, accessed 2026-07-15.
  20. MoveIt (2025b). MoveIt 2 Trajectory Processing. Official documentation, accessed 2026-07-15.
  21. Bobrow, J. E., Dubowsky, S., & Gibson, J. S. (1985). Time-Optimal Control of Robotic Manipulators Along Specified Paths. The International Journal of Robotics Research. DOI: 10.1177/027836498500400303.
  22. Kang G. Shin & Neil D. McKay (1985). Minimum-Time Control of Robotic Manipulators with Geometric Path Constraints. Annotated primary reading. DOI: 10.1109/tac.1985.1104009. — 역할: IK·planning·timing의 가정과 책임 경계를 비교하는 1차 읽기. 한계: Performance depends on geometry, initialization, objectives, and model fidelity; feasibility does not imply controller tracking.
  23. Matthew T. Mason (1986). Mechanics and Planning of Manipulator Pushing Operations. Annotated primary reading. canonical URL. — 역할: IK·planning·timing의 가정과 책임 경계를 비교하는 1차 읽기. 한계: Delay, sampling, saturation, filtering, environment stiffness, and hardware interfaces bound the reported behavior.
  24. David J. Montana (1988). Kinematics of Contact and Grasp. Annotated primary reading. DOI: 10.1177/027836498800700302. — 역할: IK·planning·timing의 가정과 책임 경계를 비교하는 1차 읽기. 한계: Smooth rigid surfaces and known contact state are strong assumptions for real fingertips and mesh contacts.
  25. Stefano Chiaverini (1997). A Closed-Loop Inverse Kinematics Scheme for Constrained Redundant Manipulators. Annotated primary reading. DOI: 10.1109/70.585902. — 역할: IK·planning·timing의 가정과 책임 경계를 비교하는 1차 읽기. 한계: Singularity, joint limits, collision, scaling, and discrete-time behavior still require explicit handling.
  26. Antonio Bicchi & Vijay Kumar (2000). Robotic Grasping and Contact: A Review. Annotated primary reading. DOI: 10.1109/ROBOT.2000.844081. — 역할: IK·planning·timing의 가정과 책임 경계를 비교하는 1차 읽기. 한계: Idealized contact models and pre-modern sensing limit direct quantitative use.
  27. Rachid Boulic & Prashanth Baerlocher (2008). Real-Time Motion Retargeting to Highly Redundant Robots. Annotated primary reading. canonical URL. — 역할: IK·planning·timing의 가정과 책임 경계를 비교하는 1차 읽기. 한계: Singularity, joint limits, collision, scaling, and discrete-time behavior still require explicit handling.
  28. Patrick Beeson & Barrett Ames (2015). TRAC-IK: An Open-Source Library for Improved Solving of Generic Inverse Kinematics. Annotated primary reading. DOI: 10.1109/humanoids.2015.7363472. — 역할: IK·planning·timing의 가정과 책임 경계를 비교하는 1차 읽기. 한계: Singularity, joint limits, collision, scaling, and discrete-time behavior still require explicit handling.
  29. Dorsa Sadigh et al. (2017). Active Preference-Based Learning of Reward Functions. Annotated primary reading. canonical URL. — 역할: IK·planning·timing의 가정과 책임 경계를 비교하는 1차 읽기. 한계: The assumptions and evaluation setup are source-specific; current implementation claims require maintained official evidence.
  30. Jemin Hwangbo et al. (2019). Learning Agile and Dynamic Motor Skills for Legged Robots. Annotated primary reading. DOI: 10.1126/scirobotics.aau5872. — 역할: IK·planning·timing의 가정과 책임 경계를 비교하는 1차 읽기. 한계: The assumptions and evaluation setup are source-specific; current implementation claims require maintained official evidence.
  31. Ankur Handa et al. (2023). DeXtreme: Transfer of Agile In-hand Manipulation from Simulation to Reality. Annotated primary reading. arXiv:2210.13702. — 역할: IK·planning·timing의 가정과 책임 경계를 비교하는 1차 읽기. 한계: The assumptions and evaluation setup are source-specific; current implementation claims require maintained official evidence.
  32. Yoshihiko Nakamura & Hideo Hanafusa (1986). Singularity-Robust Inverse Kinematics. Annotated primary reading. DOI: 10.1115/1.3143764. — 역할: 감쇠 역기구학이 특이점 부근 속도 폭주를 어떻게 제한하는지 비교하는 1차 읽기. 한계: 관절 한계·충돌·스케일링·이산시간 거동은 별도로 다뤄야 한다.