load brushes with paint without feedback

A project log for If ( ) Then {Paint}

a machine to create canvas paintings of your favorite digital images

John OpsahlJohn Opsahl 07/23/2019 at 04:360 Comments

Imagine you are trying to load a brush with paint with the intent of painting on a canvas. You have a paintbrush in one hand and a cup full of paint in the other. The catch is that you can't see inside the cup. You eventually get good at loading the brush with a known amount of paint by dipping it a distance into the cup. But after a while you've dipped it so many times now that you don't know of how much paint is left in the cup and what side of the cup the majority of the remaining paint is on. This is the challenge of loading brushes with paint without feedback (i.e. The challenge is knowing how much paint is left in the cup and how the paint is distributed within the cup).

One way to solve this problem is to use paint with low viscosity like tempera or liquid acrylic paints. Low viscosity ensures that the paint always settles to a uniform level in the cup. After that, it only takes some testing to determine how far the paint level in the cup drops each time the brush is dipped into it. Better yet, use a large container of paint so the paint level drops so little after each brush dip that the change in paint level can be neglected.

Another way would be to use high viscosity paints like oil and acrylic and continuously monitor paint distribution in each cup during the entire painting process. If a brush continues to dip in one location of a cup of high viscosity paint, eventually a well will form. The next time the brush dips into that location for more paint it will just be dipping in air. To combat this, paint needs to be periodically stirred in each cup until wells are gone and all paint locations in the cup are at the same level. Alternatively, the brush could be commanded to dip in the cup of paint at different locations each time. 

I have used both methods with success but prefer to use high viscosity paints because of the rich color, less risk of dripping on the canvas, and three dimensional texture. At the moment, the cost of using high viscosity paints is being present during every second of the painting operation to make sure there is enough paint in each cup and to stir out any wells when they form. This is in conflict with the unsupervised operation proof of concept design requirement.

In search of a more complete method to load brushes with high viscosity paint, I stepped back and tried to understand the problem better. I knew that in order to repeatably apply a known amount of paint to a brush without feedback the geometry of the paint that the brush is dipping into has to be predictable. In the case of paint in a cup, the well formation and paint level are not easy to predict because they depend on factors like brush size and type as well as the viscosity specific to each brand of paint. Ultimately it's really just a paint side problem, the cnc machine can position the brush with accuracy and repeatability. 

I kept digging deeper into the requirements until I realized that canvas painters had already solved half of this problem. The solution is... that simple flat surface called the painters palette. Not only is a good place to mix paints but a flat surface also makes paint easier to control. Think about wiping a brush on the side of a paint can after dipping the brush in the paint. The same concept is at play on a flat palette surface. You press the brush against a hard surface to better control how much paint is loaded into the brush.

The second part of the solution is my own contribution. To achieve predictable paint geometry, I propose dispensing paint into beads (like a bead of caulk) on the palette. To load brushes with paint, start on one side of the bead and each time that the brush goes back for more paint move a little closer to the other side of the bead. So that every time the brush goes back for more paint it dips into a previously undistributed section of the bead. The brush movement to load paint on the brush can be the same each time (though translated over after each dip) because the paint geometry is predictable.

Using beads of paint on a flat palette is my best guess at a method to load brushes with a known amount of paint without feedback. Developing an automated process for dispensing beads of paint onto a palette turned out to be as much of a challenge as the six axis cnc.