ICRA Reproducibility
Reproducibility at a robotics conference means something different than at an ML
venue: no reader can rerun your hardware trials without your robot, your room,
and your objects. The achievable standard is therefore two-tier — rerunnable
(code, simulation, analysis) and auditable (hardware evidence logged well
enough that a skeptic can verify you did what you claim). ICRA papers earn trust
by being explicit about which tier each result sits in.
The specification ledger
A robotics result is unreproducible if the platform is underspecified. The paper
(body, since there is no appendix escape) plus released materials should pin:
| Layer |
Must specify |
Example of "enough" |
| Robot |
model, DOF, payload, firmware version |
"UR5e, PolyScope 5.11" |
| End effector |
model, mods, wear state if relevant |
"Robotiq 2F-85, stock pads" |
| Sensors |
model, resolution, rate, mounting frame |
"D435i @ 640×480, 30 Hz, wrist" |
| Compute |
on-board vs off-board, GPU, latency path |
"off-board 3080, 5G-free wired" |
| Middleware |
ROS distro, key package versions |
"ROS 2 Humble, MoveIt 2.5.4" |
| Control |
loop rates, gains or their source |
"impedance @ 500 Hz, gains in repo" |
| Calibration |
method + residual error |
"hand-eye via [ref], 1.8 mm RMS" |
| Objects/scenes |
identity, source, dimensions |
"YCB subset listed in Tab. II" |
Standard object sets (YCB and similar) exist precisely so that "graspable
household objects" can be a checkable claim; use them or publish the object
specs.
Logging: the rosbag is the lab notebook
- Record every hardware session — including failed ones — with topic-complete
rosbags (or vendor-equivalent logs) plus an untouched camera view.
- One log per trial, named by protocol:
trial_<cond>_<idx>_<date>.bag; the
analysis pipeline should consume these logs, so paper numbers regenerate from
raw data with one command.
- Keep a session sheet: date, operator, firmware state, anomalies. Two months
later, this distinguishes "the gripper was recalibrated between Tables II and
III" from unexplainable drift.
- The video attachment should be cut from these recorded sessions, which
guarantees footage corresponds to logged, reported trials.
Determinism where it exists, honesty where it doesn't
Hardware trials are not seed-reproducible — contact, cables, lighting, and
thermal drift see to that. Split the claims accordingly:
- Deterministic tier: training runs, simulation experiments, and analysis
scripts get pinned seeds, pinned dependency versions, and containerized
environments. State seeds and repetition counts.
- Stochastic tier: hardware trials get protocol reproducibility — the
documented procedure another lab could follow — plus dispersion reporting.
- Never write "results are fully reproducible" over a hardware table; write
"code and simulation reproduce Tables I-II; hardware protocol and logs for
Tables III-IV are released for audit."
Release scaffold
repo/
├── README.md # claim → command map (Table III = run_hw_analysis.sh)
├── env/ # Dockerfile or rosdep/lockfiles, pinned
├── sim/ # simulation experiments, seeds fixed
├── control/ # controllers/planners as ROS packages
├── hw_protocol.md # step-by-step trial procedure, success criterion,
│ # reset procedure, safety notes
├── logs/ # rosbags or download script (size!), session sheets
├── analysis/ # regenerates every figure/table from logs/
└── video/ # raw clips ↔ trial IDs mapping
Anonymize the repository for review under the double-anonymous policy (2026
cycle onward): anonymized hosting or an artifact stripped of names — an org URL
is an identity leak (see icra-submission).
Compute and latency reporting
Robotics adds a real-time dimension absent from ML reproducibility norms:
- Report where each computation ran (on-board CPU/embedded GPU vs off-board
workstation) and the link between them; an off-board 3090 over gigabit wire
is a materially different system than on-board inference.
- State end-to-end latency per pipeline stage (sensing → perception → decision
→ actuation) at least once; "runs in real time" is unverifiable without it.
- Training compute (GPU-hours, hardware) belongs in the paper for learned
components — cheap to report, increasingly expected by review forms.
Availability statement patterns
Honest, specific statements outperform boilerplate promises:
- "Code, simulation environments, and trial logs: (anonymized for
review; public on acceptance)."
- "The gripper design files are released; the arm is commercial (UR5e)."
- "Raw rosbags total 1.2 TB; per-trial extracted features and a 40 GB sample
are hosted, full logs on request."
- Avoid: "code will be released upon publication" with nothing at review time —
reviewers discount unverifiable promises, and some cycles ask availability
questions directly on the review form (verify the current form).
Pre-submission reproducibility pass
- Specification ledger complete in-paper (table above, compressed)?
- Every reported number regenerates from logs via one documented command?
- Seeds/versions pinned for the deterministic tier; container builds clean?
- Hardware protocol written so a stranger could run trial 1 tomorrow?
- Release scaffold anonymized; links leak-checked?
- Availability statement matches what actually exists today?
Output format
[Tier split] rerunnable: <tables/figs> | auditable: <tables/figs>
[Spec ledger] missing rows: <list or none>
[Log coverage] trials logged <n>/<n>, analysis regenerates: y/n
[Determinism] seeds/versions pinned for sim+training: y/n
[Release] scaffold complete? anonymized? size plan?
[Statement] honest-specific / boilerplate-risk — rewrite: <line>
Source: brycewang-stanford/Awesome-Journal-Skills → ICRA-Skills/skills/icra-reproducibility/SKILL.md
1---2name: icra-reproducibility3description: Use when hardening an ICRA paper's reproducibility — specifying robot platform, firmware, ROS and driver versions, control rates, and sensor calibration; logging rosbags and seeds; separating what others can rerun (code, sim) from what they can only audit (your hardware trials); and writing honest availability statements.4---567# ICRA Reproducibility89Reproducibility at a robotics conference means something different than at an ML10venue: no reader can rerun your hardware trials without your robot, your room,11and your objects. The achievable standard is therefore two-tier — **rerunnable**12(code, simulation, analysis) and **auditable** (hardware evidence logged well13enough that a skeptic can verify you did what you claim). ICRA papers earn trust14by being explicit about which tier each result sits in.1516## The specification ledger1718A robotics result is unreproducible if the platform is underspecified. The paper19(body, since there is no appendix escape) plus released materials should pin:2021| Layer | Must specify | Example of "enough" |22|---|---|---|23| Robot | model, DOF, payload, firmware version | "UR5e, PolyScope 5.11" |24| End effector | model, mods, wear state if relevant | "Robotiq 2F-85, stock pads" |25| Sensors | model, resolution, rate, mounting frame | "D435i @ 640×480, 30 Hz, wrist" |26| Compute | on-board vs off-board, GPU, latency path | "off-board 3080, 5G-free wired" |27| Middleware | ROS distro, key package versions | "ROS 2 Humble, MoveIt 2.5.4" |28| Control | loop rates, gains or their source | "impedance @ 500 Hz, gains in repo" |29| Calibration | method + residual error | "hand-eye via [ref], 1.8 mm RMS" |30| Objects/scenes | identity, source, dimensions | "YCB subset listed in Tab. II" |3132Standard object sets (YCB and similar) exist precisely so that "graspable33household objects" can be a checkable claim; use them or publish the object34specs.3536## Logging: the rosbag is the lab notebook3738- Record every hardware session — including failed ones — with topic-complete39 rosbags (or vendor-equivalent logs) plus an untouched camera view.40- One log per trial, named by protocol: `trial_<cond>_<idx>_<date>.bag`; the41 analysis pipeline should consume these logs, so paper numbers regenerate from42 raw data with one command.43- Keep a session sheet: date, operator, firmware state, anomalies. Two months44 later, this distinguishes "the gripper was recalibrated between Tables II and45 III" from unexplainable drift.46- The video attachment should be cut from these recorded sessions, which47 guarantees footage corresponds to logged, reported trials.4849## Determinism where it exists, honesty where it doesn't5051Hardware trials are not seed-reproducible — contact, cables, lighting, and52thermal drift see to that. Split the claims accordingly:5354- **Deterministic tier:** training runs, simulation experiments, and analysis55 scripts get pinned seeds, pinned dependency versions, and containerized56 environments. State seeds and repetition counts.57- **Stochastic tier:** hardware trials get *protocol* reproducibility — the58 documented procedure another lab could follow — plus dispersion reporting.59- Never write "results are fully reproducible" over a hardware table; write60 "code and simulation reproduce Tables I-II; hardware protocol and logs for61 Tables III-IV are released for audit."6263## Release scaffold6465```text66repo/67├── README.md # claim → command map (Table III = run_hw_analysis.sh)68├── env/ # Dockerfile or rosdep/lockfiles, pinned69├── sim/ # simulation experiments, seeds fixed70├── control/ # controllers/planners as ROS packages71├── hw_protocol.md # step-by-step trial procedure, success criterion,72│ # reset procedure, safety notes73├── logs/ # rosbags or download script (size!), session sheets74├── analysis/ # regenerates every figure/table from logs/75└── video/ # raw clips ↔ trial IDs mapping76```7778Anonymize the repository for review under the double-anonymous policy (202679cycle onward): anonymized hosting or an artifact stripped of names — an org URL80is an identity leak (see `icra-submission`).8182## Compute and latency reporting8384Robotics adds a real-time dimension absent from ML reproducibility norms:8586- Report where each computation ran (on-board CPU/embedded GPU vs off-board87 workstation) and the link between them; an off-board 3090 over gigabit wire88 is a materially different system than on-board inference.89- State end-to-end latency per pipeline stage (sensing → perception → decision90 → actuation) at least once; "runs in real time" is unverifiable without it.91- Training compute (GPU-hours, hardware) belongs in the paper for learned92 components — cheap to report, increasingly expected by review forms.9394## Availability statement patterns9596Honest, specific statements outperform boilerplate promises:9798- "Code, simulation environments, and trial logs: <link> (anonymized for99 review; public on acceptance)."100- "The gripper design files are released; the arm is commercial (UR5e)."101- "Raw rosbags total 1.2 TB; per-trial extracted features and a 40 GB sample102 are hosted, full logs on request."103- Avoid: "code will be released upon publication" with nothing at review time —104 reviewers discount unverifiable promises, and some cycles ask availability105 questions directly on the review form (verify the current form).106107## Pre-submission reproducibility pass1081091. Specification ledger complete in-paper (table above, compressed)?1102. Every reported number regenerates from logs via one documented command?1113. Seeds/versions pinned for the deterministic tier; container builds clean?1124. Hardware protocol written so a stranger could run trial 1 tomorrow?1135. Release scaffold anonymized; links leak-checked?1146. Availability statement matches what actually exists today?115116## Output format117118```text119[Tier split] rerunnable: <tables/figs> | auditable: <tables/figs>120[Spec ledger] missing rows: <list or none>121[Log coverage] trials logged <n>/<n>, analysis regenerates: y/n122[Determinism] seeds/versions pinned for sim+training: y/n123[Release] scaffold complete? anonymized? size plan?124[Statement] honest-specific / boilerplate-risk — rewrite: <line>125```126127---128129**Source:** [`brycewang-stanford/Awesome-Journal-Skills`](https://github.com/brycewang-stanford/Awesome-Journal-Skills) → `ICRA-Skills/skills/icra-reproducibility/SKILL.md`