Close
0%
0%

Homework Machine

A machine that writes stuff for you- in your own handwriting- so you don't have to!

Similar projects worth following
The aim of this project is to create a machine to write stuff for us- In our own handwriting- so we don't have to! When the project is complete, you should be able to upload a question to an app for generating the answers with ChatGPT and Wolfram alpha. A timeslot can be booked for your homework to be written by the machine using the same app. It will write the content in your own handwriting and turn pages of the book automatically until it's done writing.

This is not just any other pen plotter, it has the software and hardware to efficiently and effectively do your homework without getting caught by the teacher. More on that in the details section. I plan to open source this project for students to learn how to create their dream homework machine and develop their skills making one. Hopefully, this will help force the education system to move from rote memorization to a more skill development based learning system.

Working video:

Comparison with my handwriting:

Can you identify which ones were written by the machine? (It's close but not perfect yet)

So lemme explain...

The problem:

Rote memorization is not a path to understanding. Yet still, it is the bread and butter of the education system in many countries- mostly in Asia. Copy pasting 100 pages of lab records from a pdf by hand, writing the same problem 20 times, solving repetitive problems like a robot, etc won’t help us understand and apply the content. It is important to note that this is a problem with the system. I wouldn't blame teachers for teaching us the way they are taught to teach.

Here's a video that discusses the problem. (The point really starts at 2:00)

Here's another one:

It's hard for us to change the system, but we engineers can create solutions.

Existing solution: 

I was fed up with copy pasting assignments and 100 pages of lab record from a pdf by hand. I decided to make a pen holder tool for my ToolChanger 3D Printer to write the lab record for me. Here's what I did

  1. Measured the dimensions of my lab record book and created a template 
  2. Opened the template in Inkscape and copy pasted the content to be written
  3.  Converted the text to Hershey's text using the KM Laser plugin.
  4. Adjusted the text to align with the page template
  5. Converted the text to Gcode using the 4XiDraw plugin
  6. Align and clamp down the book to the machine
  7. Sent the Gcode to the printer to print.
  8. Repeat from step 2 for all the pages

Homework machine is not a new idea. It has been attempted before. This attempt where they taped a pen to their 3D printer and did a similar thing got 14M views and 250K likes on Twitter. ('Homework machine' is an extremely popular idea!) Almost all of the attempts on the internet uses the same workflow (Except this one that costs 200$ per font?) . Here are the problems with this workflow:

Problem with the existing solution: 

  • Easy to get caught: My teacher ended up catching me as the font was too perfect to be written by a human. All letters are the same and it does not look similar to my handwriting. 
  • The stroke path is not the same as written by a human.
  • The Gcode generation workflow is cumbersome. The whole process to generate the Gcode takes around 1 minute per page. The Gcode generation plugin alone takes over 20 seconds to process. 
  • Having to manually turn pages, clamp the book and run the next gcode is too too much work to be worthwhile.
  • Most pen plotter use a hobby servo to lift the pen. They are slow and are not meant for continuous operation. Hobby servos die very often in a pen plotter.
  • Writing fast will make the machine vibrate and the vibration will be visible in the print.

(Image showing a page written by my ToolChanger using Gcode generated using Inkscape and a single line font that came with one of the plugins. This got caught by the teacher)  


The Solution:

After the lab teacher caught me and asked me to rewrite the 100 pages by hand, I decided to double down. Starting from software, I set out to create a machine to efficiently and effectively do your homework without getting caught by the teacher. Here's how:

Record your handwriting

The software needs to know your handwriting to write in your handwriting. Your handwriting stroke is recorded and saved in a format suitable for the Gcode generation python script to process. Please see the project log section to see how it's done now.

(Image shows the python GUI  app I hacked together to record handwritings)

Generate answers 

The access to ChatGPT is a gamechanger. The upcoming Wolfram Alpha plugin will likely make ChatGPT do accurate math. these plugins should fix the achilleas heel of ChatGPT. All you have to do is generate answers and / or copy paste the content for the Gcode generation software to process. 

(Image showing an assignment I wrote with the 1st generation handwriting...

Read more »

  • Font V2, Cursive & Machine Prototype

    Devadath P R05/03/2023 at 20:28 0 comments

    "Font V2" refers to the 2nd generation handwriting font recording method. There's a lot of progress since the previous update. They are: 

    • Made a python app to record your handwriting using a graphics tablet. The app records the stroke by saving the normalized coordinates of then pen's stroke. The recorded stroke's recorded coordinates are of high resolution. 
    • Made the Gcode generation python script support cursive handwritings 
    • Made a quick prototype of the homework machine mostly using the parts I had in stock.

    Lessons learnt for further progress:

    • Recording handwriting using a graphics tablet without a display is difficult for the user to get it right. You need some experience with it to draw your natural handwriting using it. This solution wont scale. 
    • Recording multiple versions of each character and randomly selecting one is not ideal. 
    • The machine's output is not perfectly smooth. Looking at the Gcode using a Gcode viewer, there seems to be a little jitter in the recording process that needs to be smoothed out.

    Up next:

    • Automate the book / page fixturing and page turning 
    • Set up input shaper to write fast without vibrations
    • Adopt a new medium to record handwriting- probably an android with a stylus.
    • Create a new method to make the writings look natural. Instead of recording multiple versions, the code should slightly vary the stroke in a random pattern to avoid letters looking the same. 
    • The flow between letters need to be perfected to look more natural

    I'm also thinking about alternate methods to record and process the handwriting. Record stroke SVG / vector? Create an ML model? Suggestions are welcome!

    Updates: 

  • Handwriting Font V1- June 2022

    Devadath P R05/03/2023 at 09:13 0 comments

    I have been documenting the progress since the start of the project by posting updates as stories on my Instagram. You can find the story highlights here

    Since the teacher caught me due to the unhuman regularity and neatness of a machine written text, I decided to record my own handwriting with Multiple versions of each character in the handwriting font (eg: "a1", "a2", "a3",) It was recorded using Inkscape's pen tool. Each letter was painstakingly converted to Gcode and All character's Gcode were combined into a file. The Gcode generation script uses this file as reference for my handwriting.

    The software to generate Gcode does the following:

    • Takes in all the content you want it to write and your handwriting font file as input. 
    • Places the text correctly in the correct line of the page.
    • Move to the next line either if all content in the line is written or of the line is filled.
    • Move to the next page if all the lines in the page are finished or if a page break is added   
    • Apply randomization to the letters for making  the text look more natural 
    • Create the Gcode for the machine as output.   

    This time it worked! The lab teacher ended up signing off my lab record as the text was completely different from the machine written one he saw before.  Another teacher familiar with my handwriting easily identified that It's not my handwriting. I used this font for months to write assignments and records as most of the teachers have no idea that I am writing these with a machine. They never complained. 

View all 2 project logs

Enjoy this project?

Share

Discussions

a.cornwell288 wrote 12 hours ago point

I'd be interested to see if you could connect this with a voice to text option so you can dictate in your own handwriting. Very interesting potential applications 

  Are you sure? yes | no

musakhanibarra wrote 05/27/2023 at 17:11 point

Ai?

  Are you sure? yes | no

Richard Hogben wrote 05/25/2023 at 20:27 point

Amazing, also more cat please :)

  Are you sure? yes | no

hamid wrote 05/13/2023 at 14:50 point

The spacing and baseline of natural writing often drifts. Some lines the letters are spread out more, some lines look cramped by comparison. The end of lines tends to get compressed as the writer tries to cram a large word at the end. The baseline tends to drift up and down, the writer is not always looking at what they are writing (especially if they are copying verbatim text) and so they drift up or down, then when they realize it the correct it by moving in the opposite direction until aligned with the baseline again. This up and down drift can be simulated and if used sparingly (most noticeable on just a few lines on the whole page, but applied to a much lesser degree to all the lines) to make the text look much more natural. This, in addition to random variation applied to each character would likely make the results indistinguishable from real human handwriting.

  Are you sure? yes | no

Lorenzo wrote 05/10/2023 at 07:49 point

The coreXY machine and the pen holder are from some open source project or it's from scratch? Nice work!

  Are you sure? yes | no

Devadath P R wrote 05/10/2023 at 07:54 point

I designed it from scratch to make use of the parts I had in stock (It's just a quick prototype). You can see the Fusion 360 3D model of the prototype in the gallery. I took some inspiration from the 'Jubilee' 3D printer's series elastic actuator and the Voron 3D printer's belt path. Other than that, it's a completely novel design. 

I'll open source the design once the project is a bit more mature

  Are you sure? yes | no

RonW wrote 05/08/2023 at 19:15 point

Very fun project. Sadly, would not have helped me. When I was in school, our lab books were for recording measurements and results while performing experiments. Our lab reports were required to be typed or printed on my school's computer lab printer. Written answers were for in-class exams.

I am intrigued by the cursive writing version, since in cursive, the form of each letter is affected by the preceding letter, especially lowercase s.

  Are you sure? yes | no

Devadath P R wrote 05/09/2023 at 04:23 point

I guess you were lucky enough not to need a homework machine then! It's quite different here, we have a shit ton to write from home. The lab records have lengthy "Theory" and"Procedure" sections we have to copy paste from a pdf by hand from home. One sem, there was almost 100 pages to be handwritten! Insane right? That's what made me start this project. 

The flow between the letters is not perfect yet. The tail of the current letter just touches the next letter where it ends. I'm working on improving the flow.

  Are you sure? yes | no

mikeafish wrote 05/08/2023 at 16:15 point

Really cool project! My only recommendation might be to use a slightly softer table material (perhaps a leathery rubber/silicone/PU) to smooth out the penstrokes.

Another variation could include "trailing" the line of text up/down or taller/narrower. You could also design a moving "palm" that holds the paper down and creates characteristic wrinkles/imprints in the page.

  Are you sure? yes | no

Devadath P R wrote 05/09/2023 at 04:18 point

Yup, that's right! I do have a rubber band in series with the string driven pen lift actuator to get the same effect of the softer table material (it's a series elastic actuator)

I plan to implement force control so that the height of the page from the table doesn't matter. It should be possible to control the force applied to get the same effect as you mentioned.

  Are you sure? yes | no

gwfami wrote 05/08/2023 at 13:44 point

I disagree on the blanket idea that rote learning is bad. 

Rote memorization is required in certain subjects, i.e., math, science, spelling.  I can see this as a "cheat" to do other kinds of written homework however.  Who likes to write english papers.

  Are you sure? yes | no

RonW wrote 05/08/2023 at 18:52 point

Some memorization is required, even in math and science. But, to really do math and science requires understanding. When you understand, you can derive the formulae as you need them, rather than rely on memorizing. The exams I did best on were like reading comprehension: Each section was a paragraph or 2 followed by several questions. If you were actually keeping up in class, labs and homework, the questions were easy to answer.

(Of course, there were students who complained that the material wasn't covered in class. That was only slightly true. The classes went over principles and the framework for deriving answers, but not actual answers. The exam questions required us to actually do the derivations.)

  Are you sure? yes | no

gwfami wrote 05/08/2023 at 23:29 point

I taught science for many years, the last of which was at the undergraduate level at OSU.  If you know certain basics, you can derive the rest.  A big however in that is the students are not learning (i.e. memorizing basic math/chemistry/biology functions) what they should and when they should.  No amount of wishful thinking is going to work.  I've had top of the line students actually pull out their calculators to add simple numbers, they never learned their times tables.

  Are you sure? yes | no

RonW wrote 05/10/2023 at 17:10 point

gwfami wrote:

> I've had top of the line students actually pull out their calculators to add simple numbers, they never learned their times tables

They might have learned their times tables, but forgotten. By the time I reached high school (grades 9 - 12), calculator use was very common and tacitly encouraged. Only programmable calculators were not allowed.

For a while, I continued to calculate in my mind, but trigonometry quickly had me using a calculator and I soon forgot how to calculate in my mind.

  Are you sure? yes | no

Devadath P R wrote 05/09/2023 at 04:14 point

Some amount of rote memorization is needed, I agree. Education system in Asia is not the same as in US/Europe. Here, students are taught to maximize marks using rote memorization almost exclusively- that's bad. I guess it probably has something to do with the larger population and therefore, extreme competition. Please see the videos I linked in the details part. 

  Are you sure? yes | no

aaaaaa wrote 05/08/2023 at 10:30 point

meybe using this? https://en.wikipedia.org/wiki/Palmer_Method

  Are you sure? yes | no

Devadath P R wrote 05/09/2023 at 03:58 point

Thanks, I'll look into it.

  Are you sure? yes | no

Kalin Kochnev wrote 05/05/2023 at 20:04 point

Do you plan on open sourcing the models/code?

  Are you sure? yes | no

Devadath P R wrote 05/06/2023 at 03:37 point

Yes, I'll be releasing everything once the project is mature enough to do so. 

  Are you sure? yes | no

Devadath P R wrote 05/11/2023 at 19:42 point

Update: I have uploaded the code to my Github. I wouldn't recommend using the code in another machine. It may break stuff if not configured properly 

  Are you sure? yes | no

aaaaaa wrote 05/05/2023 at 14:23 point

add other language support for example Polish language

and sell this in tinde

  Are you sure? yes | no

Devadath P R wrote 05/05/2023 at 18:58 point

Will add more languages once everything is all set and done with english. 

  Are you sure? yes | no

aaaaaa wrote 05/08/2023 at 10:28 point

can You put gcode for normalgrbl 3d printer?

It will be interesting how look like this same code on different devices

  Are you sure? yes | no

Kalin Kochnev wrote 05/04/2023 at 15:15 point

This is baller. Wrote memorization rarely works. Good job outsmarting the system.

  Are you sure? yes | no

Devadath P R wrote 05/05/2023 at 18:57 point

Thanks! Hope this will influence some changes in the system :)

  Are you sure? yes | no

Anthony wrote 05/02/2023 at 17:46 point

This project-- LOL.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates