Step 1 — Execute G-Code & Record Rosbag
This step physically deposits one layer of metal and simultaneously captures all sensor telemetry into a ROS 2 bag.
What Happens
Section titled “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 streamingCommands
Section titled “Commands”# Terminal 1 — start bag recording before the printros2 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 gcoderos2 run gcode_file_parser_client gcode_file_parser_client <layer.gcode>Naming Convention
Section titled “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
Section titled “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
Section titled “Outputs”| Artifact | Location | Format |
|---|---|---|
| Rosbag | L<N>_Z<ZZ>/ | MCAP directory |