|
ATMEGA328P-PUMicrochip Technology / Atmel
|
x 1 | |
|
TPS61088RHLRTI(德州仪器)
|
x 1 | |
|
MPU-6050TDK InvenSense
|
x 1 |
|
arduino IDEArduino
|
Quadruped bai servo
About
A low cost 12DOF quadruped, actuated by hobby servos. Notice that this is an early version developed back in 2019. If you're looking for a high performance desktop quad, check out the ongoing [Quadruped bai tiny](https://github.com/psrobotics/Quadruped_bai_tiny)
This repository contains the models, BOM, electronic, simulate, as well as the source code of the project.
Videos
[Balancing](https://www.youtube.com/watch?v=fsc0w1NeIVk)
[Walking](https://youtu.be/FCRvykWv6ok)
Hardware
Required parts are listed below. For all printed parts, the recommended printing infill is 70%. Set up proper printing direction and support based on your printer type.
| Part Name | Quantity | Link | Info |
| ----------------------------------------------------------- | -------- | ------------------------------------------------------------ | ------------------- |
| leg_tip | 2 | [STL file](hardware/stl) | Printed part |
| leg_tip_MIR | 2 | / | / |
| leg_2 | 2 | / | / |
| leg_2_MIR | 2 | / | / |
| leg_link_1 | 2 | / | / |
| leg_link_1_MIR | 2 | / | / |
| leg_link-1 | 2 | / | / |
| leg_link-1_MIR | 2 | / | / |
| leg_1 | 2 | / | / |
| leg_1_MIR | 2 | / | / |
| leg_1_2 | 2 | / | / |
| leg_1_2_MIR | 2 | / | / |
| servo_holder_1 | 2 | / | / |
| servo_holder_1_MIR | 2 | / | / |
| hip_joint_holder_1 | 2 | / | / |
| hip_joint_holder_1_MIR | 2 | / | / |
| hip_holder_2 | 2 | / | / |
| hip_holder_2_MIR | 2 | / | / |
| joint_ab_holder | 2 | / | / |
| body_bridge | 2 | / | / |
| body_frame_2 | 1 | / | / |
| body_frame_1 | 1 | / | / |
| pcb_holder | 2 | / | / |
| M3*8 | ~20 | / | Screw |
| M3*12 | ~30 | / | / |
| M3*16 | ~20 | / | / |
| M2*8 | ~50 | / | / |
| M2*15 | ~50 | / | / |
| M2*20 | ~20 | / | / |
| M2*26 | ~20 | / | / |
| SF-1 0305 Self Lubricating Composite Bearing Bushing Sleeve | ~25 | [ebay]() | For rotation joints |
| EMAX ES08A II Servo | 12 | [EMAX]() | Actuator |
After printing your parts, insert the bearing at all 5mm holes locates around rotations joints. Then fasten parts with M3 screws. Remember to check the rotation friction, make sure all joints can rotates freely with the servo installed.
Servo selection
The performance of actuators is of fundamental importance for legged robots. Even when we're building a small one. Ideal actuators for this design should be highly back-drivable, have high power density, and be torque-controllable. However, most off-the-shelf servos have nothing to do with these features. There are some high voltage brushless servos (with magnetic encoders for feedback) with relatively good performance, but they're extremely costive at this size. If you have enough budget, why not build a brushless one? Considering that you'll need 12 servos for the assembly, my suggestion is just to go for the budget choice. The EMAX ES08A (metal gear version) works fine for my build. The nylon gear version is also acceptable, but they can easily be damaged under impact.
Body assembly
The robot consists 4 legs and a body frame. Assembly 2 legs first.
Assembly another 2 mirrored legs. Then link all legs to the body frame.
Feet Sensor (optional)
Additional feet sensors can detect whether foot have touched the ground. This can be helpful when changing the state machine from 'swing state' to 'stance state'. The foot of Quadruped bai servo is switchable. If you decided to add feet sensors, some additional configurations are needed for the firmware (would be detailly explained later).
Feet sensors are built around micro switches, which detect impact from specific directions. As for the result, this design didn't work that well. A good feet sensor solution should be able to detect impacts from all directions, with low latency and clear output. [Open Dynamic Robot Initiative](https://open-dynamic-robot-initiative.github.io/) has presented an elegant solution with infrared sensor. Take that as a reference, the ongoing Quadruped bai tiny will come with better feet sensors. Assembly the feet sensor as this pic shown. (Remember to print mirrored parts for right-side legs)
Only 3 printed parts are needed to assembly the feet sensor, check [STL file](hardware/stl/feet_sensor) here.
In order to increase the friction between feet and ground, additional high-friction coating is vital. I used some glued silicone sheet on the feet tip. You can also design your feet tip and print it with high-friction material.
Servo Calibration
Most servos have a limited motion range, make sure the servo's motion range covers leg linkage's joint limit shown in the following pics. Also, pre-calibrate in this step by applying an initial PWM signal to servos before installing (eg. 0°). This enables all servos to have the same PWM-joint angle mapping. You can then fine-tuning them in the firmware.
Electronic
The controller board assembly includes servo controller, IMU, and dc-dc converter module. With an additional serial port, you can connect robot to a wireless or Bluetooth module that enables wireless control. Built around ATmega328P, the microcontroller's performance, IO is just not enough for such application. I encourage you take this schematic as a reference and switch to a high performance 32-bit microcontroller (something like STM32H7, ESP32). If you're more comfortable with AVR Arduino boards, use this design directly and it'll work.
[PCBs](electronic/) are designed with [EAGLE](https://www.autodesk.com/products/eagle/free-download). Exported Gerber file is uploaded too. If you don't want to order the PCB, you can also make it using off-the-shelf components (Arduino nano, MPU 6050, dc-dc converter, etc).
Controller board pin assignment
Use ICSP to upload firmware and debug with the external serial port. The hardware IIC pins(A4,A5) are occupied by IMU (MPU6050 is also an 'old chip', you can replace with something like BNO080).
DC-DC converter
Integrated boost converter to power servos. Pre-configured output voltage is 5.5V, you can change by [replacing]() the feedback resistor. Plug this module to the DC-DC slot on controller board.
Battery
Single-cell lithium batteries with high current output capability(>10A) are preferred. This project uses 18650, 18350 batteries. The [battery shelf](hardware/step) can be printed and mounted under the robot frame.
Simulate
Simplified model in [v-rep](https://www.coppeliarobotics.com/). You can use remote API to develop your simulation.
Firmware
A simplified controller is implemented to generate trot pattern for walking. Here, I applied a state machine to easily synchronize a set of open foot trajectories (with feet sensor). The IMU unit is used to adjust body roll&pitch during the stance phase. Notice that this robot is only controlled on the kinematic level, don't expect it to resist external impacts during walking process.
THIS PROJECT COMES WITH NO WARRANTIES, BUILD AT YOUR RISK.
Quadruped bai servo
*PCBWay community is a sharing platform. We are not responsible for any design issues and parameter issues (board thickness, surface finish, etc.) you choose.
- Comments(1)
- Likes(1)
- jhevar Jun 15,2023
- 1 USER VOTES
- YOUR VOTE 0.00 0.00
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
-
6design
-
8usability
-
8creativity
-
8content
More by ps
-
-
-
-
-
-
3D printed Enclosure Backplate for Riden RD60xx power supplies
154 1 1 -
-