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
Procedure
- DXF is created and stored
- DXF is called by the working script and parsed into robot poses using
ezdxf - The poses have a fixed z height and end effector orientation as this is a 2D demonstration
- The ROS interface and
Welderclass are launched - The Laser is armed and starts emitting; Welding begins using
comet_rpc -
ExecuteCartesianTrajectoryservice is used to send the rectangle trajectory to the robot and it executes - 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