Tillu - the Robot

by Mukesh_Sankhla in Circuits > Robots

3897 Views, 36 Favorites, 0 Comments

Tillu - the Robot

profile.gif
DSC01744.JPG
DSC01757.JPG
DSC01426.JPG

Meet Tillu - The Robot, a unique fusion of advanced robotics and creativity designed to inspire learning and innovation! Powered by the UNIHIKER running Debian OS. Tillu leverages the capabilities of a robust control system to deliver lifelike movements and dynamic interactions. At the core of its design are 15Kg servo motor legs, enabling it to walk, dance, and perform complex movements with precision.

Tillu’s expressive personality comes alive with a variety of facial expressions displayed on its built-in screen, alongside a rich suite of sensors, including:

  1. A microphone for voice recognition.
  2. A 6-axis gyroscope for balance and orientation.
  3. A buzzer for sound-based interactions.
  4. And a display that adds an extra dimension of charm!

This robot is not just about functionality; it’s a platform for creative possibilities. Whether you're programming its movements using Python or exploring visual programming with Mind+, Tillu is the perfect companion for learners and enthusiasts alike.

Designed with Innovation

Inspired by the beloved Otto DIY robots, Tillu’s design journey involved extensive work in Fusion 360 for CAD modeling and precise 3D printing to bring it to life. Every detail, from its sturdy servo-driven legs to its modular design, is tailored for durability and aesthetics.

Endless Possibilities

With example codes already developed, Tillu can:

  1. Move in any direction: forward, backward, left turn, right turn.
  2. Express emotions with diverse facial expressions.
  3. Perform 10+ unique dance steps, making it the life of the party!
  4. Respond to voice commands through its advanced speech recognition system.

Why Build Tillu?

Building Tillu is not just a project; it’s a learning experience. Dive deep into robotics, explore the intricacies of programming, and unleash your creativity by customizing its movements and expressions. Whether you’re a student, hobbyist, or maker, Tillu is a steppingstone into the exciting world of robotics.

Let’s bring Tillu to life and push the boundaries of what robots can do!


Sponsored by JLCMC: Your Go-To Partner for Mechanical Parts!

Introducing JLCMC, the newest addition to the trusted JLC family, delivering high-quality mechanical parts at the best prices in the market. With a legacy of excellence established by JLCPCB, JLCMC is here to provide reliable and affordable solutions for all your mechanical needs.

Why Choose JLCMC?

  1. A Trusted Name:
  2. JLCMC is built on the foundation of JLC services, a global leader in PCB manufacturing and prototyping. Their commitment to quality and customer satisfaction carries forward into their mechanical parts services.
  3. Unbeatable Prices:
  4. True to the JLC legacy, JLCMC offers mechanical parts at industry-leading prices, ensuring that your projects stay on budget without compromising on quality.
  5. Wide Range of Products:
  6. From precision-engineered components to custom solutions, JLCMC has everything you need to bring your ideas to life, whether you're a hobbyist or a professional.
  7. Global Trust:
  8. JLC services have earned the trust of millions of makers worldwide. With JLCMC, you get the same reliability, now in the realm of mechanical parts.

Check Out This Offers and Customized solutions from JLCMC:

  1. Aluminum Enclosure
  2. Aluminum Profile Frame
  3. Screw and Nut Set
  4. Linear Module JKK60 Series

Visit JLCMC.com to explore their offerings, claim your $19 coupons for the new user registration, and take advantage of the amazing year-end discounts. Join the growing community of makers and professionals who trust JLCMC for their mechanical needs.

Supplies

Untitled.png
DSC01504.JPG
DSC01502.JPG
DSC01506.JPG
DSC01513.JPG
DSC01510.JPG
DSC01507.JPG
DSC01508.JPG
DSC01509.JPG

CAD & 3D Printing

Tillu | The Robot #JLCMC #DFRobot #DIY
DSC01455.JPG
WhatsApp Image 2024-11-29 at 8.54.37 PM.jpeg
WhatsApp Image 2024-11-29 at 8.54.37 PM (2).jpeg
WhatsApp Image 2024-11-29 at 8.54.37 PM (4).jpeg
WhatsApp Image 2024-11-29 at 8.54.37 PM (3).jpeg
WhatsApp Image 2024-11-29 at 8.54.37 PM (5).jpeg
DSC01469.JPG
DSC01486.JPG
DSC01463.JPG
DSC01464.JPG
DSC01470.JPG
DSC01488.JPG
DSC01461.JPG
DSC01462.JPG
DSC01465.JPG
DSC01466.JPG
DSC01472.JPG

