diff --git a/app/README.md b/app/README.md index 5ce6766..fb673d7 100644 --- a/app/README.md +++ b/app/README.md @@ -8,30 +8,21 @@ If you're seeing this, you've probably already done this step. Congrats! ```bash # create a new project in the current directory -npm create svelte@latest - -# create a new project in my-app -npm create svelte@latest my-app +npx sv create ``` ## Developing -Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: +Once you've created your project, follow these steps: -```bash -npm run dev +1: Delete package-lock.json +2: Check `git status`. If you see any changes other than package-lock.json or favicon.ico, run the command `git restore ./` (See below) +3: Run `npm install` or `pnpm install` or `yarn` to install the dependencies +4: Run `npm run build` to build the project -# or start the server and open the app in a new browser tab -npm run dev -- --open -``` +Running `git status` should show: -## Building - -To create a production version of your app: - -```bash -npm run build -``` +[![example.png](https://i.postimg.cc/yddM3hH3/example.png)](https://postimg.cc/7CFsp2bq) You can preview the production build with `npm run preview`. diff --git a/docs/1_components.md b/docs/1_components.md index 1cfe341..e8bf2f7 100644 --- a/docs/1_components.md +++ b/docs/1_components.md @@ -1,17 +1,17 @@ # Components -Spot is comprised of a 3D printed body, some hardware and list of electronic components. +Spot is comprised of a 3D-printed body, some hardware, and a list of electronic components. ## Hardware -Spot is 3D printed and is a combination of different Spot Micro designs, with some minor modification on top. -The original design is developed by KDY0523. +Spot is 3D-printed and is a combination of different Spot Micro designs, with some minor modifications. +The original design was developed by KDY0523. - [robjk reinforced shoulder remix](https://www.thingiverse.com/thing:4937631) - [Kooba SpotMicroESP32 remix](https://www.thingiverse.com/thing:4559827) - [KDY0532 original design](https://www.thingiverse.com/thing:3445283) -The 3D prints is assembled with some additional component: +The 3D prints are assembled with some additional non-printable components: - 84x M2x8 screws + M2 nuts - 92x M3x8 screws + M3 nuts @@ -20,7 +20,7 @@ The 3D prints is assembled with some additional component: ## Electronics -These are the electronics i used for mine and can easily be switched up to suit your Spot's needs. +These are the electronics I used for mine, and they can easily be swapped to suit your Spot's needs. | Component | Specification | Required | Recommendation | | ------------------------- | ----------------------------- | -------- | ------------------------------------------------------------------------------------------------------- | @@ -39,6 +39,6 @@ These are the electronics i used for mine and can easily be switched up to suit | 7.6-8.4V Battery | Battery | No | Im using 4x 18650 in 2s2p configuration, but other people have 2s LiPos. | | 4x Servo extension cables | Servo extension cables | Yes | You can either buy them or make them with a couple or headers and some cable. | -I recommend getting a ESP32-S3 with a camera, allowing for more computation and imaging capabilities. +I recommend getting an ESP32-S3 with a camera, allowing for more computation and imaging capabilities. -It means a more responsive robot as its faster doing sensor fusion, calculating kinematic and gait planning, and networking. +It means a more responsive robot as it's faster at doing sensor fusion, calculating kinematics and gait planning, and networking. diff --git a/docs/2_assembly.md b/docs/2_assembly.md index 5871255..b4b9704 100644 --- a/docs/2_assembly.md +++ b/docs/2_assembly.md @@ -1,6 +1,6 @@ # Assembly and calibration -There exist a number of great resources for the assembly of the spot micro. For this reason I refer to these, as the steps are the same for this version: +There are a number of great resources for the assembly of the Spot Micro. For this reason, I refer to these, as the steps are the same for this version: - [Michael Kubina SpotMicroESP32 assembly](https://github.com/michaelkubina/SpotMicroESP32/tree/master/assembly) - [Spot Micro AI assembly](https://spotmicroai.readthedocs.io/en/latest/assembly/) @@ -9,7 +9,7 @@ There exist a number of great resources for the assembly of the spot micro. For Discussion about [Calibration](https://github.com/runeharlyk/SpotMicroESP32-Leika/discussions/118) -Assuming the servos are connected to the PCA9685 and is powered on: +Assuming the servos are connected to the PCA9685 and are powered on: ### Calibrate in servo frame @@ -38,13 +38,13 @@ You now have the values for the servos. ### Calibration in body frame -They now has to calibrated to the body frame. It assumed they have the center pwm pointing straight down. +They now have to be calibrated to the body frame. It is assumed they have the center PWM pointing straight down. 1. Navigate to `/controller` and click on "Calibrate". This will set the servo to the center pwm value. 2. Navigate to `peripherals/servo` - Here you can set the servo angle offset. -All the legs should be pointing down. If they are not you have to options. 1; Physically move the servos to the correct position by un screwing the servo horns. 2; Update the servo offset in the servo table. +All the legs should be pointing down. If they are not, you have two options. 1. Physically move the servos to the correct position by unscrewing the servo horns. 2. Update the servo offset in the servo table. ## Circuit diagram -![Electronics diagram](media/circuit.png "Title") +![Electronics diagram](media/circuitschematic.png "Title") diff --git a/docs/3_software.md b/docs/3_software.md index c541521..64c797e 100644 --- a/docs/3_software.md +++ b/docs/3_software.md @@ -1,6 +1,6 @@ # Software -The robots firmware is built using platform io using the arduino framework over ESP-IDF. +The robot's firmware is built using PlatformIO with the Arduino framework over ESP-IDF. ## Prerequisites @@ -8,7 +8,7 @@ To prepare the frontend code for the ESP32, a specific build chain is required. ### Required Software -Install the following software to ensure all functionalities: +Install the following software to ensure all functionality: - [VSCode](https://code.visualstudio.com/) - Preferred IDE for development - [Node.js](https://nodejs.org) - Needed for app building @@ -45,9 +45,9 @@ For additional boards, refer to the [official board list](https://docs.platformi ### Factory settings -Update the `esp32/factory_setting.ini` with new wifi settings, app name and other device information. +Update the `esp32/factory_setting.ini` with new Wi-Fi settings, app name and other device information. ### Build & Upload Process -Update the `platformio.ini` file for your board, then navigate to the PlatformIO tab, select your environment, click `Upload Filesystem Image` and after uploading finish, click `Upload and Monitor`. The filesystem image only has to be uploaded the first time and will override config files on the microcontroller. -When uploading new firmware the app is evaluated and if necessary will be rebuild. +Update the `platformio.ini` file for your board, then navigate to the PlatformIO tab, select your environment, click `Upload Filesystem Image` and after uploading finishes, click `Upload and Monitor`. The filesystem image only needs to be uploaded the first time. It will override config files on the microcontroller. +When uploading new firmware, the app is evaluated, and if necessary, will be rebuilt. diff --git a/docs/4_configuring.md b/docs/4_configuring.md index 6db031e..f753d57 100644 --- a/docs/4_configuring.md +++ b/docs/4_configuring.md @@ -4,10 +4,10 @@ ## Connecting to the network -If the wifi settings were configured using `esp32/factory_settings.ini` the robot will try to connect to the network. +If the Wi-Fi settings were configured using `esp32/factory_settings.ini`, the robot will try to connect to the network. -If it fails to connect, it will host a AP with a captive portal where it's possible to configure wifi settings. +If it fails to connect, it will host an AP with a captive portal where it's possible to configure Wi-Fi settings. -When the robot connect successfully the ip address will be printed to the serial monitor +When the robot connects successfully, the IP address will be printed to the serial monitor. diff --git a/docs/5_running.md b/docs/5_running.md index 0b114c4..0a13ec0 100644 --- a/docs/5_running.md +++ b/docs/5_running.md @@ -1,10 +1,10 @@ # Running the spot -> *Prerequsition*: You have successfully build, flashed and configured your robot. +> *Prerequsition*: You have successfully built, flashed, and configured your robot. Navigate to `/controller` ![Controller](media/controller.png) - diff --git a/docs/6_developing.md b/docs/6_developing.md index 5abaf1e..a318a92 100644 --- a/docs/6_developing.md +++ b/docs/6_developing.md @@ -1,12 +1,12 @@ # Developing -> _Prerequsition_: You have successfully build, flashed and configured your robot. +> _Prerequsition_: You have successfully built, flashed, and configured your robot. ## Setting up SvelteKit ### Proxy Configuration for Development -Configure the proxy settings in the `vite.config.ts` file to direct API calls to your ESP32 device. By default it used the factory MDNS address, but can be changed to the ip if preferred. +Configure the proxy settings in the `vite.config.ts` file to direct API calls to your ESP32 device. By default, it uses the factory MDNS address, but it can be changed to the IP if preferred. ```ts server: { diff --git a/docs/media/circuitschematic.png b/docs/media/circuitschematic.png new file mode 100644 index 0000000..27e0d3f Binary files /dev/null and b/docs/media/circuitschematic.png differ diff --git a/docs/motion_system.md b/docs/motion_system.md index 87c0d46..4220440 100644 --- a/docs/motion_system.md +++ b/docs/motion_system.md @@ -1,10 +1,10 @@ # ๐Ÿ Motion state controller -The motion controller is a finite state machine with state allowing for static and dynamic posing, 8-phase crawl and bezier bases trot gait, and choreographed animation. +The motion controller is a finite state machine that allows for static and dynamic posing, 8-phase crawl, bezier-based trot gait, and choreographed animation. ## Controller Input Mapping -The controller input is interpret different between the modes. For the walking it it looks like this: +The controller input is interpreted differently between the modes. For walking, it looks like this: | Controller Input | Mapped to Gait Step | Range | | ---------------- | ------------------- | ------- | @@ -21,7 +21,7 @@ The controller input is interpret different between the modes. For the walking i ## Walking gait -General about walking gait +General description of walking gait. Time step @@ -31,9 +31,9 @@ Stance and swing controller ## 8-phase crawl gait -The 8-phase crawl gait works by lifting one leg at a time while shifting its body weight away from the leg. +The 8-phase crawl gait works by lifting one leg at a time while shifting the body weight away from that leg. -As the name implies, the gait consist of 8 discrete phases, which represents which feet should be contact the ground or be in swing. +As the name implies, the gait consists of 8 discrete phases, which represent which feet should be in contact with the ground or in swing. At each time step the phase time $t\in [0,1]$ is updated. When $t\geq 1$ the phase index is updated and phase time is reset. diff --git a/esp32/platformio.ini b/esp32/platformio.ini index f560a7d..9d9825d 100644 --- a/esp32/platformio.ini +++ b/esp32/platformio.ini @@ -16,10 +16,11 @@ extra_configs = features.ini build_settings.ini build_cache_dir = .pio/build_cache -default_envs = esp32-camera +default_envs = esp32-camera ; Change this to your default environment example: [env:{esp32-camera}] ; ================================================================ ; Project environments +; More Board information: https://registry.platformio.org/platforms/platformio/espressif32/boards [env:esp32-camera] board = esp32cam diff --git a/readme.md b/readme.md index 9a7f6a5..78e2d5c 100644 --- a/readme.md +++ b/readme.md @@ -6,7 +6,7 @@
Spot Micro - Leika ๐Ÿ• -

