Draw Your Face in a Movie Poster Robot

Our group has had an incredible journey piecing together our robot together over the last 6 weeks. After building the CNC machine from scratch, we had to develop an idea that changed the nature of the CNC and used it in a completely new way than what was intended by it’s creators.

Concept: Create a robot that take a picture of the user, and then draw that user’s face as a character on a movie poster.


Our team had various design challenges we had to overcome. Some of the considerations we had to think about included:

  • Designing a method by which to hold a writing utensil. This is important as we needed the unit to flex just enough to provide a natural artistic stroke to the robotic gantry.
  • Designing the CNC bed to provide ample support, pressure and texture to the pen from above.
  • Determining the proper writing utensil
  • Converting an image from it’s original format to SVG, making it Black and White, then editing it so that the image is only composed of outlines.
  • Making sure the camera recognizes the user’s face
  • Determining where to place the cropped and converted image of a user’s face into the appropriate area on the movie poster


Method to Hold the Pen

We experimented with various types of ways to hold the pen using the original router holder. We ended up designing our own plate and 3D printing our pen holders for maximum flexibility and precision.



Designing the CNC Bed

We wanted to provide the proper surface for the pen to write on the bed. We created a bed out of acrylic, to make sure that the holes were covered. We then placed a thin sheet of foam and thicker poster paper on top to provide a firm, cushy and smooth surface to put paper on so the pen would easily glide while drawing.


Deciding the Proper Writing Utensil

We tested with various types of pens and markers. The way our machine is set up, it made the marker lines way too thick, so we opted to go with a ball-point pen, as it easily glides along the paper.



Computer Vision, Image Conversion and Process Flow

Our process flow is the following:


Select movie poster. Title it ‘poster.jpg’

Take image of user


Python script detects the user face on the movie posters

Select the face you want to swap with and swap faces


Convert File to Black and White & SVG



XYZ Progress Update

Our team had three goals this week:

1) Refine and stablize the pen plotter so that the pen is more secure

2) Draw a complex image and figure out file convesions from PNG to SVG

3) Experiment with various pens/markers
One thing we were impressed by was the level of precisions of the pen. Below you can see how precise fhe pen is.

We were impressed by the level of precision by the pen. If you can see below, the lines are incredily close together. We chose the dog image for it’s relative simplicity and then the following image of the girl to see if we could draw something thatbhad a few layers in the outline. The girl image took roughly 15-20 minutes to complete, so we can expect the movie poster to take that long. 

We need to figure out if we can use the Gcode to speed upthe drawing process.



Update: Movie Poster Drawing Robot

We got our robot drawing! We had to mess around with the wiring a bit, but we now have the robot drawing.

The Pen Plotter

We 3D printed the pen holder with 2 holes for the screw mounts. 

As we tested this layout, it was way to flimsy. It kept turning and becoming misaligned.

We then decided to create a backplate to prevent the twisiting and turned due to the ACME screw. This is to make sure the pen is stable enough for drawing.

We took the measurements from the steel plate and laser cut a new one with various holes for adjustment purposes. This set up works ideally for what we want to do.


We also lser cut a board that matched up with the screw holes on the base. This was to make sure that the surface was completely flat for drawing. 4 out of 6 of our holes were off, but that does not affect the positioning of the base plate as it’s held in place pretty firmly.

XYZ Project Proposal: Draw, Play, Decorate, Clean


Everyone will formally pitch an early robot idea (nothing written in stone) in class next week.  Have your verb and your specifics.  Think of ways you will actuate it.  Will it be a traditional X, Y, Z gantry?  What parts are you confident in, what parts are you worried about.  Bring anything that makes it more real: mockups, prototypes, images, and videos.  You will all present in class for a few minutes, be prepared to take questions.


Overall Theme

Overall I want to utilize computer vision into my project in some way.


Proposal Idea 1: The Line Drawing Robot

My idea is centered around automating the line drawing process on the millions of miles of motorways. This process generally has to be done a couple times a year, as wear and tear breakdown the quality of the roads, leading them to be re-paved and repainted. Having a XYZ robot on a chassis would make this process a whole lot easier, efficient and cost effective in the long run.


Some examples:


  • Moving chassis
  • Scale


Proposal Idea 2: Cake Decorator

Let’s make the process of decorating a cake easier! I wanted to add a twist with taking a picture of someone and it draws that person. Or a variant would be that it senses someone’s emotion and draws on a cupcake a quote to help them with that mood. Make them happy, make them happier, etc.


Proposal Idea 3: Sharpie Class Scheduler

Experiment with a method to create an interface for writing weekly class schedules outside of each class room that can be sent to the boards every Monday to save the paper that is wasted, more than 4,000 sheets per year can be saved and have something that looks cool on the floor.


Proposal Idea 4: Air Hockey Computer

I want to see if I could recreate this project. I’m very hesitant in recreating this as it’s already been done and there is lots of documentation that was done on this project and don’t think that would be a good way to properly learn. Open for suggestions.

Idea 5: Show Cleaning

place your shows on the bed and it runs through a database of sneakers and then views the shoe and then cleans the sneaker properly.