To bring Tillu to life, I started by designing the robot in Fusion 360, a versatile CAD software. Here’s a breakdown of the design process:

Design Overview

  1. Component Import: I imported all the standard components like the UNIHIKER, servo motors, and manually measured dimensions to create the battery manager board.
  2. Robot Body Design:
  3. Housing (Head): Designed to hold the heavy battery and UNIHIKERsecurely.
  4. Main Body (Center Frame): Acts as the structural backbone, connecting the head and legs while ensuring stability.
  5. Cover Panel: Enhances the aesthetics of the robot.
  6. Legs and Feet: Inspired by Otto DIY robots for smooth movement and balance.
  7. Headphone Design: Added for a fun, cool look, giving Tillu extra personality!
  8. Screwing Mechanism: The design incorporates a screwing mechanism for easy assembly.
  9. Accessibility: The back of the housing features slots for the power button and two USB Type-C ports—one for charging the battery and another for programming the UNIHIKER.

Modifications and Downloads

You can open the model in Fusion 360 to modify it as per your requirements. Alternatively, you can directly download the STL files for 3D printing.

3D Printing Requirements

Below is a list of parts to print:

1x Housing.stl

1x Main.stl

1x Visor.stl

1x Cover.stl

1x Servo Housing Right.stl

1x Servo Cover Right.stl

1x Servo Housing Left.stl

1x Servo Cover Left.stl

1x Right Leg.stl

1x Left Leg.stl

1x Head Phone P1.stl

1x Head Phone P2.stl

2x Head Phone P3.stl


Maker World

Color Scheme: I used dark gray and orange filament to give Tillu a sleek dual-colored look.

3D Printed Parts Assembly

DSC01516.JPG
DSC01517.JPG
DSC01523.JPG
DSC01521.JPG
DSC01401.JPG
DSC01414.JPG
DSC01400.JPG
DSC01688.JPG
DSC01689.JPG

Once all the 3D-printed parts are ready, it's time to assemble them. Some parts are designed to be printed in multiple pieces to minimize unwanted supports during 3D printing. Here's how you can assemble them step by step:

Assembling the Housing and Visor

  1. Parts Needed:
  2. Housing.stl (Gray)
  3. Visor.stl (Orange)
  4. Steps:
  5. Take the Housing (Head) part and locate the slot for the visor.
  6. Insert the Visor into its slot in the housing.
  7. Use a small amount of quick glue to secure the visor in place. Be careful to avoid excess glue for a clean finish.

The visor design adds an aesthetic dual-color line to the robot's face, giving it a distinctive personality.

Assembling the Headphones

  1. Parts Needed:
  2. Head Phone P1.stl
  3. Head Phone P2.stl
  4. Head Phone P3.stl (2 pieces)
  5. Steps:
  6. Dual-Color Printing: If you want a dual-color look for the headphone parts, use the filament change technique. Pause the print mid-way and switch filaments to achieve the desired effect.
  7. Once printed, align the four headphone parts:
  8. Attach Head Phone P2 to Head Phone P1.
  9. Attach both Head Phone P3 pieces to complete the headphone design.
  10. Although the parts are designed as snug fits, you can apply a small amount of glue if needed for extra durability.

Assembly Notes:

Ensure you handle the parts carefully to avoid smudging glue on the outer surfaces.

Allow the glue to dry completely before moving on to the next step.

Adding Connectors to Servo Motors

1.png
DSC01525.JPG
DSC01526.JPG
DSC01529.JPG
DSC01530.JPG
DSC01531.JPG
DSC01532.JPG

The servo motors come with their own connectors, but unfortunately, these are not compatible with the Unihiker’s connector pins. Therefore, we need to modify the connectors to ensure proper compatibility and connectivity.

Understanding the Connections

  1. The Unihiker board has three GPIO connectors (P21, P22, and P23) with PWM signals, but we need to connect four servo motors.
  2. To address this:
  3. We’ll use the available GPIO pins for the first three motors.
  4. The signal pin for the fourth motor will be soldered directly to P16 on the board.

