Chapter 12 · Make an arm plan, move, touch, and prove the whole task
Today in the field story
One problem, then the next
Freeze twenty vial-transfer cases across start pose, target offset, divider position, planner seed, and planted faults. Run the same launch path, account for every trial, and separate planning, timing, controller, scene, contact, and scoring failures. Include cancellation and a stale-scene rejection. The mission closes only when the evidence package supports an explicit decision and preserves the failures that prevent a stronger claim.
- Why now
A complete manipulation claim needs repeated end-to-end evidence, not isolated component success.
- Ignore today
Ignore powered hardware and learned policies; qualify the simulated baseline honestly.
- Unlocks next
A repeatable manipulation system that later data collection and learning can build upon.
Understand
Build the physical picture first
An acceptance test is a locked obstacle course with a scoring rule, where correct rejection and safe recovery count as intended behavior rather than hidden failures.
A manipulation acceptance test begins before the first run. Freeze the robot and MoveIt configurations, object set, scene layouts, random seeds, perception inputs, start states, success tolerances, time budgets, and evidence paths. Include familiar, shifted, obstructed, and unreachable targets. Define which cases should place an object and which should reject safely. Changing a threshold after seeing results turns acceptance into tuning.
Trace the complete chain under one trial ID: input observation and transform, scene version, grasp candidate, IK result, planning result, timed trajectory, controller outcome, contact or gripper evidence, attachment transition, place pose, release evidence, and recovery. A final object photo cannot identify whether perception, planning, grasp, transfer, or release caused a failure. Stage yields and explicit failure codes make repair work actionable.
Fault trials test boundaries deliberately. Add a late obstacle, unreachable pose, blocked approach, stale Servo input, canceled execution, failed grasp verification, or force-limit event in simulation. The expected outcome may be a rejected target, halted command, detached-free scene state, or recovery to a known pose. An unreachable-object trial passes when the system rejects it within the bound and makes no unsafe motion; forcing every trial to move rewards the wrong behavior.
Report counts and denominators, not adjectives. Overall placement success, grasp yield, conditional transfer yield, false accepts, safe-rejection rate, recovery rate, timing tail, and worst pose error answer different questions. Apply the predeclared gates and issue exactly PASS, NEEDS REVISION, or BLOCKED. A PASS is limited to the tested configuration and environment; simulation evidence does not authorize hardware deployment.
Words you need
Name each idea precisely
- Acceptance criterion
A measurable threshold and decision rule declared before testing that determines whether a requirement passes.
Physical example:At least 18 of 20 placements, every fault halted safely, and zero false attachment transitions are required.
- Trial matrix
A fixed table of test cases spanning nominal, boundary, and fault conditions with expected outcomes.
Physical example:Rows cover clear cups, shifted cups, obstructed cups, unreachable poses, cancellation, and stale commands.
- Stage yield
The number of trials that pass one task stage divided by the trials eligible to reach that stage.
Physical example:Eighteen successful places among nineteen verified grasps gives conditional place yield
18/19.- Safe rejection
A bounded refusal that reports why the task cannot continue and avoids unauthorized motion or scene claims.
Physical example:The planner rejects a cup inside a shelf wall and the gripper never closes or attaches it.
- Traceability
The ability to connect a requirement and trial input to exact configuration, logs, artifacts, stage outcomes, and final decision.
Physical example:Trial
W12-017links its scene file, seed, trajectory, controller result, video interval, failure code, and matrix row.- Failure taxonomy
A stable set of specific failure categories used to count where and why tasks stop.
Physical example:No target, stale transform, no IK, plan timeout, tracking abort, grasp miss, slip, and release error remain separate categories.
Math, one line at a time
Work through today’s relationship
Prerequisite rescue · optionalConfiguration space, sampling, and trajectory timing
A collision-free pose is not enough; the complete joint path and timing must be feasible.
- q
- one point in joint configuration spaceUnit: rad or m per joint
- Δq
- joint change between samplesUnit: rad or m
- v = Δq/Δt
- joint velocityUnit: rad/s or m/s
A joint moves from 0.2 rad to 0.8 rad, so Δq = 0.6 rad.
If allocated time is 0.3 s, average velocity is 0.6/0.3 = 2 rad/s.
If the limit is 1 rad/s, increase duration to at least 0.6 s and collision-check the interpolated path.
A route can pass API validation at its endpoints while failing in the middle; robot trajectories must validate every segment.
A 0.5 rad move with a 2 rad/s limit needs at least how long?
Δt = 0.5/2 = 0.25 s.
Placement success is
while grasp success is
Apply frozen gates to twenty manipulation trials
A simulated matrix has 20 trials. Grasp verification succeeds in 19; final placement succeeds in 18. Five planted fault trials all halt or reject as expected, with zero false attachments and zero forbidden motions. Frozen gates require at least 90% overall placement, 100% expected fault handling, and zero false attachments or forbidden motions.
Calculate overall placement success:
18 / 20 × 100% = 90%.Calculate grasp success:
19 / 20 × 100% = 95%, showing one failure occurred before verified attachment.Calculate placement yield after a verified grasp:
18 / 19 × 100% ≈ 94.7%, showing one later transfer or release failure.Calculate planted-fault handling:
5 / 5 × 100% = 100%.Apply zero-tolerance gates: false attachments are
0and forbidden motions are0, so neither disqualifies the result.Issue PASS for this frozen simulation matrix because every declared gate is met, while recording that the overall result sits exactly on its minimum and does not approve powered hardware.
The example passes its declared simulation criteria at 90% placement, 100% fault handling, and zero prohibited state or motion events.
A defensible verdict follows frozen denominators and zero-tolerance hazards, then states exactly which environment and configuration the verdict covers.
Physical examples
Where this appears in real life
Parcel inspection line
Imagine twenty labeled parcels sent through the same inspection stations, with damaged parcels expected to be rejected before packing rather than forced through.
Each station records its own outcome, and a correct early rejection is different from a parcel disappearing without a record.
Science-fair scoring rubric
Write the scoring thresholds for accuracy, repeatability, and safe failure before judging demonstrations, then refuse to award extra points for an unplanned lucky result.
A frozen rubric prevents the judge from moving the pass line after seeing attractive or disappointing outputs.
Hands-on exercise
Make the idea observable
Use the complete simulated Week 12 pipeline and a clean output directory. Preserve the final configuration before running the acceptance matrix.
Write requirements and frozen gates for perception freshness, scene correctness, planning, trajectory limits, grasp verification, placement tolerance, cancellation, force or Servo halt, and prohibited events.
Create twenty deterministic rows covering nominal objects, shifted targets, obstacles, unreachable poses, narrow clearance, grasp misses, stale commands, cancellation, and contact-limit events.
Run rows sequentially without changing code or thresholds; assign one trial ID and save input, configuration hashes, scene, seed, logs, trajectory, stage statuses, timing, and final object pose.
For every fault row, verify the expected bounded rejection or recovery plus the absence of gripper, attachment, or motion actions that were not authorized by prior evidence.
Calculate stage counts, overall and conditional rates, false accepts, safe-rejection and recovery rates, timing tail, worst pose error, and failure-category totals with denominators.
Publish the matrix, evidence index, largest remaining failure, and one PASS, NEEDS REVISION, or BLOCKED verdict; if gates fail, name the first causal repair and rerun the complete frozen matrix afterward.
Nominal rows should complete the full chain, fault rows should stop at their intended boundary, and every final count should trace back to an immutable trial record.
Twenty rows have complete evidence, every injected fault has its expected outcome checked, all metrics can be recalculated, and the verdict follows the predeclared gates without exception.
Build today
Use MoveIt 2 to plan around collision objects, servo toward a target, execute a Task Constructor pick-and-place, and stop safely on contact or invalid state.
Evidence to save
DONE when the weekly ship note explains how “Mandatory MoveIt manipulation acceptance test” changed the build, what still fails, and the first task for next week.
Project gate
Gate 3 · Demonstrate perception-driven autonomy over 20 trials and publish failure categories.
Common mistakes
Catch the wrong mental model
Changing timeouts, tolerances, or success definitions after viewing the trial results.
Freeze criteria and configuration before the run; treat any tuning as a new candidate that requires the complete matrix again.
Counting a green plan, close command, or attached scene object as a successful placement.
Require the full evidence chain through controller result, grasp verification, carried-object state, measured placement, release verification, and final scene state.
Marking an unreachable-target rejection as a task failure because no motion occurred.
Compare with the row's expected outcome; timely bounded rejection without unauthorized motion is correct behavior and should be scored separately from placement.
Job connection
How this becomes employable evidence
Own a manipulation release gate by freezing scenarios and configurations, automating stage-level evidence, testing cancellation and fault recovery, and giving operators and developers a traceable acceptance verdict.
Relevant target roles
- Robotics Deployment, Integration & Validation Engineer
- Robotics Application / ROS 2 Integration Engineer
- Robotics Software Engineer — ROS 2 / AMR
- Robot HMI / Control & Monitoring Engineer
- Robot Learning Deployment / Physical AI Integration Engineer
Chapter 12 interview drill
Interview questions: Mandatory MoveIt manipulation acceptance test
Practise a 60–90 second answer: define the idea, connect it to a physical robot, state assumptions, frames, and units when relevant, then finish with the failure signal or evidence you would inspect.
Primary interview scenario
Design a twenty-trial MoveIt manipulation acceptance matrix, define stage metrics and zero-tolerance events, and explain why correct unreachable-target rejection and action cancellation are acceptance cases.
Answer shape: clarify the situation → trace the physical and software path → test the most likely boundaries → name the evidence that would confirm the result.
Technical follow-up questions
Q1Why must acceptance thresholds be frozen before the twenty trials?
Otherwise observed results influence the pass rule, turning an independent release decision into tuning and making the verdict difficult to reproduce.
Q2Why report both `18/20` placement success and `18/19` placement-after-grasp yield?
The first describes end-to-end outcome, while the second isolates later transfer or release behavior among trials that actually achieved a verified grasp.
Q3What evidence makes an unreachable-object trial a correct safe rejection?
The target and scene are recorded, the expected validity or planning boundary rejects within its limit, no unauthorized motion or attachment occurs, and the terminal reason is traceable.
Chapter starter artifact
Select only a fresh collision-free candidate
A twenty-trial simulated manipulation matrix executes the full perceive-to-scene-to-plan-to-execute-to-contact sequence, preserves seed and scene identity, exposes stage failures and cancellation, verifies carried-object collision state, and ends in PASS, NEEDS REVISION, or BLOCKED with linked logs and uncut evidence.
const plans = [
{ id: "plan-a", collisionFree: false, scene: 7, durationS: 3.1 },
{ id: "plan-b", collisionFree: true, scene: 6, durationS: 2.8 },
{ id: "plan-c", collisionFree: true, scene: 7, durationS: 4.2 },
{ id: "plan-d", collisionFree: "false", scene: 7, durationS: 1.0 },
];
const requiredScene = 7;
const eligible = plans.filter(
(plan) =>
typeof plan.id === "string" &&
plan.id.length > 0 &&
plan.collisionFree === true &&
plan.scene === requiredScene &&
Number.isFinite(plan.durationS) &&
plan.durationS > 0,
);
if (eligible.length === 0) throw new Error("no eligible plan");
eligible.sort((left, right) => left.durationS - right.durationS);
const selected = eligible[0];
const rejected = plans.length - eligible.length;
const output =
"selected=" + selected.id +
" rejected=" + rejected +
" durationS=" + selected.durationS.toFixed(1);
const expected = "selected=plan-c rejected=3 durationS=4.2";
if (output !== expected) throw new Error("plan gate mismatch: " + output);
console.log(output);Download the file into your terminal's current folder, then run the command below. The expected output is exact.
- Run
node week-12-select-safe-plan.mjs
- Expected output
selected=plan-c rejected=3 durationS=4.2
- Planted failure to diagnose
Plan-b used stale scene revision 6, while plan-d reports string
false; removing the revision gate or treating a non-boolean flag as truthy selects an ineligible path.