This step physically deposits one layer of metal and simultaneously captures all sensor telemetry into a ROS 2 bag.

What Happens

  1. The operator (or automation script) launches ros2 bag record to capture the topics listed below.
  2. gcode_file_parser_client sends 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.
  3. During the motion the wire_stickout node 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.

TopicTypeDescription
/wire_stickout/err_surface_mmFloat64Surface height error (mm)
/kuka/posePoseStampedRobot TCP position

Outputs

ArtifactLocationFormat
RosbagL<N>_Z<ZZ>/MCAP directory