Steps to Modify and Add Connectors

  1. Preparing the Connectors:
  2. Take the two dual-sided three pin connectors that come with the Unihiker board.
  3. Cut them in half, creating four separate connectors.
  4. Reserve three connectors for the servo motors and one for the touch sensor (used in a later step).
  5. Connecting the Servo Motors:
  6. Use two connectors to connect two servo motors separately. Follow the polarity and wiring diagram as shown in the image:
  7. Signal (Orange)
  8. 5V (Red)
  9. GND (Brown)
  10. Make sure the orientation of the connectors matches the diagram.
  11. Connecting Two Servos to One Connector:
  12. For the third connector:
  13. Connect the GND and 5V wires of both servos to the same connector.
  14. Route the signal wire of one servo to the connector.
  15. Leave the signal wire of the second servo open; this will later be soldered to P16.

Verify all connections for correct polarity and alignment with the provided wiring diagram.

Extending Push Button for Power ON/OFF

Circuits.png
DSC01534.JPG
DSC01535.JPG
DSC01538.JPG

The battery management board in this design includes a small push button for powering the robot ON and OFF. However, the button is not accessible due to the housing design and is too small for practical use. To address this, we will extend the functionality by adding an external tactile push button.

Requirements:

  1. Tactile Push Button
  2. Soldering kit
  3. Insulated wires for extending the connection

Steps:

  1. Identify the tiny built-in push button on the battery management board.
  2. Note its connection points (two terminals).
  3. Attach two wires to the push button terminals. Ensure the wires are of sufficient length.
  4. Solder the free ends of the wires from the external push button to the same terminals as the connection diagram.

Connecting the Battery

5.png
4.png
DSC01553.JPG
DSC01554.JPG
DSC01556.JPG
DSC01557.JPG
DSC01555.JPG
DSC01558.JPG
DSC01549.JPG

In this step, we will prepare the Unihiker board's power supply using the battery management board and ensure seamless programming through the same USB Type-C connector. By creating a custom extended connector, we will allow simultaneous power delivery from the battery pack and access to the Unihiker’s USB Type-C port for programming.

Requirements:

  1. USB Type-C extension cable.
  2. Battery management board.
  3. Soldering kit (soldering iron, solder wire, heat shrink tubing, etc.).
  4. High-quality wires (to handle power load).

Steps:

  1. Take the USB Type-C extension cable and strip the insulation near the Female Connector end.
  2. Identify the G(GND) and V(Vcc) terminals.
  3. Solder two high-quality wires to the GND and VCC terminals of the Female Connector.
  4. Take the open ends of the wires soldered to the USB connector and attach them to the GND and 5V output terminals on the battery management board.
  5. Refer to the connection diagram for clarity.
  6. Use heat shrink tubing or insulation tape to cover the exposed soldered connections on the USB Type-C extension cable.

Adding Connector to Touch Sensor

2.png
DSC01588.JPG
DSC01589.JPG

Requirements:

  1. Touch Sensor module
  2. Compatible connector (taken from the altered Unihiker connectors from Step 3)
  3. Soldering kit
  4. Jumper wires (if needed)

Steps:

  1. Take one of the unused connectors prepared in Step 3.
  2. Solder the wires from the connector to the touch sensor pins as shown in the circuit diagram above.

Programming and Testing

3.png
DSC01564.JPG
Screenshot 2024-12-13 125837.png
Screenshot 2024-12-13 125847.png
Screenshot 2024-12-13 125855.png
Screenshot 2024-12-13 125934.png
Screenshot 2024-12-13 125941.png
Screenshot 2024-12-13 131203.png
Screenshot 2024-12-13 131505.png
Screenshot 2024-12-13 131540.png

In this step, you will program the Unihiker board and test the circuit connections:

Set Up Connections:

  1. Connect all servos & touch sensor as shown in above diagram and Type-C battery pack that you prepared in earlier steps.
  2. Do not solder the open wire for the 4th servo yet.

Install Mind+:

  1. Download and install the Mind+ software from https://mindplus.cc/en.html.
  2. Launch the software after installation.

Prepare the Unihiker in Mind+:

  1. Connect the Unihiker to your PC using a USB cable.
  2. In Mind+, click on "Extensions" located in the bottom-left corner.
  3. Select "Unihiker" from the list, then click "Back" to return to the main menu.

Enable Code Mode:

  1. In Mind+, click on "Code" to switch to the coding interface.
  2. Connect to the Remote Terminal by selecting the correct COM port for the Unihiker.
  3. Once connected, you should see the Unihiker's file system displayed on the right-hand side.

Upload the Code:

  1. Download the provided folder from the Tillu GitHub Repository.
  2. Unzip the downloaded files to access the Tillu folder.
  3. Drag and drop the entire Tillu folder into the Unihiker's file system. This will upload all the necessary files and modules to the Unihiker.

