Automated Additive Manufacturing

Manufacturing Futures Institute, Carnegie Mellon University

Role: Industrial Robotics Intern
Mentor: Shobhit Aggarwal

Responsibilities
Creation of a ROS-Industrial Interface for Fanuc and ABB Robot Arms
Application: Lincoln Electric Classmate Laser – DXF Pipeline for Additive Manufacturing

DXF Pipeline for Additive Manufacturing


Left: Input DXF File | Middle: Lincoln Electric Classmater Welding Process | Right: Weld Output
Procedure
  1. DXF is created and stored
  2. DXF is called by the working script and parsed into robot poses using ezdxf
  3. The poses have a fixed z height and end effector orientation as this is a 2D demonstration
  4. The ROS interface and Welder class are launched
  5. The Laser is armed and starts emitting; Welding begins using comet_rpc
  6. ExecuteCartesianTrajectory service is used to send the rectangle trajectory to the robot and it executes
  7. Laser is disarmed and welding ends

Website: LE Classmate ROS

Additive Manufacturing Process



Custom ROS-Industrial Interface



Features

Interactive Digital Twin - allows moving/observing the robot using a GUI
Broadens scope beyond robot-specific programming - robot can be programmed in both Python and C++
Custom ROS Services allow for trajectory execution with specifications using reliable path planners (Pilz, OMPL, CHOMP)

  • Go to a goal point
  • Follow a trajectory (multiple goal points)
  • Follow a trajectory in a cartesian path

Keyence PLC I/O Control

The ROS interface provides services and topics, interfaced using comet_rpc, to enable I/O control.
All I/O states are polled and published periodically on topics

  • /io_states_AIN - Analog Input Pins
  • /io_states_AOUT - Analog Output Pins
  • /io_states_DIN - Digital Input Pins
  • /io_states_DOUT - Digital Output Pins

ROS Services to access I/Os

  • /set_io_value - allows setting of all types of I/Os (analog/digital)
  • /read_io_value - allows reading of all types of I/Os (analog/digital) Hence, all peripheral devices connected to Fanuc I/Os can be controlled using the ROS interface and comet_rpc has been abstracted

Project Impact

Before After
Only structured text and teach pendant programming Familiar languages - Python / C++
Trajectories have to be manually taught by jogging the robot Trajectories can be generated using MoveIt
No inputs supported Complex Inputs Supported
No GUI or robot state feedback Interactive GUI with real-time feedback
Robot could only be controlled by teach pendant Robot can be controlled using GUI, user code and CLI


Project Links

Website: Fanuc ROS1
GitHub: fanuc_ros1