Key Features • Overview • Getting started • Credits • License
This repository contains the complete source code for a Spot Micro quadruped robot. Execution of the software takes place on a ESP32 cam, which runs various number of FreeRTos task for seamless robotic operations. By focusing on practicality and simplicity in both hardware and software, it offer an accessible platform for learning, experimentation, and modest real-world applications.
The robots 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.
The 3D prints is assembled with some additional component:
The software make use of a range of different libraries to enhance the functionality. Up to date list can be seen in platformio.ini file. The libraries includes:
The software utilizes a couple of FreeRTos task | Task | Description | Priority | Core | --- | --- | --- | --- | Idle0 task | Burns cpu time to track cpu usage for core 0 | 0 | 0 | Idle1 task | Burns cpu time to track cpu usage for core 1 | 0 | 1 | Spot service task | Handle synchronous services | 2 | 0
To dis-/enable the major feature I use defines. Define them in either featureflags.h or in platformio.ini's build_flags. | Feature | Description | Default | --- | --- | --- | FT_BATTERY | Whether or not to use battery | 0 | FT_NTP | Whether or not to use time server | 1 | FT_SECURITY | Whether or not to use login system | 0 | FT_MQTT | Whether or not to use MQTT | 0 | FT_SLEEP | Whether or not include sleep management | 0 | FT_UPLOAD_FIRMWARE | Whether or not to use OAT | 1 | FT_DOWNLOAD_FIRMWARE | Whether or not to use github for firmware updates | 1 | FT_ANALYTICS | Whether or not to use analytics service | 1 | TF_MDNS | Whether or not to use MDNS | 1 | TF_DNS_SERVER | Whether or not to use DNS server | 1 | TF_MPU | Whether or not to use MPU | 1 | TF_POWER_BUTTON | Whether or not to use power button | 1 | TF_USS | Whether or not to use ultra sonic sensors | 1
The web application is a simple Svelte app, which main focus is to calibrate and control the robot.
It is made to be included and hosted by the robot. Therefore there is placed a lot of thought behind the functionality and dependencies.
For the development dependencies I choose the following
Dependencies | Description |
---|---|
SvelteKit | SvelteKit is an application framework built on top of Svelte, enhancing it with features like routing, server-side rendering, and static site generation. It streamlines the development process by integrating server-side capabilities with Svelte's client-side benefits. Furthermore it make the development process fast and enjoyable. |
Vite | Vite is a frontend tool that is used for building fast and optimized web applications. Is serves code local during development and bundles assets for production |
Typescript | TypeScript's integration of static typing enhances code reliability and maintainability. |
Tailwind CSS | Tailwind CSS accelerates web development with its utility-first approach, ensuring rapid styling and consistent design. |
| Vite compression plugin | This plugin compresses the index.html file making the final footprint a lot smaller.
For the app functionality I choose the following:
Dependencies | Description |
---|---|
Three | Easy to use, lightweight, cross-browser, general purpose 3D library. |
Urdf-loader | Utilities for loading URDF files into THREE.js and a Web Component that loads and renders the model. |
Xacro-parser | Javascript parser and loader for processing the ROS Xacro file format. |
NippleJS | A vanilla virtual joystick for touch capable interfaces. |
Uzip | Simple, tiny and fast ZIP library. |
ChartJS | Simple and flexible charting library. |
The kinematic for the robot is from this kinematics paper
Clone and open the new project
git clone https://github.com/runeharlyk/SpotMicroESP32-Leika
Install dependencies
cd app
pnpm install
Configure device settings
factory_settings.ini
with relevant settingsRun the app
pnpm run dev
Build the app
pnpm run build
Upload Filesystem Image using platformIO
See the open issues for a full list of proposed features (and known issues).
This project takes great inspiration from the following resources:
runeharlyk.dk · GitHub @runeharlyk · LinkedIn @Rune Harlyk