Run a Test Program:

  1. Open the forward.py file located in the Tillu folder and run the program.

Test with the Battery Pack:

  1. Unplug the Unihiker from the PC.
  2. Turn on the battery module. The Unihiker should power on.
  3. Use the navigation buttons on the Unihiker to locate the forward.py file in the root folder.
  4. Select and run the program directly on the Unihiker.
  5. The servos should respond, and the touch sensor should register inputs.

Important Notes:

  1. If any component doesn’t respond as expected, double-check the connections, wiring.
  2. Ensure the battery pack is sufficiently charged before testing.

Mounting Unihiker

DSC01568.JPG
V1.gif
DSC01571.JPG
DSC01573.JPG
DSC01576.JPG

Materials Needed:

  1. Unihiker board
  2. 3D-printed Unihiker mount
  3. 3 x M3 screws
  4. Battery pack

Steps:

  1. Connect the Type-C cable from the battery pack to the UniHiker board through the designated slot in the mount.
  2. Position the 3D-printed Unihiker mount so that it aligns with the mounting holes on the Unihiker board.
  3. Use the 3 M3 screws to fasten the mount to the Unihiker board.

Downloads

Mounting Touch Sensor

DSC01590.JPG
V2.gif
DSC01595.JPG
DSC01594.JPG
  1. Take the touch sensor and apply a small amount of glue.
  2. Position the touch sensor onto the housing body, hold it in place for a few seconds until the glue sets.

Downloads

Mounting the Battery

DSC01577.JPG
DSC01579.JPG
DSC01580.JPG
DSC01581.JPG
DSC01585.JPG
DSC01587.JPG
DSC01598.JPG

In this step, you'll securely mount the battery pack to the robot's housing:

Materials Needed:

  1. Battery management board
  2. Second Type-C extension cable
  3. M2 screws
  4. Screwdriver

Steps:

  1. Take the second Type-C extension cable, plug it into the battery management board securely.
  2. Align the battery pack with the pre-designed screwing holes on the housing.
  3. Using M2 screws, attach the battery pack to the housing.

Assembling Hip Motors

V3.gif
V4.gif
DSC01599.JPG
DSC01601.JPG
DSC01603.JPG
DSC01604.JPG
DSC01606.JPG
DSC01608.JPG
DSC01609.JPG
DSC01611.JPG
DSC01614.JPG
DSC01613.JPG

In this step, we will attach the hip servo motors to the robot's main body:

Materials Needed:

  1. 2 Servo motors (hip motors)
  2. M2 screws (from the servo pack)
  3. Small screwdriver

The servo motors cannot be directly mounted into the main body slots because the servo wires on the side collide with the walls of the slot.

To resolve this, we need to temporarily disassemble part of the servo motor housing.

Steps:

  1. Remove the screws holding the bottom cover of each servo motor using a screwdriver.
  2. Carefully separate the bottom part of the servo motors.
  3. Place the bottom part of the servo motor housing into the slot in the main body first.
  4. Align the servo motor with the slot and gently position it|
  5. Once the servo motor is positioned correctly, reattach the bottom part to the servo motor.
  6. Tighten the screws you removed earlier to close the servo housing securely.
  7. Use the M2 screws provided in the servo pack to attach the servo motor to the main body.


Downloads

Assembling Feet's

DSC01615.JPG
DSC01617.JPG
V5.gif
DSC01619.JPG
DSC01620.JPG
DSC01621.JPG
DSC01622.JPG

Materials Needed:

  1. 2 Servo motors (connected to one common connector)
  2. 2 Servo motor housings (left and right)
  3. 2 Servo motor covers (left and right)
  4. M2 screws (from the servo pack)
  5. Quick glue

Steps:

  1. Take the two servo motors previously connected to a common connector and the foot servo motor 3D printed parts.
  2. Insert each servo motor into its designated housing, ensuring the orientation aligns with the housing structure.
  3. Use the M2 screws from the servo pack to fasten each servo motor to its housing.
  4. Take the cover, align the shafts and snap the covers onto the housings by pressing them gently.
  5. Apply a small amount of quick glue around the edges of the covers where they meet the housings.

Downloads

Assembling the Legs

DSC01634.JPG
DSC01628.JPG
DSC01629.JPG
DSC01630.JPG
DSC01632.JPG
DSC01633.JPG

Materials Needed:

  1. 2 3D-printed legs
  2. 4 Servo arms
  3. M2 screws