A small quadruped robot, inspired by boston dynamic Spot.

+

A small quadruped robot, inspired by Boston Dynamics Spot.

Explore the docs ยป @@ -25,7 +25,7 @@ ## ๐Ÿ“œ Overview Leika is a smaller quadruped robot for the Spot-Micro community. -Built on an ESP32 and powered by FreeRTOS, she can handle multiple tasks seamlessly - Like video and data streaming, solving kinematic and gait planning, controlling IO and much more. +Built on an ESP32 and powered by FreeRTOS, she can handle multiple tasks seamlesslyโ€”like video and data streaming, solving kinematic and gait planning, controlling I/O, and much more. By focusing on practicality and simplicity in both hardware and software, it offer an accessible platform for learning, experimentation, and modest real-world applications. ## ๐ŸŽฏ Features @@ -83,8 +83,8 @@ $$ --> ### ๐ŸŽฎ Controller -The controller is a svelte app, which get embedded in the firmware of the robot. -Which mean that new releases and OTA updates includes the latest controller. +The controller is a Svelte app, which get embedded in the firmware of the robot. +Which means that new releases and OTA updates include the latest controller. The controller includes full control over robot settings like network and calibration, and a visualization. @@ -113,11 +113,11 @@ The kinematic for the robot is from this [kinematics paper](https://www.research ## ๐Ÿ Motion state controller -The motion controller is a finite state machine with state allowing for static and dynamic posing, 8-phase crawl and bezier based trot gait, and choreographed animation. +The motion controller is a finite state machine with states allowing for static and dynamic posing, an 8-phase crawl, Bezier-based trot gait, and choreographed animation. ### Controller Input Mapping -The controller input is interpret different between the modes. For the walking it it looks like this: +The controller input is interpreted differently between the modes. | Controller Input | Mapped to Gait Step | Range | | ---------------- | ------------------- | ------- | @@ -175,7 +175,7 @@ Rotation is calulated using the same curve ## ๐Ÿš€ Future -See the [project backlog](https://github.com/users/runeharlyk/projects/3) and [open issues](https://github.com/runeharlyk/SpotMicroESP32-Leika/issues) for full list of proposed and active features (and known issues). +See the [project backlog](https://github.com/users/runeharlyk/projects/3) and [open issues](https://github.com/runeharlyk/SpotMicroESP32-Leika/issues) for a full list of proposed and active features (and known issues). ## ๐Ÿ™Œ Credits @@ -191,7 +191,7 @@ This project takes great inspiration from the following resources: ## โ˜• Support -If you like the project and want to follow it evolving concidering โœจ-ing the project +If you like the project and want to follow its evolution, consider โœจ-ing the project Buy Me A Coffee