# Open Doggo
> An opensource 12-DOF hobby servo powered quadruped robot dog
### :earth_asia: Follow To See The Build Journal (Instagram) ! -> [CLICK ME](https://www.instagram.com/open_doggo/)
## ==Introduction==
**[Why]**
This project is one of ongoing effort to develope a BLDC quadruped robot with compliant joints and torque control actuators like MIT Mini Cheetah from MIT biomimetics Lab, but they are hard and require tons of knowledges and money.
**[Actuators and components]**
To take a small step, I decided to build a much simpler version instead. 9G PWM hobby servo motor as actuators, Raspberry Pi as controller (in version 2) and design the robot all from scratch. Finally 3D printed them out and assemble.
**[Feedback]**
Since the actuators I chosen are open-loop control, a 6-DOF Gyro is required and placed in the center of the robot to get the whole body closed-loop control.
**[Leg design]**
What makes the design special is its servo are place at the same level with torso, it highly reduced the inertia when the leg swings.
---
The following sections would tell the story and the problems I met during the developement and the solution to it by chronological order, 3 versions in total.
## ==Version 1==

<div>
<div style="float:left;border:solid 5px 000;margin:2px;"><img src="https://i.imgur.com/WF3cLcv.jpg =25%x" width="200" height="260" ></div>
<div style="float:left;border:solid 5px 000;margin:2px;"><img src="https://i.imgur.com/ZoI9idQ.jpg =25%x" width="200" height="260" ></div>
</div>
<div style="float:none;clear:both;">
Bulky and full of error are the first impression seeing it.
Able to stand, sit, swing legs and with manual servo calibration.
In this version (also version 2 discussed later), servo's jittering cause lots of trouble. It might seems smooth and steady in the animation below, but in reality, the legs was always shaking.
In this version, I spent lots of time dealing with hardware problems cause by inadequate torque and jitter, but none of them works and even burn down several servos.
Consequently, I can't implement any algorithms even the code was right.
</div>
### Approach
- 2D Inverse Kinematic of each leg
- Able to follow programmed gait
- Stand up & Sit down & Tilt
- Compact design to integrate many systems
- ESP32S Powered
### Problems
- Too heavy to walk
- Servo's jittering
- Hard to upload the program
### Leg Mechanism

### Torso

### Electronics component

## ==Version 2==

<div>
<div style="float:left;border:solid 5px 000;margin:2px;"><img src="https://i.imgur.com/bnLX7JY.jpg =25%x" width="200" height="260" ></div>
<div style="float:left;border:solid 5px 000;margin:2px;"><img src="https://i.imgur.com/bRBVQsD.jpg =25%x" height="260" ></div>
</div>
<div style="float:none;clear:both;">
In this version I try to dealing with overweight problems. All the shells were thinner and stronger by redesign the torso.
</div>
### Approach
- Lighter and cleaner design
- Easier to print and assemble
- Raspberry Pi Zero 2 embedded (ROS)
- 0.96" OLED showing status
### Problems
- Still, inadequate torque cause hard to implement walking gait or other alogorithm
### Standing Up

### Compact design

> IMU + Rpi + Servo Driver Board + Voltage Regulator + Power Distribution + OLED
## Version 3 (Ongoing)
To deal with all the problem from origin, changing the motor to FT2331M from Feetech would be the quickest way.

> High torque, compact size, fast responce, all metal case

> redesign the shoulder part to fit the new motor

> redesign the torso to make it even lighter !
==To Be Continued....==
## [TO-DO]
- [ ] Software // ROS
- [ ] Simulation // Sim using Gazebo (Build URDF)
- [ ] Software // implement walking and troting gait
- [ ] Software // Derive whole body IK
- [ ] Software // implement whole body PID control
- [ ] Hardware // Redesign leg's mechnism to fit new servo
- [ ] Software // Joint Servo automate calibration
- [ ] Software // MPU6050 sensor fusion
- [ ] Software // Gait planning and generation
###### tags: `Portfolio`