Steps:

  1. Take 4 servo arms that came with the servo motos and modify two of the servo arms by cutting them in half as shown in the provided image.
  2. Align the servo arms with the designed slots on the 3D-printed legs, refer to the orientation in the image to position the arms correctly.
  3. Secure each servo arm to the leg using the M2 screws.

Enabling Auto Run (On Boot)

DSC01691.JPG
DSC01692.JPG
DSC01695.JPG
DSC01694.JPG
DSC01696.JPG
DSC01697.JPG
DSC01700.JPG
DSC01699.JPG
DSC01698.JPG

Use the navigation buttons on the Unihiker to access the system menu.

Enable Auto Boot:

  1. Navigate to Service Toggle → Auto Boot.
  2. Toggle the option to Enable.

Set the Program to Auto Run:

  1. Navigate to Run Programs → root/ → main.py.
  2. Select main.py and run it once.

Running the program manually confirms it as the default program to execute during boot.

Power off and restart the Unihiker to confirm that main.py runs automatically.


If the Unihiker has already been mounted to the housing, the navigation buttons may not be accessible. In this case, you can connect a mouse via the Unihiker's USB port to perform these steps as I did.

Mounting Unihiker to the Head

DSC01639.JPG
DSC01641.JPG
DSC01644.JPG
DSC01646.JPG
DSC01648.JPG
DSC01649.JPG
DSC01650.JPG
DSC01651.JPG
  1. Take the Unihiker board that has been previously prepared and mounted on its custom 3D-printed mount.
  2. Plug in all connectors, including:
  3. Battery pack via the Type-C connector.
  4. Servos 1, 2, and 3
  5. Touch Sensor
  6. Solder the 4th servo motor signal wire to P16 on the Unihiker.
  7. Place the Unihiker assembly, align the mounting holes within the housing (head).
  8. Use M2 screws to fasten the Unihiker assembly to the housing firmly.

Main Body Assembly

DSC01654.JPG
DSC01655.JPG
V6.gif
DSC01658.JPG
DSC01657.JPG
DSC01659.JPG
DSC01660.JPG
DSC01661.JPG

Position Data Type-C Connector (Programming and Charging):

  1. Locate the Type-C data port slot on the housing.
  2. Carefully position the Type-C connector in its designated slot and use quick glue to secure it in place.
  3. Similarly, position the charging connector and secure it using quick glue.

Position the Tactile ON/OFF Push Button:

  1. Find the slot for the tactile ON/OFF push button on the housing.
  2. Position the push button in the slot and use some quick glue to ensure it stays in place.

Main Body Assembly:

  1. Take the main body and carefully position it onto the housing.
  2. Align the holes for the screws, tuck all wires neatly inside the housing, ensuring no wires are pinched.
  3. Make sure the two servo leg wires are routed outside the assembly from the designed slots.
  4. Use 5 M2 screws to secure the main body to the housing.

Downloads

Cover Assembly

DSC01664.JPG
V7.gif
DSC01665.JPG
DSC01667.JPG
DSC01668.JPG
  1. Take the cover and align it with the main body assembly.
  2. Use 3 M2 screws to fasten the cover to the main body assembly.

Downloads

Final Assembly

DSC01673.JPG
DSC01676.JPG
Screenshot 2024-12-13 131516.png
V8.gif
V9.gif
DSC01681.JPG
DSC01684.JPG
DSC01685.JPG
DSC01689.JPG
DSC01690.JPG
V10.gif

Run Initialization Script:

  1. Plug the Unihiker into your PC.
  2. Run the initialize.py script. This will position all servos to a neutral 90-degree angle, ensuring proper alignment for assembly.

Attach the Legs:

  1. Take the two legs and mount them onto the servo motors at the 90-degree position.
  2. Use the screws provided in the servo pack to secure the legs firmly in place.

Attach the Feet:

  1. Take the foot servos that were assembled earlier.
  2. Position them on the legs at the 90-degree position.
  3. Tighten the foot servos using the same screws that were provided in the servo pack.

Mount the Head (Headphone):

  1. Take the headphone (head assembly) and carefully place it on the head of the robot.

Now that everything is assembled, powered on, and ready to go, you can start enjoying your Tillu robot.

Downloads

Code Explanation

Screenshot 2024-12-13 132923.png
Screenshot 2024-12-13 131636.png

