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
- Read docs/architecture.md.
- Note the neutral interfaces the application is built on: MoveIt for motion,
std_srvs/Triggerfor the gripper (/gripper/close,/gripper/open), ageometry_msgs/PoseArrayfor perception, and the LinkAttacher services (/ATTACHLINK,/DETACHLINK) for the simulated grasp. Those contracts are the skeleton of everything you will build. - 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