Machine Design Group

  • Zhaowei Hu
  • J Travis Russett
  • In collaboration with

  • Carme Maria Arnalot
  • Presentation Slide

    (click on image for video)


    J Travis Russett and Zhaowei Hu

    Our initial idea is to make a robot capable of performing Dishu, earth writing or practicing ephemeral calligraphy on the ground using clear water as ink. The imagined robot would be mobile using legs or wheels, battery-powered, use water through a brush to make drawings translated through computer-generated code.

    The following exercpt is from Francois Chastanet's book: Dishu: Ground Calligraphy in China.

    "The endlessly tracing texts composed of «hanzi» signs slowly disappear as water evaporates. This phenomenon, called «dishu», appeared in the beginning of the 1990s in a north Beijing park and soon spread to most major Chinese cities. Based on classic Chinese literature, poetry or aphorisms, these monumental letterings, ranging from static and regular to highly cursive styles, make the whole body break into spontaneous dance and infinite formal renewals. This street calligraphic practice corresponds to both a socializing need and an individual search for self accomplishment or improvement."

    Hanzi is typically written from a top to down left to right manner and line thickness is controlled by the force (or speed?) of the brush onto the surface. I think it would be wonderful if the robot is capable of mimicing this sequence and line width control.

    Design considerations for our Dishu Robot.

  • Simple : Easy to build
  • Simple : Easy to program
  • Capable of operating on outdoor surfaces (cracks, pebbles)
  • Battery powered
  • Working area size and characteristics
  • Wheels do not collide with drawing surface
  • Open source
  • Design components of our Dishu Robot.


  • Stepper motors for accurate motion.
  • Individually controlled for steering
  • (advanced) Speed control for variable line thickness
  • Balance

  • Multiple wheels each side?
  • Ball bearings for balance?
  • Effector

  • Stabilizer
  • Stem diameter adjustment
  • Water supply
  • Permits movement of brush not to obstruct flow
  • (advanced) Pressure sensitivity
  • Stage

  • Movement
  • Support effector
  • Frame

  • Batteries
  • PCBs
  • Water
  • Code

  • Drawing translation computer langauge
  • XYZ directives?
  • Code to wheel,a
  • Code to wheel,b
  • Code to stage
  • Code to effector
  • (advanced) Collision detection sensors
  • What might it look like?

    Despite being crude, these sketches portray an overall strategy for the dishu robot. This first sketch shows the movement systems. The servo controlled brush is connected to a movement axis while the stepper motor controlled wheels operate on another axis. The robot draws characters via a combination of axial movement by the two systems. At the end of a line, the robot swings around by moving one wheel at a greater rate than the other.

    A crazy variation on this may be to use walking legs. Also, this sketch at least recognizes the need for water, battery and controller space on the robot. Legs may work better for walking over cracks and small stones common to outdoor floors. It seems difficult to implement though.

    This sketch variation uses a tension wire system articulated with four motors for four cables, two for wheel motion, and one for the brush effector. I am now thinking there may be a delta, three motor, variation on this depending on the wheel configuration not interfering with the drawing surface.

    Fabricating a Gestalt Stage

    After much intense strategic consternation, we decided to begin our project by developing through the Gestalt framework. The framework is developed, we are beginners. Can we connect rotary stages on either side of a linear stage equipped with a brush effector?

    The idea is similar to a common CNC machine. Wheels mobilize the whole assembly along an infinite X axis. A stage holding an effector moves a limited distance between two wheels (Y). The effector moves a minimal distance along the Z axis.

    The first step is to fabricate a linear stage. Download the Rhinoceros file and you may need the grasshopper file as well. I had a problem opening the grasshopper file on my MacOS. After opening the file on a recent Windows build and saving it, it is now MacOS ready. I will include this version of the file in my links. Use with caution, while it appears to be in working condition, the graph is thick and I did not double check everything. I had 5mm thick cardboard on hand, so the material thickness was updated to this specification (Gestalt file is formatted in inches). Bake the Frame, Platform and Supports. Do some linework cleanup. Export the file to your laser cut format. If you have 5mm thick cardboard, save yourself some time and use my SVG linked below.

    A rounded 813mm x 830mm without padding.

    ♻ Gestalt Linear Stage 5mm thickness CUT! ♻
    ♻ Parastage grasshopper MacOS compatible ♻

    I had to use a laser cutter from another lab because the biggest piece exceeded our lasercut bed. I rushed optimizing the settings, due to a security guard trying to close shop. That decision lit a small fire that ruined a some pieces. Remember, poor decisions do not make pretty things.

    Score: speed55, powerMin80, powerMax85
    Cut:   speed10, powerMin100, powerMax100

    Cancelled that job. Increased the speed of the laser movement, reoriented the origin and started again. This time no fires and the pieces were mostly cut. Some pieces did not cut all the way through, maybe due to warping. In the future, I might consider cutting along the same lines twice with a combination of less power and greater speed. The settings I used:

    Score: speed60, powerMin80, powerMax85
    Cut:   speed20, powerMin95, powerMax100

    With a boxcutter, I liberated the unfolded Gestalt Stage. Tomorrow I will assemble.

    Constructing a Linear Gestalt Stage was fairly straightforward. There were a couple issues which I think may have been related to the 5mm cardboard thickness I used and how the Grasshopper graph accounts for that. I did not encounter any problems that required me to re-cut any of the pieces. First issue, these two holes were not cut on the end of the main piece. The holes are necessary for sliding in the rails. Glad I caught this before I folded the frame.

    In the inner stage structure, there is not enough space for the piece that grabs the threaded rod attached to the motor. This would be less of an issue if that piece was positioned to the outside, but the cardboard would still need some trimming around the bolt heads.

    This looks like a face.

    In the frame, the stage was out of alignment with the aluminum shafts and leadscrew. There was too much cardboard. I trimmed off the last flap on the frame and some material off the bottom side of the stage.

    If I need to fabricate more of this Gestalt module with 5mm cardboard, I can quickly adjust the pattern file to pickup these sizing mods. Regardless, everything is ready to be motorized with this piece of our robot mockup.

    To help with visualizing the other components of the machine, I added low-tech wheels and an end effector. Voila.

    I will post links to resources I have found helpful here.

  • [m]MTM : Modular Machines that Make : Cardboard CNC.
  • ">pyGestalt Github : The goods.
  • [modular] Machines that make : More Gestalt information.