1. Initialization

  1. Imports:
  2. The program imports several modules:
  3. random, threading, and time for randomization, multitasking, and timing.
  4. Custom modules:
  5. robot_control.py for servo movements​.
  6. facial_expressions.py for displaying video-based expressions​.
  7. speech_text.py for voice command recognition​.
  8. Pin for interacting with hardware buttons.
  9. Touch Sensor:
  10. Initializes a digital pin (Pin.P24) as an input touch sensor.
  11. Lock for Action Control:
  12. A threading lock (action_lock) ensures that only one action (touch or voice-based) runs at a time.

2. Key Functions

2.1. random_movement_and_expression

This function selects a random movement and a random facial expression. It performs these actions for 5 seconds:

  1. Randomization:
  2. Chooses a movement from 13 predefined dance movements (e.g., dance1, dance2)​.
  3. Chooses a facial expression (e.g., angry, heart)​.
  4. Parallel Execution:
  5. Movements and expressions are executed simultaneously using threads.
  6. Duration Management:
  7. Both threads run for 5 seconds before resetting to a neutral state (reset_positions and blink).

2.2. touch_listener

  1. Continuously monitors the touch sensor.
  2. If pressed:
  3. Ensures no other action is running (action_lock).
  4. Executes random_movement_and_expression.

2.3. voice_listener

  1. Continuously listens for voice commands using the microphone (listen_for_command)​.
  2. Command Mapping:
  3. Maps recognized commands (e.g., "forward", "backward", "tillu dance") to robot functions like forward() or random_movement_and_expression.
  4. Executes commands while ensuring no conflicts with ongoing actions.

2.4. cleanup

  1. A utility function for resetting the robot and stopping ongoing processes gracefully.

3. Main Program

The main() function:

  1. Starts with a neutral blink expression.
  2. Launches touch_listener and voice_listener in separate threads.
  3. Keeps running until interrupted (e.g., with Ctrl+C), at which point the cleanup function is called.

4. Custom Modules

4.1. robot_control.py​

  1. Controls the robot's movement through servos.
  2. Movements:
  3. Basic (e.g., forward, backward).
  4. Turns (left_turn, right_turn).
  5. Dances (13 distinct routines using synchronized servo movements).
  6. Ensures smooth transitions by setting servos to rest positions (reset_positions).

4.2. facial_expressions.py​

  1. Displays animated facial expressions using Pygame.
  2. Plays pre-recorded video loops (e.g., blink.mp4, angry.mp4).
  3. Ensures proper cleanup of resources.

4.3. speech_text.py​

  1. Recognizes voice commands using Google Web Speech API.
  2. Includes noise adjustment and error handling for smoother recognition.

5. Key Features

Interactivity:

  1. Users can trigger actions through touch or voice.

Parallel Execution:

  1. Facial expressions and movements are performed concurrently.

Extensibility:

  1. New movements or expressions can be added by expanding their respective modules.

Error Handling:

  1. Handles invalid voice commands and ensures mutual exclusion between actions.

Troubleshooting and Customization:

If your robot isn't performing as expected, you may need to adjust the initial servo angles to match your robot's setup. These angles define the robot's neutral position and are configured in the reset_positions function of robot_control.py:

servo_hip_right.write_angle(95)
servo_hip_left.write_angle(85)
servo_foot_right.write_angle(85)
servo_foot_left.write_angle(100)

Try modifying these values slightly to fine-tune the robot's posture and ensure proper movement. For example:

  1. Increase or decrease servo_hip_* values to adjust the leg angles.
  2. Adjust servo_foot_* values for more precise foot positioning.

Tip: Test small increments (e.g., ±5 degrees) and observe the changes to avoid servo overloading or misalignment.

Conclusion

DSC01711.JPG
DSC01712.JPG
DSC01713.JPG
DSC01716.JPG

Tillu is an exciting robotics project that combines high-quality hardware, flexible software, and custom 3D-printed design. The Unihiker board powers precise movements with servo motors, while the touch sensor adds interactivity. The robot is battery-powered, making it portable and perfect for on-the-go use.

The 3D-printed parts offer design flexibility, while Mind+ software supports both block programming and Python, making it suitable for learners of all levels. The use of Type C connectors for charging and programming simplifies setup and operation.

This project offers a hands-on learning experience, blending coding, electronics, and design in a fun and engaging way. Whether for personal use, teaching, or exploration, Tillu provides a solid foundation for anyone interested in robotics.

If you enjoyed this project, don't forget to hit the like button and leave a comment below. And if you've created your own Tillu, be sure to share your experience in the "I Made It" section.

Thank you! See you next time ;)