Giter Club home page Giter Club logo

runeharlyk / spotmicroesp32-leika Goto Github PK

View Code? Open in Web Editor NEW
14.0 4.0 0.0 97.46 MB

My take on the quadruped Spot Micro robot. Its built around an ESP32 cam microcontroller and utilizes a svelte app to control it

License: MIT License

C 84.34% C++ 9.16% HTML 0.01% JavaScript 0.55% Shell 0.01% Svelte 3.68% CSS 0.01% TypeScript 1.79% Python 0.35% Processing 0.12%
esp32 esp32-cam freertos robot robotics spot spotmicro svelte tailwindcss typescript

spotmicroesp32-leika's Introduction


Markdownify
Spot Micro - Leika

A small quadruped robot, inspired by boston dynamic Spot.

Key FeaturesOverviewGetting startedCreditsLicense

Status

Frontend Tests

Key Features

  • Live preview - Make changes, See changes
  • Real time data sync
    • Camera live stream
  • Dual joystick controller
  • Dark/Light mode
  • Full screen mode
    • Immersive, distraction free.
  • Self hosted, self included

Overview

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.

Electronics

  • ESP32 cam - Brain
  • OV2640 160° - Camera
  • PCA9685 - Servo board
  • 12x 20kg(or higher) servo motors
  • MPU6050 - Inertial measurement unit
  • GY-271 - Magnetometer
  • SZBK07 - 20A DC-DC Buck Converter
  • LM2596 or XL4015 - DC-DC Stepdown Module
  • 2x HC-SR04 - Ultrasonic Distance Sensor
  • 0.96" SD1306 - OLED diplay
  • ACS712 - Current sensor
  • ADS1115 - 16 bit analog to digital converter
  • Power button w/ led
  • 4x 18650 Li-ion battery in 2P2S configuration
  • Couple of resistors (10K, 47.7k, 33K)
  • 4x Servo extension cables

Connection Diagram

alt text

Body

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:

  • 84x M2x8 screws + M2 nuts
  • 92x M3x8 screws + M3 nuts
  • 64x M3x20 screws + M3 nuts
  • 12x 625ZZ ball bearings

Software

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:

  • Esp32SvelteKit
  • PsychicHttp
  • ArduinoJson
  • Adafruit SSD1306
  • Adafruit GFX Library
  • Adafruit BusIO
  • Adafruit PWM Servo Driver Library
  • Adafruit ADS1X15
  • Adafruit HMC5883 Unified
  • Adafruit Unified Sensor
  • UrlEncode
  • MPU6050 light
  • SPI

Structure

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

Feature flags

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 0
FT_DOWNLOAD_FIRMWARE Whether or not to use github for firmware updates 0
FT_ANALYTICS Whether or not to use analytics service 1

📲 Controller

The controller is a SvelteKit 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.

Development 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.

Libraries

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.

Kinematics

The kinematic for the robot is from this kinematics paper

Getting started

  1. Clone and open the new project

    git clone https://github.com/runeharlyk/SpotMicroESP32-Leika
  2. Install dependencies with preferable package manager (npm, pnpm, yarn)

    cd app
    pnpm install
  3. Configure device settings

    1. Update factory_settings.ini with relevant settings
  4. Upload filesystem image using platformIO

  5. Upload firmware using platformIO

Usage

Developing

  1. Run the app

    cd app
    pnpm run dev

Future

See the open issues for a full list of proposed features (and known issues).

Credits

This project takes great inspiration from the following resources:

  1. Spot Micro Quadruped Project - mike4192
  2. Kinematics
  3. ESP32SvelteKit template
  4. SpotMicroAi
  5. Spot Micro - Leika
  6. NightDriverStrip

Support

Buy Me A Coffee

You may also like...

License

MIT


runeharlyk.dk  ·  GitHub @runeharlyk  ·  LinkedIn @Rune Harlyk

spotmicroesp32-leika's People

Contributors

runeharlyk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

spotmicroesp32-leika's Issues

Servo calibration tool

It can be a very complicated process to assemble and calibrate the robot.
It would be nice to have a tool that can help calibrate the servos to ensure the correct positions of each actuator

I want to be able to control each servo in realtime. I want to control:

  • Resolution
  • Frequency
  • Lower PWN limit
  • Upper PWM limit
  • Whether a servo is enabled
  • Whether a servos direction is inverted

Further i want to find the actual PWN to degree ratio, which make the real robot movement more precise

Stop button

If the robot is trying to get in an unobtainable position the actuators can be damaged or even burn out.

I want a stop function that disables all servos.

This function should accessible through the API, via websocket and the physical power button. The function should also be called if the power draw limit is exceeded.

The code running the disable function should have the highest priority.

GPS view

I want the robot to be able to share GPS coordinate and then show them on a map

Captive portal fallback

Problem

When the robot can't find or connect to the save wifi, the robot can't be controlled

Solution

When the robot can't find or connect to wifi, it will start AP and host a captive portal where wifi credentials can be updated. The captive portal can work a fully functional controller interface.

Split robot firmware

It could be beneficial to split the robot firmware into an interface/planner and a controller. This would give the user a choice for selecting hardware for budgeting etc.

The interface controller could be an esp32(cam), raspberry pi or jetson nano. It purpose would be taking input and planning trajectories.

The controller could be an esp32, teensy 4.0, stm32 or other. The main purpose would be collection sensor data (uss, button, imu, adc etc), calculate inverse kinematics and updating hardware (servos, led, oled)

Simulation vs visualization

The app should differentiate between simulation and visualization of the robot.

The user should be able to choose if the robot should be simulated of be a mirror of reality.

For simulation, input should be user generated to test how the robot react.
This includes:

  • Camera live feed
  • Ultra sonic sensor
  • Battery voltage and current draw
  • IMU data (Range slider to start, migrate to cannonJS ridged body simulation)

Gamepad and keyboard controls

When using the controller on a desktop device I want to be able to control the robot without using touch controls.

I want to control the robot using keyboard command or using a third party gamepad

I2C Issues

