At a Stretch is a series of experiments in robotic 3D painting using an ABB industrial arm. We used Rhino + Grasshopper to design curves, parameterize stroke logic, and extract collision-aware robotic toolpaths. The arm carried a brush (paint as the deposition medium), turning drawings into continuous or discrete spatial strokes. Across three trials we progressively increased geometric complexity, surface difficulty, and stroke control—moving from single-line drawings on flat panels to non-planar surfaces and, finally, to multi-stroke compositions with variable brush tilt and thickness.
Our workflow began with curve generation in Grasshopper, where we defined stroke order, entry/exit moves, and speed ramps. Curves were then converted to robot poses with controlled TCP speed, approach/retract heights, and dwell minimization to prevent paint pooling. Throughout, we tuned Z-height to maintain contact without overloading the brush, and introduced orientation control (tool tilt) to modulate stroke width and edge character. The result was a lightweight pipeline that let us iterate quickly from digital lines to physical strokes while respecting reach, collision, and drip constraints.
We started with the single-line drawing technique: one continuous curve per composition. This established the fundamentals—smooth velocity profiles, corner rounding to avoid sudden stops, and consistent standoff to achieve evenly loaded strokes. The focus here was reliability: proving that a single, uninterrupted path could be executed at steady speed without drips, snags, or visible seams.
Next, we expanded to Kolam patterns—intricate motifs traditionally drawn as continuous loops—and mapped them onto non-planar surfaces. This required reparametrizing the curves to the target geometry and maintaining a constant brush contact along varying normal. We introduced gentle tool-normal blending through corners to keep paint deposition even while the arm traversed changing curvature, preserving the legibility of Kolam loops in relief.
Finally, we moved beyond continuity to paintings composed of multiple discrete strokes. Here the challenge was drip control at stroke starts/ends and during reorientations. We added variable motion profiles (faster lifts, shorter approaches), minimized dwell at corners, and sequenced strokes to manage brush load. In parallel, we explored tilted brush angles to steer the footprint and achieved varied line weights by coupling tool tilt with speed and contact pressure. This trial demonstrated fine-grained control over stroke character—directionality, taper, and thickness—while keeping the robot’s movements fluid enough to avoid paint buildup.
Across the three trials, At a Stretch established a robust, repeatable method for converting drawn intent into robotic strokes: from continuous single-line art to non-planar Kolam patterns and expressive multi-stroke compositions. The project shows how curve design, path planning, and orientation control can turn an ABB arm into a precise, versatile 3D painting tool—extending craft through computation without losing the nuance of the brush.