This step physically deposits one layer of metal and simultaneously captures all sensor telemetry into a ROS 2 bag.
What Happens
- The operator (or automation script) launches
ros2 bag recordto capture the topics listed below. gcode_file_parser_clientsends the G-code toolpath to the KUKA robot via the EKI interface. The robot moves along the commanded path while the wire-arc welding system deposits material.- During the motion the
wire_stickoutnode continuously publishes/wire_stickout/err_surface_mm— the deviation of the observed surface from the expected height, measured by an array of welding-glass-shielded cameras mounted on the tool tip that track the arc's brightest point via blob detection.
gcode_file_parser_client :: GCode -> IO PhysicalDeposition
-- side-effects: robot motion, arc welding, sensor streaming
Commands
# Terminal 1 — start bag recording before the print
ros2 bag record -o L<N>_Z<ZZ> \
--topics \
/TSO_1/image_raw/compressed \
/TSO_0/image_raw/compressed \
/TSO_2/image_raw/compressed \
/cams/table_1/image_raw/compressed \
/cams/table_0/image_raw/compressed \
/kuka/pose \
/wire_stickout/err_surface_mm \
/kuka/velocity_cartesian \
/therm/image_raw/compressed \
/kuka/sequence_number
# Terminal 2 — execute the layer gcode
ros2 run gcode_file_parser_client gcode_file_parser_client <layer.gcode>
Naming Convention
Bag directories follow the pattern L<layer>_Z<nominal_z>, e.g. L21_Z48
means layer 21 at nominal Z = 48 mm.
Key Sensor: wire_stickout
The wire_stickout node uses an array of
cameras mounted on the tool tip, each shielded by a small glass welding-shade
to reduce arc brightness. These cameras detect the y-position of the arc's
brightest point (blob detection) and translate that into the real-time
weld surface position. During a calibration pass on the flat substrate
(layer 0), a baseline blob (x, y) position is established at a known
10 mm stickout. Subsequent layers compare the observed blob position
against this baseline to derive err_surface_mm — the signed deviation
of the real surface from the expected height.
| Topic | Type | Description |
|---|---|---|
/wire_stickout/err_surface_mm | Float64 | Surface height error (mm) |
/kuka/pose | PoseStamped | Robot TCP position |
Outputs
| Artifact | Location | Format |
|---|---|---|
| Rosbag | L<N>_Z<ZZ>/ | MCAP directory |