Skip to content

Commit

Permalink
v1.0
Browse files Browse the repository at this point in the history
  • Loading branch information
rookiepeng committed Sep 11, 2024
0 parents commit 04b1642
Show file tree
Hide file tree
Showing 200 changed files with 29,197 additions and 0 deletions.
37 changes: 37 additions & 0 deletions .github/workflows/build_pc_client_linux.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions

name: Build PC Client on Linux

on:
push:
branches: [ main ]
pull_request:
branches: [ main ]

jobs:
build:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- name: Set up Python 3.9
uses: actions/setup-python@v2
with:
python-version: 3.9
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install PySide6 psutil pyinstaller
- name: PyInstaller
run: |
cd ./software/pc
pyinstaller hexapod.spec
cp mainwindow.ui ./dist/hexapod/
- name: Archive built module
uses: actions/upload-artifact@v2
if: success()
with:
name: hexapod_linux
path: ./software/pc/dist/hexapod
37 changes: 37 additions & 0 deletions .github/workflows/build_pc_client_windows.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions

name: Build PC Client on Windows

on:
push:
branches: [ main ]
pull_request:
branches: [ main ]

jobs:
build:

runs-on: windows-latest

steps:
- uses: actions/checkout@v2
- name: Set up Python 3.9
uses: actions/setup-python@v2
with:
python-version: 3.9
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install PySide6 psutil pyinstaller
- name: PyInstaller
run: |
cd software\pc
pyinstaller hexapod.spec
copy mainwindow.ui .\dist\hexapod\
- name: Archive built module
uses: actions/upload-artifact@v2
if: success()
with:
name: hexapod_windows
path: .\software\pc\dist\hexapod
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
.DS_Store
*.pyc
.vscode/
*.blend1
software/pc/config.json
*.aab
674 changes: 674 additions & 0 deletions LICENSE

Large diffs are not rendered by default.

130 changes: 130 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
# <img src="./images/hexapod-logo.svg" alt="logo" width="64"/> Hexapod

A 3D Printed Hexapod Robot

![hexapod_model](./images/hexapod_model.jpg)

![booting_up](./images/booting_up.gif)

## Introduction

This agile, 3D-printed hexapod robot, built with ESP32 and Arduino, offers a range of advanced features, including:

- A robust, durable structure
- WiFi-enabled remote control
- Smooth, agile movement
- Over-the-air (OTA) firmware updates for easy maintenance

### Watch on Youtube

