Hi,
I would like to start a project to build a robot that can draw, and in a second phase also paint. I am a fairly good java programmer but I am new to robotics, so I would like some help with
- how to interface with the robot from a java program running on a PC.
- how to convert all the requirements for the robot into a good robot design
- select the right hardware components to realize the design.
Currently I am thinking of a sort of advanced plotter design, but I am not even sure if that is a good choice:
- a rectanguler frame,
- a horizontal ruler that can move up/down,
- a pencil holder that can move left/right upon the ruler
- a means to switch pensils
- a means to position the pencil correctly wrt the canvas (see further, section about brushes)
But the problem is in the details. I think in order to have a quality system it should:
- be easy to adjust the dimension of the frame between small (order 40 cm) to rather large (up to 1,5 m)
- be as exact as possible wrt positioning in the x/y plane
- a drawing consists of hunderds, if not thousands of strokes, so the position of the canvas wrt the logical coordinate sytem should remain consistent over a long period of time.
- be possible to draw smooth curves, so no strokes that look as if they are made of little zig-zags in x and y direction.
- be able to switch between drawing materials (e.g pick a pencil with another colour or thickness from a set)
with paint and brushes it becomes even more difficult:
- one has to put paint on a brush. The paint comes from a palette.
When painting a stroke the brush can run out of paint, so new paint needs to be put on the brush from time to time.
problems with positioning the brush correctly wrt to the canvas:
- a brush has no circular symmetry but a rectangular one ,so when you pick up a brush it should be picked up in such a way that the robot arm knows wich is the long side of the brush.
- the brush should be hold in a certain angle wrt to the canvas (inclination)
- when making a curving motion, the long side of the brush should always stay positioned perpendicular to the path of the curve.
- the brush should toch “just enough” so that it slides upon the canvas.
Depending on the type of paint and the solvent used, a brush has an optimal speed and pressure applied to it to create an ideal stroke. What a real painter does is making a few test strokes on the side on a test canvas to “feel” what inclination/speed is needed and the applies this on the real canvas. In this proces tactile feedback comes first, then visual inspection. Is it possible to detect the pressure applied by a brush on a surface to create some sort of “tactile” feedback loop? I am also not afraid of trying to write some image processing software to make a visual feedback loop.
I know this is a fairly complex project that will take some time and resources, and I am not sure if all of it can be done. I just do not want to get stuck with parts that are not up to the job, or a design that is entirely wrong. I would really appreciate any feedback, even if it is about a small part of the question.