Message Boards Message Boards

[GIF] Robot Painting Art from Images

GROUPS:

A few months ago, @Silvia Hao post a topic for Stippling Drawing, we disussed a little bit for robot painting as well. Here I show a small example, so that more members can visualize and play a little bit more with robot painting. There is some gaps between an artifical image to an robot/physical painting.

Robot painting, the method is very simple, only 3 steps.

1. Prepare an image data to robot plot data;

    image = yourImage;
    pts = PixelValuePositions[
       ImageAdjust[ColorQuantize[ColorConvert[image, "Grayscale"], 2]], 0];
    length = Length@pts;
    tour = pts[[FindShortestTour[pts][[2]]]];
    trajectoryData = {2 + #[[1]], -13 + #[[2]], 0} & /@ (0.12*tour);

2. Using robot forward and inverse kinematics;

    InverseSCARA = 
      Compile[{{px, _Real}, {py, _Real}, {pz, _Real}, {\[Alpha], _Real}, \
    {judge, True | False}},
       Module[{L1 = 10, L2 = 7, d4 = 5, c2, s2, c1, 
         s1, \[Theta]1, \[Theta]2, d1, \[Theta]4},
        c2 = (-L1^2 - L2^2 + px^2 + py^2)/(2 L1 L2);
        s2 = If[judge, Sqrt[1 - (c2^2) ], -Sqrt[1 - (c2^2) ]];
        c1 = -((-L1 px - c2 L2 px - s2 L2 py)/(px^2 + py^2));
        s1 = -((s2 L2 px - L1 py - c2 L2 py)/(px^2 + py^2));
        \[Theta]2 = Mod[Simplify[ArcTan[c2, s2]], 2 Pi] + Pi;
        \[Theta]1 = Mod[Simplify[ArcTan[c1, s1]], 2 Pi];
        d1 = pz + d4;
        \[Theta]4 = Mod[\[Theta]1 + \[Theta]2 - \[Alpha], 2 Pi];
        {d1, \[Theta]1, \[Theta]2, \[Theta]4}]];

3. Manipulate a robot and feed data for robot trajectory. I use FindShortTour as quick way to convert point to a tour. The painting style is few, only two ways (point and lines) so far.

enter image description here

enter image description here

Below robot's self-portrait is interesting, does have some Nest sense.

enter image description here

Attached is a demonstration file for playing:

Attachments:
POSTED BY: Frederick Wu
Answer
2 years ago

enter image description here - another post of yours has been selected for the Staff Picks group, congratulations !

We are happy to see you at the top of the "Featured Contributor" board. Thank you for your wonderful contributions, and please keep them coming!

POSTED BY: Moderation Team
Answer
2 years ago

I am sure @Silvia Hao will really enjoy this WL code, nicely done! Do you think this somehow can help the design of an actual robot and do you plan to do that?

POSTED BY: Sam Carrettie
Answer
2 years ago

Group Abstract Group Abstract