What Problem This Lab Solves

What Problem This Lab Solves

Goal

Understand the gap between "knowing ROS2" and "building an industrial robotics application" — the gap this lab closes.

What You Will Build

A mental model of what an industrial manipulation application actually consists of, and why isolated tutorials do not add up to one.

Why This Matters

The typical learning path produces people who can write a publisher and launch a MoveIt demo, but freeze in front of a real task: "Pick that part from the crate, place it on the fixture, and be ready to swap the camera next quarter." The missing skill is architectural: knowing which layer you are in, what belongs there, and what must not leak across layers.

Real symptoms of the gap (you may recognize yourself):

  • Your pick-and-place works… as one 800-line script nobody can modify.
  • Changing the gripper means editing motion code in six places.
  • Your vision code publishes poses in the wrong frame and you debug for a week.
  • Everything works in simulation and you have no idea what changes on real hardware.

Architecture Layer

The layer boundaries themselves — the product this lab actually teaches.

Files You Will Touch

  • docs/architecture.md — read the "Where Do I Put My Hands?" table now. You will not understand all of it yet; that is fine. You will return to it in every module.

Files You Should Not Touch Yet

src/ — still look-don't-touch.

Commands

None.

Step-by-Step Instructions

  1. Read docs/architecture.md.
  2. Note the neutral interfaces the application is built on: MoveIt for motion, std_srvs/Trigger for the gripper (/gripper/close, /gripper/open), a geometry_msgs/PoseArray for perception, and the LinkAttacher services (/ATTACHLINK, /DETACHLINK) for the simulated grasp. Those contracts are the skeleton of everything you will build.
  3. See how they stay the same across cells: the simulated UR5 and the real FR3WML satisfy the same interfaces with different backends behind them (a Gazebo bridge here, a vendor SDK there). That single idea is what makes the application portable — Modules 7 and 9 are the payoff.

What You Should See

The realization that "the application" is a small set of stable contracts plus replaceable backends — not a pile of scripts.

How to Modify This for Your Own Application

Take your dream application (or a task from your job/thesis) and try to name its layers: what is the robot? the tool? the perception source? the task logic? If you cannot fill a box, that is what the corresponding module will teach you.

Common Mistakes

  • Believing your task is "too special" for this structure. Bottle capping, bin picking, machine tending, palletizing — the case studies in this course all reduce to these same layers.

Checkpoint

You can list the six core interfaces and say, for each, which package serves it in sim mode (peek at the architecture doc — no memorization needed).

Expected Output

None — conceptual.

Next Step

03_what_you_will_build.md

Complete and Continue