Open-Source Software Architecture for Multi-Robot Wire Arc Additive Manufacturing (WAAM)
<|reference_start|>Open-Source Software Architecture for Multi-Robot Wire Arc Additive Manufacturing (WAAM): Wire Arc Additive Manufacturing (WAAM) is a metal 3D printing technology that deposits molten metal wire on a substrate to form desired geometries. Articulated robot arms are commonly used in WAAM to produce complex geometric shapes. However, they mostly rely on proprietary robot and weld control software that limits process tuning and customization, incorporation of third-party sensors, implementation on robots and weld controllers from multiple vendors, and customizable user programming. This paper presents a general open-source software architecture for WAAM that addresses these limitations. The foundation of this architecture is Robot Raconteur, an open-source control and communication framework that serves as the middleware for integrating robots and sensors from different vendors. Based on this architecture, we developed an end-to-end robotic WAAM implementation that takes a CAD file to a printed WAAM part and evaluates the accuracy of the result. The major components in the architecture include part slicing, robot motion planning, part metrology, in-process sensing, and process tuning. The current implementation is based on Motoman robots and Fronius weld controller, but the approach is applicable to other industrial robots and weld controllers. The capability of the WAAM tested is demonstrated through the printing of parts of various geometries and acquisition of in-process sensor data for motion adjustment.<|reference_end|>
@article{he2024open-source,
    title={Open-Source Software Architecture for Multi-Robot Wire Arc Additive
  Manufacturing (WAAM)},
    author={Honglu He, Chen-lung Lu, Jinhan Ren, Joni Dhar, Glenn Saunders, John
  Wason, Johnson Samuel, Agung Julius, John T. Wen},
    journal={arXiv preprint arXiv:2408.04677},
    year={2024},
    archivePrefix={arXiv},
    eprint={2408.04677},
    primaryClass={cs.RO cs.SY eess.SY}
}