[![youtube_booting_up](https://img.youtube.com/vi/QFQOPC1Mbdo/0.jpg)](https://www.youtube.com/watch?v=QFQOPC1Mbdo)

[![youtube_remote_control](https://img.youtube.com/vi/YvXEto3tymQ/0.jpg)](https://www.youtube.com/watch?v=YvXEto3tymQ)

## Electronics

| Name | Thumbnail | Required | Note |
| -------------------------- | ------------------------------------------------------------------------ | ----------------- | --------- |
| ESP32 Dev Module | <img src="./images/esp32.jpg" alt="esp32" width="300"/> | 1 | |
| MG92B or MG90S (metal gear)| <img src="./images/mg92b.jpg" alt="mg92b" width="300"/> | 18 | Can be mixed |
| PCA9685 servo driver | <img src="./images/PCA9685.jpg" alt="PCA9685" width="300"/> | 2 | Need to be configured as different I2C addresss |
| XL4005 DC-DC step down | <img src="./images/XL4005.jpg" alt="XL4005" width="300"/> | 2 | 6V output |
| Mini 360 DC-DC step down | <img src="./images/mini360.jpg" alt="mini360" width="300"/> | 1 | 5V output |
| Switch | <img src="./images/switch.jpg" alt="switch" width="300"/> | 1 | |
| 18650 battery | <img src="./images/battery.jpg" alt="battery" width="300"/> | 2 | |
| 18650 battery holder | <img src="./images/battery_holder.jpg" alt="batter_holder" width="300"/> | 1 | |

### Connection Diagram

![diagram](./images/diagram.svg)

## Mechanism

### Bill of Materials (BOM)

#### 3D-Printed Parts

![whole_assembly](./images/assembly_whole.jpg)

##### Body x 1

![body_assembly](./images/assembly_body.jpg)

| Filename | Thumbnail | Required |
| -------------- | ----------------------------------------------------------------------- | -------- |
| body_top | <img src="./images/body_top.jpg" alt="body_top" width="300"/> | 1 |
| body_base | <img src="./images/body_base.jpg" alt="body_base" width="300"/> | 1 |
| body_side | <img src="./images/body_side.jpg" alt="body_side" width="300"/> | 2 |
| body_front_back| <img src="./images/body_front_back.jpg" alt="body_front_back" width="300"/>| 2 |
| body_battery | <img src="./images/body_battery.jpg" alt="body_battery" width="300"/> | 1 |
| body_servo_side1 | <img src="./images/body_servo_side1.jpg" alt="body_servo_side1" width="300"/> | 6 |
| body_servo_side2 | <img src="./images/body_servo_side2.jpg" alt="body_servo_side2" width="300"/> | 6 |
| body_servo_top | <img src="./images/body_servo_top.jpg" alt="body_servo_top" width="300"/> | 6 |

##### Joint x 6

![joint_assembly](./images/assembly_joint.jpg)

| Filename | Thumbnail | Required | Note |
| --------------- | --------------------------------------------------------------------------- | -------- | --------- |
| joint_bottom | <img src="./images/joint_bottom.jpg" alt="joint_bottom" width="300"/> | 12 | |
| joint_cross | <img src="./images/joint_cross.jpg" alt="joint_cross" width="300"/> | 6 | |
| joint_top_mg90s | <img src="./images/joint_top_mg90s.jpg" alt="joint_top_mg90s" width="300"/> | 12 | For MG90S |
| joint_top_mg92b | <img src="./images/joint_top_mg92b.jpg" alt="joint_top_mg92b" width="300"/> | 12 | For MG92B |

##### Leg x 6

![leg_assembly](./images/assembly_leg.jpg)

| Filename | Thumbnail | Required |
| --------------- | --------------------------------------------------------------------------- | -------- |
| leg_bottom | <img src="./images/leg_bottom.jpg" alt="leg_bottom" width="300"/> | 6 |
| leg_side | <img src="./images/leg_side.jpg" alt="leg_side" width="300"/> | 12 |
| leg_top | <img src="./images/leg_top.jpg" alt="leg_top" width="300"/> | 6 |

##### Foot x 6

![foot_assembly](./images/assembly_foot.jpg)

| Filename | Thumbnail | Required | Note |
| --------------- | --------------------------------------------------------------------------- | -------- | --------- |
| foot_bottom | <img src="./images/foot_bottom.jpg" alt="foot_bottom" width="300"/> | 6 | |
| foot_ground | <img src="./images/foot_ground.jpg" alt="foot_ground" width="300"/> | 6 | |
| foot_tip | <img src="./images/foot_tip.jpg" alt="foot_tip" width="300"/> | 6 | |
| foot_top_mg90s | <img src="./images/foot_top_mg90s.jpg" alt="foot_top_mg90s" width="300"/> | 6 | For MG90S |
| foot_top_mg92b | <img src="./images/foot_top_mg92b.jpg" alt="foot_top_mg92b" width="300"/> | 6 | For MG92B |

##### Accessory

| Filename | Thumbnail | Note |
| ---------------------- | ----------------------------------------------------------------------------------------- | ---------------- |
| accessory_spacer_mg90s | <img src="./images/accessory_spacer_mg90s.jpg" alt="accessory_spacer_mg90s" width="300"/> | Spacer for MG90S |
| accessory_cable_holder | <img src="./images/accessory_cable_holder.jpg" alt="accessory_cable_holder" width="300"/> | |

#### Others

| Name | Spec | Required |
| --------- | ------- | -------- |
| Screw | M2 6mm | 36 |
| Screw | M2 10mm | 198 |
| Nuts | M2 | 234 |
| Pin (304) | M4 6mm | 18 |
| Bearing | MR74-2RS (4mm ID, 7mm OD, 2.5mm Bore) | 18 |

## Software

### ESP32-Arduino

Source code is under `./hexapod_arduino`.

- `hexapod_arduino.ino`: Main Arduino sketch
- `config.h`: Configuration header. Change the configurations based on your servo connections
- `motion.h`: Automatically generated motion look-up-table using `path_tool'

### Android

*Working in progress*

### PC

*Working in progress*
Binary file added images/PCA9685.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/XL4005.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/accessory_cable_holder.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/accessory_spacer_mg90s.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/assembly_body.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/assembly_foot.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/assembly_joint.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/assembly_leg.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/assembly_whole.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/battery.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/battery_holder.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/body_base.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/body_battery.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/body_front_back.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/body_servo_side1.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/body_servo_side2.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/body_servo_top.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/body_side.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/body_top.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/booting_up.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit 04b1642

Please sign in to comment.