--- Available filters and text transformations: colorize, debug, default, direct, esp32_exception_decoder, hexlify, log2file, nocontrol, printable, send_on_enter, time
--- More details at https://bit.ly/pio-monitor-filters
--- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H
[   486][I][esp32-hal-psram.c:96] psramInit(): PSRAM enabled
[   499][I][ESP32SvelteKit.cpp:77] begin(): [Running Firmware Version: %s] 0.0.1
[   729][I][EventSocket.cpp:190] onSubscribe(): [EventSocket] onSubscribe for event: WiFiSettings
[   772][I][EventSocket.cpp:190] onSubscribe(): [EventSocket] onSubscribe for event: angles
[   772][I][CameraService.cpp:86] InitializeCamera(): Initializing camera
[  1007][I][EventSocket.cpp:190] onSubscribe(): [EventSocket] onSubscribe for event: CameraSettings
[  1009][I][EventSocket.cpp:190] onSubscribe(): [EventSocket] onSubscribe for event: ConfigurationSettings
[  1049][I][esp32-hal-i2c.c:75] i2cInit(): Initialising I2C Master: sda=14 scl=15 freq=100000
[  2051][E][Wire.cpp:513] requestFrom(): i2cRead returned Error 263
[  3052][E][Wire.cpp:513] requestFrom(): i2cRead returned Error 263
[  4053][E][Wire.cpp:513] requestFrom(): i2cRead returned Error 263
[  5054][E][Wire.cpp:513] requestFrom(): i2cRead returned Error 263
[  6055][E][Wire.cpp:513] requestFrom(): i2cRead returned Error 263
[  7056][E][Wire.cpp:513] requestFrom(): i2cRead returned Error 263
[  8158][E][Wire.cpp:513] requestFrom(): i2cRead returned Error 263
[  9262][E][Wire.cpp:513] requestFrom(): i2cRead returned Error 263
[  9262][E][IMUService.h:36] begin(): [IMUService] MPU initialize failed
[ 10264][E][Wire.cpp:513] requestFrom(): i2cRead returned Error 263
[ 11265][E][Wire.cpp:513] requestFrom(): i2cRead returned Error 263
[ 12266][E][Wire.cpp:513] requestFrom(): i2cRead returned Error 263
[ 13267][E][Wire.cpp:513] requestFrom(): i2cRead returned Error 263
[ 14268][E][Wire.cpp:513] requestFrom(): i2cRead returned Error 263
[ 14268][E][IMUService.h:52] begin(): [IMUService] BMP initialize failed
[ 14947][E][Wire.cpp:499] requestFrom(): i2cWriteReadNonStop returned Error -1
[ 15447][E][Wire.cpp:499] requestFrom(): i2cWriteReadNonStop returned Error -1
[ 15948][E][Wire.cpp:499] requestFrom(): i2cWriteReadNonStop returned Error -1
[ 16449][E][Wire.cpp:499] requestFrom(): i2cWriteReadNonStop returned Error -1
[ 16952][E][Wire.cpp:499] requestFrom(): i2cWriteReadNonStop returned Error -1
[ 17452][E][Wire.cpp:499] requestFrom(): i2cWriteReadNonStop returned Error -1
[ 17953][E][Wire.cpp:499] requestFrom(): i2cWriteReadNonStop returned Error -1
[ 18454][E][Wire.cpp:499] requestFrom(): i2cWriteReadNonStop returned Error -1
[ 18957][E][Wire.cpp:499] requestFrom(): i2cWriteReadNonStop returned Error -1
[ 19458][E][Wire.cpp:499] requestFrom(): i2cWriteReadNonStop returned Error -1
[ 19959][E][Wire.cpp:499] requestFrom(): i2cWriteReadNonStop returned Error -1
[ 20460][E][Wire.cpp:499] requestFrom(): i2cWriteReadNonStop returned Error -1
[ 20963][E][Wire.cpp:499] requestFrom(): i2cWriteReadNonStop returned Error -1
[ 21464][E][Wire.cpp:499] requestFrom(): i2cWriteReadNonStop returned Error -1
[ 21965][E][Wire.cpp:499] requestFrom(): i2cWriteReadNonStop returned Error -1
[ 22466][E][Wire.cpp:499] requestFrom(): i2cWriteReadNonStop returned Error -1
[ 22969][E][Wire.cpp:499] requestFrom(): i2cWriteReadNonStop returned Error -1
[ 23469][E][Wire.cpp:499] requestFrom(): i2cWriteReadNonStop returned Error -1
[ 23971][E][Wire.cpp:499] requestFrom(): i2cWriteReadNonStop returned Error -1
[ 24471][E][Wire.cpp:499] requestFrom(): i2cWriteReadNonStop returned Error -1

I went I upload and monitor, I get this. I've also been getting issues trying to connect I2C to connect to the MPU and GPY.
Do you think adding the multiplexer would help clean up some of the wiring.
Adafruit TCA9548A I2C Multiplexer

Add documentation

Write about the general build, working, project structure and how to contribute.

Write about the api's

Update credits

Write about the use of SI units. m and Rads

Common problems and troubleshooting

Pin Out documentation

I'm looking for better documentation for pin out and better electronics schematics/layout for assembly. Might need an additional part for I2C bus expansion.

Build pipeline

I want to be able to build and deploy the web application automatically

Ability to change the scene environments

I want to be able to see my robot in different environments with unique terrains. This could include but is not limited to:

  • Playground (Default)
  • Forest
  • Dessert
  • Snowy
  • HDR custom skybox (Upload)

Unable to Test Repository as It Cannot Be Uploaded

platformio.exe run
Processing esp32cam (board: esp32cam; platform: espressif32; framework: arduino)

Verbose mode can be enabled via -v, --verbose option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32cam.html
PLATFORM: Espressif 32 (6.3.2) > AI Thinker ESP32-CAM
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
DEBUG: Current (cmsis-dap) External (cmsis-dap, esp-bridge, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES:

  • framework-arduinoespressif32 @ 3.20009.0 (2.0.9)
  • tool-esptoolpy @ 1.40501.0 (4.5.1)
  • toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch5
    LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
    LDF Modes: Finder ~ chain, Compatibility ~ soft
    Found 47 compatible libraries
    Scanning dependencies...
    Dependency Graph
    |-- ESP Async WebServer @ 1.2.3+sha.f71e3d4
    |-- ArduinoJson @ 6.21.3
    |-- Bounce2 @ 2.71.0
    |-- NewPing @ 1.9.7
    |-- Adafruit SSD1306 @ 2.5.7
    |-- Adafruit GFX Library @ 1.11.7
    |-- Adafruit BusIO @ 1.14.1
    |-- Adafruit PWM Servo Driver Library @ 2.4.1
    |-- Adafruit ADS1X15 @ 2.4.0
    |-- Adafruit HMC5883 Unified @ 1.2.1
    |-- Adafruit Unified Sensor @ 1.1.11
    |-- UrlEncode @ 1.0.1
    |-- MPU6050_light @ 1.1.0
    |-- HTTPClient @ 2.0.0
    |-- SPIFFS @ 2.0.0
    |-- ArduinoOTA @ 2.0.0
    |-- DNSServer @ 2.0.0
    |-- ESPmDNS @ 2.0.0
    |-- WiFi @ 2.0.0
    |-- Wire @ 2.0.0
    |-- Update @ 2.0.0
    Building in release mode
    Compiling .pio\build\esp32cam\src\camera.cpp.o
    Compiling .pio\build\esp32cam\src\deviceconfig.cpp.o
    Compiling .pio\build\esp32cam\src\jsonserializer.cpp.o
    Compiling .pio\build\esp32cam\src\main.cpp.o
    Compiling .pio\build\esp32cam\src\network.cpp.o
    Compiling .pio\build\esp32cam\src\servo.cpp.o
    Compiling .pio\build\esp32cam\src\webserver.cpp.o
    Compiling .pio\build\esp32cam\lib8da\FS\vfs_api.cpp.o
    In file included from src/camera.cpp:2:
    include/camera_pins.h:296:2: error: #error "Camera model not selected"
    #error "Camera model not selected"
    ^~~~~
    In file included from include/globals.h:80,
    from include/servo.h:5,
    from src/camera.cpp:1:
    include/webserver.h: In constructor 'CWebServer::CWebServer()':
    include/webserver.h:123:19: error: 'HTTP_PORT' was not declared in this scope
    : _server(HTTP_PORT)
    ^~~~~~~~~
    include/webserver.h:123:19: note: suggested alternative: 'HTTP_POST'
    : _server(HTTP_PORT)
    ^~~~~~~~~
    HTTP_POST
    include/webserver.h:125:15: error: 'WEBSOCKET_PATH' was not declared in this scope
    , _ws(WEBSOCKET_PATH)
    ^~~~~~~~~~~~~~
    include/webserver.h:125:15: note: suggested alternative: 'LWIP_SOCKET_POLL'
    , _ws(WEBSOCKET_PATH)
    ^~~~~~~~~~~~~~
    LWIP_SOCKET_POLL
    include/webserver.h: In member function 'void CWebServer::begin()':
    include/webserver.h:133:56: error: 'HOSTNAME' was not declared in this scope
    DefaultHeaders::Instance().addHeader("Server", HOSTNAME);
    ^~~~~~~~
    include/webserver.h:133:56: note: suggested alternative: 'ESTALE'
    DefaultHeaders::Instance().addHeader("Server", HOSTNAME);
    ^~~~~~~~
    ESTALE
    src/camera.cpp: In function 'esp_err_t InitializeCamera()':
    src/camera.cpp:9:28: error: 'Y2_GPIO_NUM' was not declared in this scope
    camera_config.pin_d0 = Y2_GPIO_NUM;
    ^~~~~~~~~~~
    src/camera.cpp:9:28: note: suggested alternative: 'GPIO_NUM_9'
    camera_config.pin_d0 = Y2_GPIO_NUM;
    ^~~~~~~~~~~
    GPIO_NUM_9
    src/camera.cpp:10:28: error: 'Y3_GPIO_NUM' was not declared in this scope
    camera_config.pin_d1 = Y3_GPIO_NUM;
    ^~~~~~~~~~~
    src/camera.cpp:10:28: note: suggested alternative: 'GPIO_NUM_9'
    camera_config.pin_d1 = Y3_GPIO_NUM;
    ^~~~~~~~~~~
    GPIO_NUM_9
    src/camera.cpp:11:28: error: 'Y4_GPIO_NUM' was not declared in this scope
    camera_config.pin_d2 = Y4_GPIO_NUM;
    ^~~~~~~~~~~
    src/camera.cpp:11:28: note: suggested alternative: 'GPIO_NUM_9'
    camera_config.pin_d2 = Y4_GPIO_NUM;
    ^~~~~~~~~~~
    GPIO_NUM_9
    src/camera.cpp:12:28: error: 'Y5_GPIO_NUM' was not declared in this scope
    camera_config.pin_d3 = Y5_GPIO_NUM;
    ^~~~~~~~~~~
    src/camera.cpp:12:28: note: suggested alternative: 'GPIO_NUM_9'
    camera_config.pin_d3 = Y5_GPIO_NUM;
    ^~~~~~~~~~~
    GPIO_NUM_9
    src/camera.cpp:13:28: error: 'Y6_GPIO_NUM' was not declared in this scope
    camera_config.pin_d4 = Y6_GPIO_NUM;
    ^~~~~~~~~~~
    src/camera.cpp:13:28: note: suggested alternative: 'GPIO_NUM_9'
    camera_config.pin_d4 = Y6_GPIO_NUM;
    ^~~~~~~~~~~
    GPIO_NUM_9
    src/camera.cpp:14:28: error: 'Y7_GPIO_NUM' was not declared in this scope
    camera_config.pin_d5 = Y7_GPIO_NUM;
    ^~~~~~~~~~~
    src/camera.cpp:14:28: note: suggested alternative: 'GPIO_NUM_9'
    camera_config.pin_d5 = Y7_GPIO_NUM;
    ^~~~~~~~~~~
    GPIO_NUM_9
    src/camera.cpp:15:28: error: 'Y8_GPIO_NUM' was not declared in this scope
    camera_config.pin_d6 = Y8_GPIO_NUM;
    ^~~~~~~~~~~
    src/camera.cpp:15:28: note: suggested alternative: 'GPIO_NUM_9'
    camera_config.pin_d6 = Y8_GPIO_NUM;
    ^~~~~~~~~~~
    GPIO_NUM_9
    src/camera.cpp:16:28: error: 'Y9_GPIO_NUM' was not declared in this scope
    camera_config.pin_d7 = Y9_GPIO_NUM;
    ^~~~~~~~~~~
    src/camera.cpp:16:28: note: suggested alternative: 'GPIO_NUM_9'
    camera_config.pin_d7 = Y9_GPIO_NUM;
    ^~~~~~~~~~~
    GPIO_NUM_9
    src/camera.cpp:17:30: error: 'XCLK_GPIO_NUM' was not declared in this scope
    camera_config.pin_xclk = XCLK_GPIO_NUM;
    ^~~~~~~~~~~~~
    src/camera.cpp:17:30: note: suggested alternative: 'SPI_CLK_GPIO_NUM'
    camera_config.pin_xclk = XCLK_GPIO_NUM;
    ^~~~~~~~~~~~~
    SPI_CLK_GPIO_NUM
    src/camera.cpp:18:30: error: 'PCLK_GPIO_NUM' was not declared in this scope
    camera_config.pin_pclk = PCLK_GPIO_NUM;
    ^~~~~~~~~~~~~
    src/camera.cpp:18:30: note: suggested alternative: 'SPI_CLK_GPIO_NUM'
    camera_config.pin_pclk = PCLK_GPIO_NUM;
    ^~~~~~~~~~~~~
    SPI_CLK_GPIO_NUM
    src/camera.cpp:19:31: error: 'VSYNC_GPIO_NUM' was not declared in this scope
    camera_config.pin_vsync = VSYNC_GPIO_NUM;
    ^~~~~~~~~~~~~~
    In file included from include/servo.h:6,
    from include/globals.h:72,
    from src/main.cpp:1:
    include/webserver.h: In constructor 'CWebServer::CWebServer()':
    include/webserver.h:123:19: error: 'HTTP_PORT' was not declared in this scope
    : _server(HTTP_PORT)
    ^~~~~~~~~
    include/webserver.h:123:19: note: suggested alternative: 'HTTP_POST'
    : _server(HTTP_PORT)
    ^~~~~~~~~
    HTTP_POST
    include/webserver.h:125:15: error: 'WEBSOCKET_PATH' was not declared in this scope
    , _ws(WEBSOCKET_PATH)
    ^~~~~~~~~~~~~~
    In file included from include/servo.h:6,
    from include/globals.h:72,
    from src/deviceconfig.cpp:3:
    include/webserver.h: In constructor 'CWebServer::CWebServer()':
    include/webserver.h:123:19: error: 'HTTP_PORT' was not declared in this scope
    : _server(HTTP_PORT)
    ^~~~~~~~~
    src/camera.cpp:19:31: note: suggested alternative: 'SPI_D_GPIO_NUM'
    camera_config.pin_vsync = VSYNC_GPIO_NUM;
    ^~~~~~~~~~~~~~
    SPI_D_GPIO_NUM
    src/camera.cpp:20:30: error: 'HREF_GPIO_NUM' was not declared in this scope
    camera_config.pin_href = HREF_GPIO_NUM;
    ^~~~~~~~~~~~~
    include/webserver.h:123:19: note: suggested alternative: 'HTTP_POST'
    : _server(HTTP_PORT)
    ^~~~~~~~~
    HTTP_POST
    include/webserver.h:125:15: error: 'WEBSOCKET_PATH' was not declared in this scope
    , _ws(WEBSOCKET_PATH)
    ^~~~~~~~~~~~~~
    src/camera.cpp:20:30: note: suggested alternative: 'SPI_D_GPIO_NUM'
    camera_config.pin_href = HREF_GPIO_NUM;
    ^~~~~~~~~~~~~
    SPI_D_GPIO_NUM
    src/camera.cpp:21:19: warning: 'camera_config_t::::pin_sscb_sda' is deprecated: please use pin_sccb_sda instead [-Wdeprecated-declarations]
    camera_config.pin_sscb_sda = SIOD_GPIO_NUM;
    ^~~~~~~~~~~~
    In file included from include/AsyncJpegStream.h:2,
    from include/webserver.h:12,
    from include/globals.h:80,
    from include/servo.h:5,
    from src/camera.cpp:1:
    C:/Users/rzieb/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp32-camera/driver/include/esp_camera.h:117:87: note: declared here
    int pin_sscb_sda attribute((deprecated("please use pin_sccb_sda instead"))); /*!< GPIO pin for camera SDA line (legacy name) /
    ^
    include/webserver.h:125:15: note: suggested alternative: 'LWIP_SOCKET_POLL'
    , _ws(WEBSOCKET_PATH)
    ^~~~~~~~~~~~~~
    LWIP_SOCKET_POLL
    src/camera.cpp:21:19: warning: 'camera_config_t::::pin_sscb_sda' is deprecated: please use pin_sccb_sda instead [-Wdeprecated-declarations]
    camera_config.pin_sscb_sda = SIOD_GPIO_NUM;
    ^~~~~~~~~~~~
    In file included from include/AsyncJpegStream.h:2,
    from include/webserver.h:12,
    from include/globals.h:80,
    from include/servo.h:5,
    from src/camera.cpp:1:
    C:/Users/rzieb/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp32-camera/driver/include/esp_camera.h:117:87: note: declared here
    int pin_sscb_sda attribute((deprecated("please use pin_sccb_sda instead"))); /
    !< GPIO pin for camera SDA line (legacy name) /
    ^
    src/camera.cpp:21:19: warning: 'camera_config_t::::pin_sscb_sda' is deprecated: please use pin_sccb_sda instead [-Wdeprecated-declarations]
    camera_config.pin_sscb_sda = SIOD_GPIO_NUM;
    ^~~~~~~~~~~~
    In file included from include/AsyncJpegStream.h:2,
    from include/webserver.h:12,
    from include/globals.h:80,
    from include/servo.h:5,
    from src/camera.cpp:1:
    C:/Users/rzieb/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp32-camera/driver/include/esp_camera.h:117:87: note: declared here
    int pin_sscb_sda attribute((deprecated("please use pin_sccb_sda instead"))); /
    !< GPIO pin for camera SDA line (legacy name) /
    ^
    src/camera.cpp:21:34: error: 'SIOD_GPIO_NUM' was not declared in this scope
    camera_config.pin_sscb_sda = SIOD_GPIO_NUM;
    ^~~~~~~~~~~~~
    include/webserver.h:125:15: note: suggested alternative: 'LWIP_SOCKET_POLL'
    , _ws(WEBSOCKET_PATH)
    ^~~~~~~~~~~~~~
    LWIP_SOCKET_POLL
    include/webserver.h: In member function 'void CWebServer::begin()':
    include/webserver.h:133:56: error: 'HOSTNAME' was not declared in this scope
    DefaultHeaders::Instance().addHeader("Server", HOSTNAME);
    ^~~~~~~~
    include/webserver.h: In member function 'void CWebServer::begin()':
    include/webserver.h:133:56: error: 'HOSTNAME' was not declared in this scope
    DefaultHeaders::Instance().addHeader("Server", HOSTNAME);
    ^~~~~~~~
    include/webserver.h:133:56: note: suggested alternative: 'ESTALE'
    DefaultHeaders::Instance().addHeader("Server", HOSTNAME);
    ^~~~~~~~
    ESTALE
    src/camera.cpp:21:34: note: suggested alternative: 'SPI_D_GPIO_NUM'
    camera_config.pin_sscb_sda = SIOD_GPIO_NUM;
    ^~~~~~~~~~~~~
    SPI_D_GPIO_NUM
    src/camera.cpp:22:19: warning: 'camera_config_t::::pin_sscb_scl' is deprecated: please use pin_sccb_scl instead [-Wdeprecated-declarations]
    camera_config.pin_sscb_scl = SIOC_GPIO_NUM;
    ^~~~~~~~~~~~
    In file included from include/AsyncJpegStream.h:2,
    from include/webserver.h:12,
    from include/globals.h:80,
    from include/servo.h:5,
    from src/camera.cpp:1:
    C:/Users/rzieb/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp32-camera/driver/include/esp_camera.h:121:87: note: declared here
    int pin_sscb_scl attribute((deprecated("please use pin_sccb_scl instead"))); /
    !< GPIO pin for camera SCL line (legacy name) /
    ^
    src/camera.cpp:22:19: warning: 'camera_config_t::::pin_sscb_scl' is deprecated: please use pin_sccb_scl instead [-Wdeprecated-declarations]
    camera_config.pin_sscb_scl = SIOC_GPIO_NUM;
    ^~~~~~~~~~~~
    In file included from include/servo.h:6,
    from include/globals.h:72,
    from src/network.cpp:1:
    include/webserver.h: In constructor 'CWebServer::CWebServer()':
    include/webserver.h:123:19: error: 'HTTP_PORT' was not declared in this scope
    : _server(HTTP_PORT)
    ^~~~~~~~~
    In file included from include/AsyncJpegStream.h:2,
    from include/webserver.h:12,
    from include/globals.h:80,
    from include/servo.h:5,
    from src/camera.cpp:1:
    C:/Users/rzieb/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp32-camera/driver/include/esp_camera.h:121:87: note: declared here
    int pin_sscb_scl attribute((deprecated("please use pin_sccb_scl instead"))); /
    !< GPIO pin for camera SCL line (legacy name) /
    ^
    src/camera.cpp:22:19: warning: 'camera_config_t::::pin_sscb_scl' is deprecated: please use pin_sccb_scl instead [-Wdeprecated-declarations]
    camera_config.pin_sscb_scl = SIOC_GPIO_NUM;
    ^~~~~~~~~~~~
    In file included from include/AsyncJpegStream.h:2,
    from include/webserver.h:12,
    from include/globals.h:80,
    from include/servo.h:5,
    from src/camera.cpp:1:
    C:/Users/rzieb/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp32-camera/driver/include/esp_camera.h:121:87: note: declared here
    int pin_sscb_scl attribute((deprecated("please use pin_sccb_scl instead"))); /
    !< GPIO pin for camera SCL line (legacy name) */
    ^
    src/camera.cpp:22:34: error: 'SIOC_GPIO_NUM' was not declared in this scope
    camera_config.pin_sscb_scl = SIOC_GPIO_NUM;
    ^~~~~~~~~~~~~
    include/webserver.h:133:56: note: suggested alternative: 'ESTALE'
    DefaultHeaders::Instance().addHeader("Server", HOSTNAME);
    ^~~~~~~~
    ESTALE
    In file included from include/servo.h:6,
    from include/globals.h:72,
    from src/jsonserializer.cpp:1:
    include/webserver.h: In constructor 'CWebServer::CWebServer()':
    include/webserver.h:123:19: error: 'HTTP_PORT' was not declared in this scope
    : _server(HTTP_PORT)
    ^~~~~~~~~
    include/webserver.h:123:19: note: suggested alternative: 'HTTP_POST'
    : _server(HTTP_PORT)
    ^~~~~~~~~
    HTTP_POST
    include/webserver.h:125:15: error: 'WEBSOCKET_PATH' was not declared in this scope
    , _ws(WEBSOCKET_PATH)
    ^~~~~~~~~~~~~~
    include/webserver.h:123:19: note: suggested alternative: 'HTTP_POST'
    : _server(HTTP_PORT)
    ^~~~~~~~~
    HTTP_POST
    include/webserver.h:125:15: error: 'WEBSOCKET_PATH' was not declared in this scope
    , _ws(WEBSOCKET_PATH)
    ^~~~~~~~~~~~~~
    src/camera.cpp:22:34: note: suggested alternative: 'SPI_D_GPIO_NUM'
    camera_config.pin_sscb_scl = SIOC_GPIO_NUM;
    ^~~~~~~~~~~~~
    SPI_D_GPIO_NUM
    src/camera.cpp:23:30: error: 'PWDN_GPIO_NUM' was not declared in this scope
    camera_config.pin_pwdn = PWDN_GPIO_NUM;
    ^~~~~~~~~~~~~
    src/camera.cpp:23:30: note: suggested alternative: 'SPI_D_GPIO_NUM'
    camera_config.pin_pwdn = PWDN_GPIO_NUM;
    ^~~~~~~~~~~~~
    SPI_D_GPIO_NUM
    src/camera.cpp:24:31: error: 'RESET_GPIO_NUM' was not declared in this scope
    camera_config.pin_reset = RESET_GPIO_NUM;
    ^~~~~~~~~~~~~~
    In file included from include/globals.h:80,
    from include/servo.h:5,
    from src/servo.cpp:1:
    include/webserver.h: In constructor 'CWebServer::CWebServer()':
    include/webserver.h:123:19: error: 'HTTP_PORT' was not declared in this scope
    : _server(HTTP_PORT)
    ^~~~~~~~~
    include/webserver.h:125:15: note: suggested alternative: 'LWIP_SOCKET_POLL'
    , _ws(WEBSOCKET_PATH)
    ^~~~~~~~~~~~~~
    LWIP_SOCKET_POLL
    include/webserver.h:125:15: note: suggested alternative: 'LWIP_SOCKET_POLL'
    , _ws(WEBSOCKET_PATH)
    ^~~~~~~~~~~~~~
    LWIP_SOCKET_POLL
    include/webserver.h: In member function 'void CWebServer::begin()':
    include/webserver.h:133:56: error: 'HOSTNAME' was not declared in this scope
    DefaultHeaders::Instance().addHeader("Server", HOSTNAME);
    ^~~~~~~~
    include/webserver.h: In member function 'void CWebServer::begin()':
    include/webserver.h:133:56: error: 'HOSTNAME' was not declared in this scope
    DefaultHeaders::Instance().addHeader("Server", HOSTNAME);
    ^~~~~~~~
    include/webserver.h:123:19: note: suggested alternative: 'HTTP_POST'
    : _server(HTTP_PORT)
    ^~~~~~~~~
    HTTP_POST
    include/webserver.h:125:15: error: 'WEBSOCKET_PATH' was not declared in this scope
    , _ws(WEBSOCKET_PATH)
    ^~~~~~~~~~~~~~
    include/webserver.h:133:56: note: suggested alternative: 'ESTALE'
    DefaultHeaders::Instance().addHeader("Server", HOSTNAME);
    ^~~~~~~~
    ESTALE
    include/webserver.h:133:56: note: suggested alternative: 'ESTALE'
    DefaultHeaders::Instance().addHeader("Server", HOSTNAME);
    ^~~~~~~~
    ESTALE
    src/camera.cpp:24:31: note: suggested alternative: 'SPI_D_GPIO_NUM'
    camera_config.pin_reset = RESET_GPIO_NUM;
    ^~~~~~~~~~~~~~
    SPI_D_GPIO_NUM
    src/network.cpp: In function 'bool ConnectToWiFi(uint)':
    src/network.cpp:18:22: error: 'HOSTNAME' was not declared in this scope
    WiFi.setHostname(HOSTNAME);
    ^~~~~~~~
    include/webserver.h:125:15: note: suggested alternative: 'LWIP_SOCKET_POLL'
    , _ws(WEBSOCKET_PATH)
    ^~~~~~~~~~~~~~
    LWIP_SOCKET_POLL
    include/webserver.h: In member function 'void CWebServer::begin()':
    include/webserver.h:133:56: error: 'HOSTNAME' was not declared in this scope
    DefaultHeaders::Instance().addHeader("Server", HOSTNAME);
    ^~~~~~~~
    src/network.cpp:18:22: note: suggested alternative: 'ESTALE'
    WiFi.setHostname(HOSTNAME);
    ^~~~~~~~
    ESTALE
    src/network.cpp:61:40: error: 'HTTP_PORT' was not declared in this scope
    MDNS.addService("http", "tcp", HTTP_PORT);
    ^~~~~~~~~
    src/network.cpp:61:40: note: suggested alternative: 'HTTP_POST'
    MDNS.addService("http", "tcp", HTTP_PORT);
    ^~~~~~~~~
    HTTP_POST
    include/webserver.h:133:56: note: suggested alternative: 'ESTALE'
    DefaultHeaders::Instance().addHeader("Server", HOSTNAME);
    ^~~~~~~~
    ESTALE
    In file included from include/servo.h:6,
    from include/globals.h:72,
    from src/webserver.cpp:1:
    include/webserver.h: In constructor 'CWebServer::CWebServer()':
    include/webserver.h:123:19: error: 'HTTP_PORT' was not declared in this scope
    : _server(HTTP_PORT)
    ^~~~~~~~~
    include/webserver.h:123:19: note: suggested alternative: 'HTTP_POST'
    : _server(HTTP_PORT)
    ^~~~~~~~~
    HTTP_POST
    include/webserver.h:125:15: error: 'WEBSOCKET_PATH' was not declared in this scope
    , _ws(WEBSOCKET_PATH)
    ^~~~~~~~~~~~~~
    include/webserver.h:125:15: note: suggested alternative: 'LWIP_SOCKET_POLL'
    , _ws(WEBSOCKET_PATH)
    ^~~~~~~~~~~~~~
    LWIP_SOCKET_POLL
    include/webserver.h: In member function 'void CWebServer::begin()':
    include/webserver.h:133:56: error: 'HOSTNAME' was not declared in this scope
    DefaultHeaders::Instance().addHeader("Server", HOSTNAME);
    ^~~~~~~~
    include/webserver.h:133:56: note: suggested alternative: 'ESTALE'
    DefaultHeaders::Instance().addHeader("Server", HOSTNAME);
    ^~~~~~~~
    ESTALE
    *** [.pio\build\esp32cam\src\camera.cpp.o] Error 1
    *** [.pio\build\esp32cam\src\deviceconfig.cpp.o] Error 1
    *** [.pio\build\esp32cam\src\network.cpp.o] Error 1
    *** [.pio\build\esp32cam\src\main.cpp.o] Error 1
    *** [.pio\build\esp32cam\src\servo.cpp.o] Error 1
    *** [.pio\build\esp32cam\src\jsonserializer.cpp.o] Error 1
    *** [.pio\build\esp32cam\src\webserver.cpp.o] Error 1
    ============================================== [FAILED] Took 7.41 seconds ==============================================

Issue building with PIO

|-- Adafruit SSD1306 @ 2.5.9
|-- Adafruit GFX Library @ 1.11.9
|-- Adafruit BusIO @ 1.16.0
|-- Adafruit PWM Servo Driver Library @ 2.4.1
|-- Adafruit ADS1X15 @ 2.5.0
|-- Adafruit HMC5883 Unified @ 1.2.3
|-- Adafruit Unified Sensor @ 1.1.14
|-- UrlEncode @ 1.0.1
|-- MPU6050_light @ 1.1.0
|-- SPI @ 2.0.0
|-- HTTPClient @ 2.0.0
|-- SPIFFS @ 2.0.0
|-- ArduinoOTA @ 2.0.0
|-- DNSServer @ 2.0.0
|-- ESPmDNS @ 2.0.0
|-- WiFi @ 2.0.0
|-- Wire @ 2.0.0
|-- Update @ 2.0.0
Building in release mode
Compiling .pio\build\esp32cam\src\AsyncJpegStream.cpp.o
Compiling .pio\build\esp32cam\src\camera.cpp.o
Compiling .pio\build\esp32cam\src\deviceconfig.cpp.o
Compiling .pio\build\esp32cam\src\jsonserializer.cpp.o
Compiling .pio\build\esp32cam\src\main.cpp.o
Compiling .pio\build\esp32cam\src\movement.cpp.o
Compiling .pio\build\esp32cam\src\network.cpp.o
Compiling .pio\build\esp32cam\src\servo.cpp.o
Compiling .pio\build\esp32cam\src\webserver.cpp.o
Building .pio\build\esp32cam\bootloader.bin
Generating partitions .pio\build\esp32cam\partitions.bin
esptool.py v4.5.1
Creating esp32 image...
Merged 1 ELF section
Successfully created esp32 image.
Compiling .pio\build\esp32cam\lib81e\AsyncTCP\AsyncTCP.cpp.o
In file included from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\sys\reent.h:503,
from C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/newlib/platform_include/sys/reent.h:17,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\stdio.h:60,
from C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/cores/esp32/Arduino.h:27,
from .pio/libdeps/esp32cam/ESP Async WebServer/src/ESPAsyncWebServer.h:24,
from include/AsyncJpegStream.h:1,
from src/AsyncJpegStream.cpp:1:
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h: In function 'void spinlock_initialize(spinlock_t*)':
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h:46:5: error: '__assert_func' was not declared in this scope
assert(lock);
^~~~~~
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h: In function 'bool spinlock_acquire(spinlock_t*, int32_t)':
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h:75:5: error: '__assert_func' was not declared in this scope
assert(lock);
^~~~~~
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h: In function 'void spinlock_release(spinlock_t*)':
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h:154:5: error: '__assert_func' was not declared in this scope
assert(lock);
^~~~~~
Compiling .pio\build\esp32cam\libc46\FS\FS.cpp.o
Compiling .pio\build\esp32cam\libc46\FS\vfs_api.cpp.o
*** [.pio\build\esp32cam\src\AsyncJpegStream.cpp.o] Error 1
In file included from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\sys\reent.h:503,
from C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/newlib/platform_include/sys/reent.h:17,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\stdio.h:60,
from C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/cores/esp32/Arduino.h:27,
from .pio/libdeps/esp32cam/MPU6050_light/src/MPU6050_light.h:16,
from src/movement.cpp:3:
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h: In function 'void spinlock_initialize(spinlock_t*)':
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h:46:5: error: '__assert_func' was not declared in this scope
assert(lock);
^~~~~~
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h: In function 'bool spinlock_acquire(spinlock_t*, int32_t)':
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h:75:5: error: '__assert_func' was not declared in this scope
assert(lock);
^~~~~~
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h: In function 'void spinlock_release(spinlock_t*)':
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h:154:5: error: '__assert_func' was not declared in this scope
assert(lock);
^~~~~~
In file included from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\sys\reent.h:503,
from C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/newlib/platform_include/sys/reent.h:17,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\stdio.h:60,
from C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/cores/esp32/Arduino.h:27,
from .pio/libdeps/esp32cam/AsyncTCP/src/AsyncTCP.cpp:22:
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h: In function 'void spinlock_initialize(spinlock_t*)':
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h:46:5: error: '__assert_func' was not declared in this scope
assert(lock);
^~~~~~
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h: In function 'bool spinlock_acquire(spinlock_t*, int32_t)':
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h:75:5: error: '__assert_func' was not declared in this scope
assert(lock);
^~~~~~
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h: In function 'void spinlock_release(spinlock_t*)':
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h:154:5: error: '__assert_func' was not declared in this scope
assert(lock);
^~~~~~
*** [.pio\build\esp32cam\src\movement.cpp.o] Error 1
In file included from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\sys\reent.h:503,
from C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/newlib/platform_include/sys/reent.h:17,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\wchar.h:6,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\cwchar:44,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\bits\postypes.h:40,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\iosfwd:40,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\memory:72,
from C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/libraries/HTTPClient/src/HTTPClient.h:34,
from src/deviceconfig.cpp:1:
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h: In function 'void spinlock_initialize(spinlock_t*)':
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h:46:5: error: '__assert_func' was not declared in this scope
assert(lock);
^~~~~~
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h: In function 'bool spinlock_acquire(spinlock_t*, int32_t)':
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h:75:5: error: '__assert_func' was not declared in this scope
assert(lock);
^~~~~~
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h: In function 'void spinlock_release(spinlock_t*)':
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h:154:5: error: '__assert_func' was not declared in this scope
assert(lock);
^~~~~~
In file included from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\sys\reent.h:503,
from C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/newlib/platform_include/sys/reent.h:17,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\wchar.h:6,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\cwchar:44,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\bits\postypes.h:40,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\iosfwd:40,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\memory:72,
from include/servo.h:3,
from src/camera.cpp:1:
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h: In function 'void spinlock_initialize(spinlock_t*)':
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h:46:5: error: '__assert_func' was not declared in this scope
assert(lock);
^~~~~~
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h: In function 'bool spinlock_acquire(spinlock_t*, int32_t)':
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h:75:5: error: '__assert_func' was not declared in this scope
assert(lock);
^~~~~~
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h: In function 'void spinlock_release(spinlock_t*)':
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h:154:5: error: '__assert_func' was not declared in this scope
assert(lock);
^~~~~~
In file included from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\sys\reent.h:503,
from C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/newlib/platform_include/sys/reent.h:17,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\wchar.h:6,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\cwchar:44,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\bits\postypes.h:40,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\iosfwd:40,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\memory:72,
from C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/libraries/FS/src/FS.h:24,
from C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/libraries/SPIFFS/src/SPIFFS.h:17,
from include/globals.h:3,
from src/jsonserializer.cpp:1:
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h: In function 'void spinlock_initialize(spinlock_t*)':
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h:46:5: error: '__assert_func' was not declared in this scope
assert(lock);
^~~~~~
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h: In function 'bool spinlock_acquire(spinlock_t*, int32_t)':
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h:75:5: error: '__assert_func' was not declared in this scope
assert(lock);
^~~~~~
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h: In function 'void spinlock_release(spinlock_t*)':
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h:154:5: error: '__assert_func' was not declared in this scope
assert(lock);
^~~~~~
In file included from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\sys\reent.h:503,
from C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/newlib/platform_include/sys/reent.h:17,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\wchar.h:6,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\cwchar:44,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\bits\postypes.h:40,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\iosfwd:40,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\memory:72,
from C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/libraries/FS/src/FS.h:24,
from C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/libraries/SPIFFS/src/SPIFFS.h:17,
from include/globals.h:3,
from src/main.cpp:1:
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h: In function 'void spinlock_initialize(spinlock_t*)':
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h:46:5: error: '__assert_func' was not declared in this scope
assert(lock);
^~~~~~
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h: In function 'bool spinlock_acquire(spinlock_t*, int32_t)':
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h:75:5: error: '__assert_func' was not declared in this scope
assert(lock);
^~~~~~
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h: In function 'void spinlock_release(spinlock_t*)':
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h:154:5: error: '__assert_func' was not declared in this scope
assert(lock);
^~~~~~
In file included from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\sys\reent.h:503,
from C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/newlib/platform_include/sys/reent.h:17,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\wchar.h:6,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\cwchar:44,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\bits\postypes.h:40,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\iosfwd:40,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\memory:72,
from C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/libraries/FS/src/FS.h:24,
from C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/libraries/SPIFFS/src/SPIFFS.h:17,
from include/globals.h:3,
from src/webserver.cpp:1:
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h: In function 'void spinlock_initialize(spinlock_t*)':
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h:46:5: error: '__assert_func' was not declared in this scope
assert(lock);
^~~~~~
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h: In function 'bool spinlock_acquire(spinlock_t*, int32_t)':
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h:75:5: error: '__assert_func' was not declared in this scope
assert(lock);
^~~~~~
In file included from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\sys\reent.h:503,
from C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/newlib/platform_include/sys/reent.h:17,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\wchar.h:6,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\cwchar:44,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\bits\postypes.h:40,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\iosfwd:40,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\memory:72,
from C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/libraries/FS/src/FS.h:24,
from C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/libraries/SPIFFS/src/SPIFFS.h:17,
from include/globals.h:3,
from src/network.cpp:1:
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h: In function 'void spinlock_initialize(spinlock_t*)':
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h:46:5: error: '__assert_func' was not declared in this scope
assert(lock);
^~~~~~
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h: In function 'bool spinlock_acquire(spinlock_t*, int32_t)':
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h:75:5: error: '__assert_func' was not declared in this scope
assert(lock);
^~~~~~
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h: In function 'void spinlock_release(spinlock_t*)':
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h:154:5: error: '__assert_func' was not declared in this scope
assert(lock);
^~~~~~
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h: In function 'void spinlock_release(spinlock_t*)':
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h:154:5: error: '__assert_func' was not declared in this scope
assert(lock);
^~~~~~
In file included from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\sys\reent.h:503,
from C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/newlib/platform_include/sys/reent.h:17,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\wchar.h:6,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\cwchar:44,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\bits\postypes.h:40,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\iosfwd:40,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\memory:72,
from C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/libraries/FS/src/FS.h:24,
from C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/libraries/FS/src/FS.cpp:21:
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h: In function 'void spinlock_initialize(spinlock_t*)':
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h:46:5: error: '__assert_func' was not declared in this scope
assert(lock);
^~~~~~
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h: In function 'bool spinlock_acquire(spinlock_t*, int32_t)':
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h:75:5: error: '__assert_func' was not declared in this scope
assert(lock);
^~~~~~
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h: In function 'void spinlock_release(spinlock_t*)':
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h:154:5: error: '__assert_func' was not declared in this scope
assert(lock);
^~~~~~
*** [.pio\build\esp32cam\lib81e\AsyncTCP\AsyncTCP.cpp.o] Error 1
In file included from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\sys\reent.h:503,
from C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/newlib/platform_include/sys/reent.h:17,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\wchar.h:6,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\cwchar:44,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\bits\postypes.h:40,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\iosfwd:40,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\memory:72,
from C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/libraries/FS/src/FS.h:24,
from C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/libraries/FS/src/vfs_api.h:18,
from C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/libraries/FS/src/vfs_api.cpp:15:
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h: In function 'void spinlock_initialize(spinlock_t*)':
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h:46:5: error: '__assert_func' was not declared in this scope
assert(lock);
^~~~~~
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h: In function 'bool spinlock_acquire(spinlock_t*, int32_t)':
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h:75:5: error: '__assert_func' was not declared in this scope
assert(lock);
^~~~~~
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h: In function 'void spinlock_release(spinlock_t*)':
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h:154:5: error: '__assert_func' was not declared in this scope
assert(lock);
^~~~~~
In file included from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\sys\reent.h:503,
from C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/newlib/platform_include/sys/reent.h:17,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\wchar.h:6,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\cwchar:44,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\bits\postypes.h:40,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\iosfwd:40,
from c:\users\rip_h.platformio\packages\[email protected]+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\memory:72,
from include/servo.h:3,
from src/servo.cpp:1:
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h: In function 'void spinlock_initialize(spinlock_t*)':
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h:46:5: error: '__assert_func' was not declared in this scope
assert(lock);
^~~~~~
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h: In function 'bool spinlock_acquire(spinlock_t*, int32_t)':
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h:75:5: error: '__assert_func' was not declared in this scope
assert(lock);
^~~~~~
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h: In function 'void spinlock_release(spinlock_t*)':
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/spinlock.h:154:5: error: '__assert_func' was not declared in this scope
assert(lock);
^~~~~~
*** [.pio\build\esp32cam\libc46\FS\FS.cpp.o] Error 1
*** [.pio\build\esp32cam\libc46\FS\vfs_api.cpp.o] Error 1
src/main.cpp: In function 'void setup()':
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_common/include/esp_assert.h:39:13: error: '__assert_func' was not declared in this scope
assert(#MSG && (CONDITION));
^~~~~~
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/soc/esp32/include/soc/soc.h:96:38: note: in expansion of macro 'TRY_STATIC_ASSERT'
#define ASSERT_IF_DPORT_REG(_r, OP) TRY_STATIC_ASSERT(!IS_DPORT_REG(r), (Cannot use OP for DPORT registers use DPORT##OP));
^~~~~~~~~~~~~~~~~
C:/Users/rip_h/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/soc/esp32/include/soc/soc.h:175:13: note: in expansion of macro 'ASSERT_IF_DPORT_REG'
ASSERT_IF_DPORT_REG((addr), WRITE_PERI_REG);
^~~~~~~~~~~~~~~~~~~
src/main.cpp:11:5: note: in expansion of macro 'WRITE_PERI_REG'
WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0);
^~~~~~~~~~~~~~
*** [.pio\build\esp32cam\src\camera.cpp.o] Error 1
*** [.pio\build\esp32cam\src\deviceconfig.cpp.o] Error 1
*** [.pio\build\esp32cam\src\network.cpp.o] Error 1
*** [.pio\build\esp32cam\src\main.cpp.o] Error 1
*** [.pio\build\esp32cam\src\jsonserializer.cpp.o] Error 1
*** [.pio\build\esp32cam\src\servo.cpp.o] Error 1
*** [.pio\build\esp32cam\src\webserver.cpp.o] Error 1

Camera feed simulation

When simulation the robot i would like the full experience including see a camera feed.

The camera should be fixed on the robot model if the feature is enabled by the server

Documentation for New Built

  • Executing task: C:\Users\rip_h.platformio\penv\Scripts\platformio.exe run --target buildfs --environment esp32dev

Processing esp32dev (board: esp32dev; platform: espressif32 @ 6.6.0; framework: arduino)

Verbose mode can be enabled via -v, --verbose option
running: build_app.py
Newest file: 2024-05-21 21:11:44.673394, output file: 2024-05-21 21:11:46.935157
SSL Cert Store: Certificate bundle downloaded to: ssl_certs\cacert.pem
SSL Cert Store: Parsing certificates from ssl_certs\cacert.pem
SSL Cert Store: Successfully added 48 certificates
SSL Cert Store: Successfully added 48 certificates in total
SSL Cert Store: Successfully created src\certs\x509_crt_bundle.bin
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32dev.html
PLATFORM: Espressif 32 (6.6.0) > Espressif ESP32 Dev Module
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
DEBUG: Current (cmsis-dap) External (cmsis-dap, esp-bridge, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES:

  • framework-arduinoespressif32 @ 3.20014.231204 (2.0.14)
  • tool-esptoolpy @ 1.40501.0 (4.5.1)
  • tool-mklittlefs @ 1.203.210628 (2.3)
  • toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch5
    LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
    LDF Modes: Finder ~ chain, Compatibility ~ strict
    Found 45 compatible libraries
    Scanning dependencies...
    Dependency Graph
    |-- ArduinoJson @ 7.0.4
    |-- PsychicMqttClient @ 0.1.0+sha.1a26bd1
    |-- NewPing @ 1.9.7
    |-- Adafruit SSD1306 @ 2.5.10
    |-- Adafruit GFX Library @ 1.11.9
    |-- Adafruit BusIO @ 1.16.1
    |-- MPU6050_light @ 1.1.0
    |-- SPI @ 2.0.0
    |-- ESP32-sveltekit
    |-- PsychicHttp @ 1.0.1
    Building in release mode
    Building FS image from 'data' directory to .pio\build\esp32dev\littlefs.bin
    warning: can't read source directory
    *** [.pio\build\esp32dev\littlefs.bin] Error 1
    ============================================================ [FAILED] Took 2.95 seconds ============================================================

Environment Status Duration


esp32dev FAILED 00:00:02.952
====================================================== 1 failed, 0 succeeded in 00:00:02.952 ======================================================

  • The terminal process "C:\Users\rip_h.platformio\penv\Scripts\platformio.exe 'run', '--target', 'buildfs', '--environment', 'esp32dev'" terminated with exit code: 1.

  • Terminal will be reused by tasks, press any key to close it.

  • Executing task: C:\Users\rip_h.platformio\penv\Scripts\platformio.exe run --target buildfs --environment esp32dev

Processing esp32dev (board: esp32dev; platform: espressif32 @ 6.6.0; framework: arduino)

Verbose mode can be enabled via -v, --verbose option
running: build_app.py
Newest file: 2024-05-21 21:11:44.673394, output file: 2024-05-21 21:11:46.935157
SSL Cert Store: Certificate bundle downloaded to: ssl_certs\cacert.pem
SSL Cert Store: Parsing certificates from ssl_certs\cacert.pem
SSL Cert Store: Successfully added 48 certificates
SSL Cert Store: Successfully added 48 certificates in total
SSL Cert Store: Successfully created src\certs\x509_crt_bundle.bin
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32dev.html
PLATFORM: Espressif 32 (6.6.0) > Espressif ESP32 Dev Module
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
DEBUG: Current (cmsis-dap) External (cmsis-dap, esp-bridge, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES:

  • framework-arduinoespressif32 @ 3.20014.231204 (2.0.14)
  • tool-esptoolpy @ 1.40501.0 (4.5.1)
  • tool-mklittlefs @ 1.203.210628 (2.3)
  • toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch5
    LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
    LDF Modes: Finder ~ chain, Compatibility ~ strict
    Found 45 compatible libraries
    Scanning dependencies...
    Dependency Graph
    |-- ArduinoJson @ 7.0.4
    |-- PsychicMqttClient @ 0.1.0+sha.1a26bd1
    |-- NewPing @ 1.9.7
    |-- Adafruit SSD1306 @ 2.5.10
    |-- Adafruit GFX Library @ 1.11.9
    |-- Adafruit BusIO @ 1.16.1
    |-- MPU6050_light @ 1.1.0
    |-- SPI @ 2.0.0
    |-- ESP32-sveltekit
    |-- PsychicHttp @ 1.0.1
    Building in release mode
    Building FS image from 'data' directory to .pio\build\esp32dev\littlefs.bin
    warning: can't read source directory
    *** [.pio\build\esp32dev\littlefs.bin] Error 1
    ============================================================ [FAILED] Took 3.00 seconds ============================================================

Environment Status Duration


esp32dev FAILED 00:00:02.1000
====================================================== 1 failed, 0 succeeded in 00:00:02.1000 ======================================================

  • The terminal process "C:\Users\rip_h.platformio\penv\Scripts\platformio.exe 'run', '--target', 'buildfs', '--environment', 'esp32dev'" terminated with exit code: 1.
  • Terminal will be reused by tasks, press any key to close it

Got this error while trying to built the latest update.

Distance sensor visualization

To get a better feel for the environment the robot is in, I want to be able to visualize the distances the two distance measure

Startup view

When opening the app i want to be able to choose how to connect to my robot.

Whether using WiFi or bluetooth. The connection should be saved on the users device.

Physics based simulation

To be able to test the robot without it breaking in the real world, a simulation should be implemented.

As the current visulization happes with Three.js a good choice for physics could be CannonJS

modules connections

There are modules in the code:
SSD1306,
ADS1X15,
HMC5883 , MPU6050,
but I can't find my configuration and pin connections, unless the code is incomplete

Split screen for controller

I want to be able to watch the robot virtual state and the live camera stream at the same time.

When more data views are are added i want to be able to select any combination of views eg lidar and live statistics

ESP32 Cam not working

I can't get the my ESP32 cam to stream or view after I got my ESP32 Uploaded with via PIO.

Native controller app

When the controller can be configured to connect to any robot,
I want to be able to install the controller natively on my phone / table.

To achieve this:
Make the app an PWA to mimic the native feel for people who don't want to install the app.
Capacitor to wrap the web app for native IOS and Android

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.