Yozh robot

Small tracked robot, inspired by Pololu Zumo - but with many improvements

Similar projects worth following
This robot was created to teach robotics class at a summer camp, SigmaCamp. I wanted something small, programmable in python, and easy to extend. Not finding what I wanted, I decided to make my own.
Full documentation in
Source code and design files in Github:

Why build my own?

Sure, there are dozens of existing robots. However, when I started choosing a robot for my summer camp, none of them seemed to be quite what I wanted. I wanted something: 

  • compact (and not too tall)
  • programmable in Python, preferably with an existing library providing high-level functions such as "turn 90 degrees"
  • with decent collection of sensors: at least 5 sensor reflectance array (for line following), distance sensor, encoders on motors. An IMU and sensor fusion to determine absolute orientation was highly desirable, too. And an OLED or TFT display for messages, too!
  • neat looking, no spaghetti of loose wires 
  • extendable: it should be possible to attach additional electronics and mechanical attachments. In partiular, I wanted to use Huskylens camera by DFRobot, and forklift or grabber attachments

I looked at Pololu's Zumo and 3 pi+,  DF Robot's Maqueen Plus, and Pimoroni's Trilobot. None of them satisfied all my requirements, so I built my own. It took a while - designing the boards, writing the library, and more, but at the end it was worth it. 

Key features

  • Dimensions: Length: 12.4 cm; width: 13 cm; height: 4.8 cm 
  •  Power: one or two 18650 Li-Ion batteries 
  •  Wheels and motors: uses silicone tracks and 6V, HP, 75 gear ratio micro metal gearmotors, both by Pololu. 
  •  Main controller: ESP32-S3 Feather board by Adafruit, which serves as robot brain. It is programmed by the user in CircuitPython, using a provided CircuitPython library. This library provides high-level commands such as move forward by 30cm 
  •  Electronics: a custom electronics board, containing a secondary MCU (SAMD21) preprogrammed with firmware, which takes care of all low-level operations such as counting encoder pulses, controlling the motors using closed-loop PID algorithm to maintain constant speed, and more. 
  •  Included sensors and other electronics 
    •  240*135 color TFT display and 3 buttons for user interaction 
    •  Bottom-facing reflectance array with 7 sensors, for line-following and other similar tasks 
    •  Two front-facing distance sensors, using VL53L0X laser time-of-flight sensors, for obstacle avoidance 
    •  A 6 DOF Inertial Motion Unit (IMU), which can be used for determining robot orientation in space for precise navigation (included firmware takes care of sensro fusion)
    •  Two RGB LEDs for light indication and a buzzer for sound signals 
    •  Four RGBW LEDs used as headlights 
  •  Expansion ports and connections: 
    •  Two ports for connecting servos 
    •  Two I2C ports, using Qwiic/Stemma QT connector 
    •  Several available pin headers for connecting other electronics 
    •  Yozh is compatible with mechanical attachments (grabber, forklift,…) by DFRobot.

Full documentation is available at


I used (previous version of Yozh for robotics class at SigmaCamp in 2021-2023. Among projects we did was mazerunner (fidn your way out of a maze) and warehouse robot (pick a container and deliver to one of several locations depending on the tag on the container; used Huskylens for reading April tags). See this video:

What does Yozh mean?

Yozh (Еж) is Russian for hedgehog. I always liked them.

Are you planning to sell this?

I was thinking of it, but they are not cheap - the sale price would be around $150. I am not sure how much demand is there for this, and I am not eager to run a crowdfunding campaign.

If you would like one, drop me a private message. 

  • Distance sensors and Huskylens

    Alexander Kirillov11/23/2023 at 21:29 0 comments

    Next project: use yozh together with a cheap AI camera from DFrobot, Huskylens.

    Task: find a "container" placed on the field, read the tag on it (AprilTag), pick it up and deliver to one of locations depending on the tag.

    I already had working circuit python library for Huskylens, so I used that.

    But there was a number of gotchas: 

    • Turns out tof distance sensors readings are much higher than real life distance if the object is not at the center of the field of vision but on the periphery. 
    • Huskylens can use one of two interfaces: I2C or UART. By default, it is set to "auto", selecting interface depending on the incoming signal. It doesn't really work; if you want reliable operation, you need to select the correct interface in general settings.
    • Huskylens can recognize apriltags reasonably well - if the camera is stationary. Trying to recognize the tag while, e. g. the robot is turning doesn't work.

    Thus, I used mixed strategy: using distance sensors for initial detection and approaching the object; once we are close, use Huskylens to read the tag and do the final course correction before picking it up.

    Here is the final result:

  • Testing IMU

    Alexander Kirillov11/19/2023 at 22:29 0 comments

    Tested turns using IMU.
    Not perfect but good enough.

  • Docs update: projects

    Alexander Kirillov11/18/2023 at 21:49 0 comments

    Updated docs, adding some projects we did with students in summer camp.

    Among the projects: exploring the maze, using wall following and pledge algorithms.


View all 3 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

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