a self - propelled printer comprises a processor ; an interface communicatively connected to the processor for providing at least information respective of a surface to be printed ; a memory communicatively connected to the processor , the memory containing instructions that , when executed by the processor , configure the self - propelled printer to at least render an image for printing respective of at least a portion of the information received via the interface ; a print head communicatively connected to the processer for printing on the surface based on the rendered image ; a motor control unit communicatively connected to the processor for propelling the self - propelled printer via at least one motor based on the rendered image ; and at least a rotary element connected to the at least one motor , wherein the rotary element is configured to move in at least two directions with respect to the surface based on movement of the at least one motor .