Skip to content

🤖 Full featured 21 DOF 3D Printed Humanoid Robot based on ATmega328P chip

License

Notifications You must be signed in to change notification settings

simonepri/roboprime

Repository files navigation

RoboPrime 🤖 License

Full featured 21 DOF 3D Printed Humanoid Robot based on ATmega328P chip

RoboPrime Hello

Description coming soon.

Press

The project has been featured here:

Maker Faire Il Messagero

Gallery

Some images done during the development process:

RoboPrime RoboPrime RoboPrime RoboPrime RoboPrime RoboPrime RoboPrime RoboPrime RoboPrime RoboPrime RoboPrime RoboPrime RoboPrime RoboPrime

Click on the image to enlarge.

Getting Started

Hardware

The total cost is about $60-$100. Depending on where you buy the pieces.

Amount Part
1 Arduino Pro Micro (Atmega328p)
1 HC-05 (Bluetooth)
2 74HC4017 (5-stage Johnson decade counter)
1 MPU-6050 (Gyroscope + Accellerometer UNUSED)
21 MG90S 9G (Servo motors)
2 5A DC-DC (Voltage step-down Used to power the servos)
1 Ad-hoc board (See wiring section)

Screws

Screws are used to join pieces together.

The total cost is about $15.

Amount Size
37 M2 x 4mm
32 M2 x 14mm
19 M2 x 20mm

3D Models

You need to print it in ABS, since servos becomes hot after a while and can melt the plastic.

The printing cost is about $20-$30.

SX_* models needs to be mirrored on the correct axis before the printing process.

Part Amount Download
SP_Cover_1_foro 38 SP_Cover_1_foro
MID_Scapole 1 MID_Scapole
MID_Torace 1 MID_Torace
MID_Anca_TOP 1 MID_Anca_TOP
MID_Anca_BTM 2 MID_Anca_BTM
DX_Spalla_A 1 DX_Spalla_A
DX_Spalla_B 1 DX_Spalla_B
DX_Avambraccio_A 1 DX_Avambraccio_A
DX_Avambraccio_B 1 DX_Avambraccio_B
DX_Gomito_A 1 DX_Gomito_A
DX_Gomito_B 1 DX_Gomito_B
DX_Braccio 1 DX_Braccio
DX_Anca_A 1 DX_Anca_A
DX_Anca_B 1 DX_Anca_B
DX_Inguine_A 1 DX_Inguine_A
DX_Inguine_B 1 DX_Inguine_B
DX_Ginocchio_A 1 DX_Ginocchio_A
DX_Ginocchio_B 1 DX_Ginocchio_B
DX_Gamba_A 1 DX_Gamba_A
DX_Gamba_B 1 DX_Gamba_B
DX_Caviglia_A 1 DX_Caviglia_A
DX_Caviglia_B 1 DX_Caviglia_B
DX_Piede_A 1 DX_Piede_A
DX_Piede_B 1 DX_Piede_B
SX_Spalla_A 1 SX_Spalla_A
SX_Spalla_B 1 SX_Spalla_B
SX_Avambraccio_A 1 SX_Avambraccio_A
SX_Avambraccio_B 1 SX_Avambraccio_B
SX_Gomito_A 1 SX_Gomito_A
SX_Gomito_B 1 SX_Gomito_B
SX_Braccio 1 SX_Braccio
SX_Anca_A 1 SX_Anca_A
SX_Anca_B 1 SX_Anca_B
SX_Inguine_A 1 SX_Inguine_A
SX_Inguine_B 1 SX_Inguine_B
SX_Ginocchio_A 1 SX_Ginocchio_A
SX_Ginocchio_B 1 SX_Ginocchio_B
SX_Gamba_A 1 SX_Gamba_A
SX_Gamba_B 1 SX_Gamba_B
SX_Caviglia_A 1 SX_Caviglia_A
SX_Caviglia_B 1 SX_Caviglia_B
SX_Piede_A 1 SX_Piede_A
SX_Piede_B 1 SX_Piede_B

Wiring

Schematics are contained in the schematics folder. RoboPrime fritzing

Firmware

The firmware is contained in the firmware folder and can be compiled and uploaded to the board thanks to the Arduino IDE.

Firmware size

Usage

Commands

The firmware allows you to fully control the robot through bluetooth in order to make complex things. Those are the commands implemented that can be sended through the serial protocol.

Name Syntax Parameters Description
S0 S0 Ri
or
S0 Li
i = index[0-9] (optional) Move a servo to its default position.
If no index is passed all servos will be reset.
S1 S1 Ri Ad
or
S1 Li Ad
i = index[0-9]
d = angle[0-1800]
Move a servo to a specific angle.
The value 0 corresponds to 0° and
the value 1800 corresponds to 180°.
S2 S1 Ri Ad Tm
or
S1 Li Ad Tm
i = index[0-9]
d = angle[0-1800]
m = duration[ms]
Move a servo to a specific angle gradually by
sweeping it for a specific amount of time.
S3 S3 An Ds Tm n = anim idx[0-10]
s = space[cm]
m = duration[ms]
Apply a specific animation.
space and duration are unused at the moment
but are supposed to be used as parameters for
certain animations. See animations section for
the list of animations available.
Q0 Q0 Ri Ad
or
Q0 Ri Ad
i = index[0-9]
d = angle[0-1800]
Similar to S1, but the movement is added to
the movements queue. If the angle value is 0
a pause will be planned instead.
(A pause will make the next planned
movement, on the same motor index, hang until
the pause is not ended)
This is used in order to plan complex
synchronized movements. (E.g. Animations)
C0 Ri Wp
or
Li Wp
i = index[0-9]
p = pulse width[us]
Sets a specific pulse width to a specific
motor for calibration purposes.

Animations

The firmware contains some basic animations hardcoded inside it:

Id Name Status
0 Forward walk. WIP
1 Backward walk. NO
2 Side walk to right. NO
3 Side walk to left. NO
4 Clockwise standstill rotation. NO
5 Counterclockwise standstill rotation. NO
6 Clockwise curved walk. NO
7 Counterclockwise curved walk. NO
8 Sit down. DONE
9 Hello. DONE
10 Fuck off. DONE

Project Analysis

This document was written for my high-school exam in order to give to the professors some basic knowledge to make them understand how the project works.

Unfortunately it's written in Italian 🇮🇹

The document is available here

Authors

See also the list of contributors who participated in this project.

License

This project is licensed under the GPL-3.0 License - see the LICENSE file for details.

About

🤖 Full featured 21 DOF 3D Printed Humanoid Robot based on ATmega328P chip

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Other 100.0%