{
  "schemaVersion": "robotic.story.v1",
  "edition": "002",
  "checkedAt": "2026-09-12",
  "id": "april-tag",
  "mode": "real",
  "label": "PERCEPTION / THE USEFUL ORDINARY",
  "title": "Sometimes the breakthrough is a sticker.",
  "robotTitle": "Landmark found. World position still conditional.",
  "description": "Two different worlds. The very same pixels. Play with an ideal camera and find the assumption hiding inside its answer.",
  "robotDescription": "Known width. Fixed intrinsics. Conditional depth. Change an assumption and the pixels stay real while the answer changes.",
  "minutes": "5 min + explore",
  "kind": "Sourced explainer + perception lab",
  "interactive": "landmark",
  "signal": "SAME PIXELS ≠ SAME WORLD",
  "url": "/stories/april-tag/",
  "publishedAt": "2026-09-11",
  "topics": [
    "sensing",
    "play"
  ],
  "updatedAt": "2026-09-12",
  "sections": [
    {
      "title": "The pixels are right. The assumption is wrong.",
      "human": [
        "Try Same pixels, different world in the lab. A 20 cm square at 2 m and a 40 cm square at 4 m make the same 80-pixel-wide image in this ideal camera. The image alone does not tell you which world produced it.",
        "Leave the machine assuming a 20 cm marker, and it reports 2 m even when the generated square is 4 m away. Use the actual marker size to correct that assumption. A precise-looking answer can still depend on the wrong input.",
        "The colored drawing is a generated geometric projection, not a camera feed or an AprilTag pattern. We derive its equations from the pinhole camera model documented by OpenCV. The bounds deliberately cover only a chosen pixel-measurement uncertainty; they are not measured accuracy."
      ],
      "robot": [
        "Projection gives p = fW/Z for a centered, front-parallel square. With f = 800 px, both W = 0.20 m at Z = 2 m and W = 0.40 m at Z = 4 m produce p = 80 px. Width alone cannot resolve the scale ambiguity.",
        "The inverse estimate uses an assumed width: estimated Z = f × assumed W / p. Its scale error follows the width assumption. Axial depth is the Z coordinate in the camera frame, not general off-axis range or full six-degree-of-freedom pose.",
        "Covering a full-width edge removes this measurement from the exercise. We do not use a visible remnant as the whole width. This is a choice in the teaching model, not a test of how a real AprilTag decoder handles occlusion."
      ]
    },
    {
      "title": "A square with a job.",
      "human": [
        "A camera looks at a printed marker. The pattern helps identify which marker it is. The shape of its projection can also support an estimate of the camera’s position and orientation relative to the marker. A little square becomes something the machine can use as a reference.",
        "AprilTag is a visual fiducial system developed by Edwin Olson and colleagues. The original paper appeared in 2011. The authors describe markers that can be printed with ordinary equipment and detected in images.",
        "For metric pose estimation, the size of the marker and the camera calibration matter. Recognizing an identifier is not the same as knowing where you are in the world."
      ],
      "robot": [
        "Useful observation: tag identity plus image geometry. With known tag size and camera intrinsics, pose estimation can relate the camera frame to the tag frame.",
        "That is six degrees of freedom: three for translation and three for rotation. It is a relative estimate. To use it for world localization, the system needs an appropriate relationship between the tag and its map.",
        "AprilTag’s appeal here is modest and practical. A deliberately recognizable object changes the perception problem. The environment contributes information instead of demanding that the machine infer everything from arbitrary scenery."
      ]
    },
    {
      "title": "Now put the sticker on a moving box.",
      "human": [
        "The thought experiment above changes one condition at a time. A familiar marker on a fixed wall can be useful. Move it onto a box, and recognizing it is no longer evidence that the box stayed where the map expected.",
        "This is an invented warehouse scenario, not a reported AprilTag failure. It illustrates the difference between a correct observation and a correct assumption about that observation.",
        "We tend to imagine robotics progress as increasingly clever machines. Sometimes progress also looks like making a space easier to understand: known landmarks, repeatable fixtures, clear boundaries. The clever part is deciding what to simplify."
      ],
      "robot": [
        "A marker moved with a box can still provide a camera-to-tag estimate. Treating its old world pose as current is a separate error. Identification does not validate the map.",
        "The maintainer documentation also makes a practical tradeoff visible: image decimation may speed detection while reducing the distance at which tags are detected. Faster is not an unconditional upgrade.",
        "A robust system should track which assumptions support an estimate, including visibility and calibration. The label on the wall is a measurement opportunity, not a certificate of certainty."
      ]
    }
  ],
  "question": {
    "human": "What could you change in a room to make it easier for a machine to understand?",
    "robot": "Which frame is this observation relative to, and what makes that frame trustworthy?"
  },
  "sources": [
    {
      "title": "AprilTag: A robust and flexible visual fiducial system",
      "url": "https://april.eecs.umich.edu/papers/details.php?name=olson2011tags",
      "published": "May 2011",
      "facts": [
        "The paper introduces a visual fiducial system supporting identification and pose estimation."
      ],
      "limit": "The published capability is not a promise of detection in all lighting, distances, views or occlusions."
    },
    {
      "title": "AprilTag author project",
      "url": "https://april.eecs.umich.edu/software/apriltag.html",
      "published": "Undated project page",
      "facts": [
        "Tags can be produced with an ordinary printer.",
        "A single image can support a six-degree-of-freedom relative pose estimate."
      ],
      "limit": "A tag’s relative pose is not automatically the robot’s location in a global map."
    },
    {
      "title": "AprilRobotics: implementation and pose-estimation documentation",
      "url": "https://github.com/AprilRobotics/apriltag",
      "published": "Undated maintainer documentation",
      "facts": [
        "Pose estimation requires camera intrinsics and tag size.",
        "Image decimation changes the speed and detection-distance tradeoff."
      ],
      "limit": "An implementation setting should be tested for the actual camera and environment."
    },
    {
      "title": "OpenCV 4.13.0: camera calibration and 3D reconstruction",
      "url": "https://docs.opencv.org/4.13.0/d9/d0c/group__calib3d.html",
      "published": "Versioned documentation; publication date not specified",
      "facts": [
        "The ideal pinhole model projects camera-frame coordinates using focal lengths in pixels and a principal point.",
        "The browser lab derives its front-parallel width and depth equations from that model."
      ],
      "limit": "The browser uses generated coordinates, an exact focal length and no distortion. Its measurement bounds are selected teaching assumptions, not OpenCV or AprilTag performance results."
    }
  ],
  "related": [
    "break-room",
    "mars-latency"
  ],
  "image": {
    "kind": "AI illustration / concept",
    "alt": "Conceptual still life of a camera, blocks and contrasting marker panels at different depths.",
    "caption": "AI concept illustration. These are invented marker patterns, not AprilTag codes or experimental results. The interactive diagram below explains the geometry."
  },
  "notice": "Sourced explanation with an invented robot narrator. Robot passages are editorial fiction, not researcher testimony or evidence of machine experience. Reported findings are not independently replicated by Robotic.org."
}
