Page 81 - ESAM-1-4
P. 81
Engineering Science in
Additive Manufacturing TwinPrint: Dual-arm robotic bioprinting
increased degrees of freedom and do not naturally read seconds for a print is calculated based on the speed of the
G-code, a parsing approach was developed to extract the arm (v) and the total displacement (d ) of the arm, and the
T
required commands for each point from the G-code. formula is expressed as follows:
2.2.2. Geometry code (G-code) parsing t P = d T (1)
The Dobot Magician is compatible with a Repetier host 3D v
printing software that establishes communication between In terms of extrusion, the flow rate from all active
a single Dobot and the software, allowing users to load syringe pumps provides an approximate total flow rate
G-code files and 3D print, as is done with generic Cartesian for the extrusion at the tip of the needle. While it is an
3D printers. However, in this case, the aim is to integrate approximation due to material loss during extrusion,
two Dobot Magician arms for communication and printing, the effects are considered negligible. The movement of
which is beyond the scope of the Repetier Host software. the arms is synced with the speed of extrusion, which is,
Hence, a Python program was developed from scratch to decidedly, the summed-up flow rate of the active pumps.
achieve this goal. Because the default Dobot application Note that the F value of the G-code refers to the feed
programming interface (API) protocol is not designed to rate, or the print move, in which extrusion occurs. It is
accept G-code files, a G-code parser was first implemented essential that the speed setting is aligned with the rate of
in the Python program. For successful translation, the extrusion to avoid shearing and inconsistency in the case
parsing process included two essential steps: information of quickened movement, and an undesirable thickness in
extraction and instantaneous coordinate calculations. The the case of slower movements. Hence, the compatibility of
parser first scans the loaded G-code file of the 3D construct both speeds for the pumps and arm needs to be optimized
intended to be printed, line by line, looking for a specific to ensure optimal print quality.
pattern of interest, denoted by a letter G followed by a
number that indicates the type of geometry change. In 2.3. Robotic arms integration
addition, the G line provides information on the selected For the dual-arm integration, the TwinPrint system
positioning type (absolute or relative), XYZ coordinates, leverages Dynamic-link libraries alongside a Python API
and extrusion feed rate (denoted by F). For instance, G90 provided by Dobot to communicate with the robots. The
®
sets the positioning type to “Absolute” for the subsequent two robotic arms are connected via separate computer USB
G lines, which contain the XYZ geometric locations with ports and take turns in printing based on the number of
respect to the current location. layers specified for each arm by the user. The arms initially
When a G-code file is loaded into the Python program, agree on a global point in 3D space as a start point for the
instantaneous geometric coordinate recalculations are cooperative 3D printing to begin. The two robotic arms are
done based on the selected positioning type, and the new positioned facing each other with respect to the location
coordinates are stored temporarily in the system. Absolute of the plate. The arm’s maximum reachability in terms of
positioning moves the robotic arm exactly to the XYZ the x-axis must be taken into consideration; the farther the
coordinates, while relative positioning indicates how arm is placed, the less printing space it can cover. The user
far the XYZ point is from the current location. The user specifies and saves the set global point within the printing
specifies and saves a starting point to which each absolute workspace in the system, which acts as a reference point
coordinate is added. In the case of relative positioning, from which the 3D structure coordinates are recalculated
the XYZ coordinates of the starting point are only added by each arm separately. Therefore, precision when setting
to the first geometric location in the G-code. The rest the common global point is of utmost importance. Slight
of the coordinates are added, one by one, to the latest offsets from the robotic arm motors prove to be detrimental
accumulated value. to the print quality.
Furthermore, the number of layers in a 3D structure is For collision avoidance between the two arms, the
found by counting how many times the Z value is altered handing-over process is timed; only one arm moves at a
in the G-code file while parsing. Here, the Z value stands time to or from the printing workspace. In addition, the
for the height parameter in the print. This information is waiting location of each arm is at a particular distance
useful when splitting the layers between the two arms to away from the set global point. While the arm is waiting
send the recalculated coordinates associated with each for its turn, it is kept moving back and forth in a segment
layer to the appropriate arm, and to keep track of printing of 2 mm to avoid timeout.
progress, in terms of numbers of layers that have been In the case that the arms are working in tandem on the
printed and are still left. Moreover, the printing time (t ) in same 3D structure, they are bound to operate within the
P
Volume 1 Issue 4 (2025) 4 doi: 10.36922/ESAM025410025

