This repository contains the Arduino source code that runs on an embedded processor at the heart of the six legged robot we call HexaFloorRide. The goals of this project can be found here.
This project requires that you have a HexaFloorRide robot. The Robot is made up of a custom robot chassis and PCB as well as the code in this repository. Without a HexaFloorRide robot this code will not be very useful to you.
Here is an index of links to helpful documents found in this repository.
- List of hardware components.
- HexaFloorRide assembly instructions.
- How to wire the motors.
- HexaFloorRide's Web interface.
- How to configure NVRAM remotely.
- How to perform OTA updates.
- Available MQTT commands.
- HexaFloorRide Operations manual.
In order to make use of the code in this repository you will require the following items.
- A HexaFloorRide robot made up of this hardware.
- The HexaFloorRide custom PCB.
- An MQTT broker used by the robot's MQTT web interface.
- A clone of the HexaFloorRide gitHub repository into your own local Git repository. To learn how we set up our directory structure please refer to this document.
- How to clone the HexaFloorRide gitHub repository.
- Sample platformio.ini template.
- Set up PlatformIO.
- Recommended Visual Studio Code plugins.
HexaFloorRide software runs as a monolithic firmware image. The high level logic and peripheral interactions are handled using Arduino C++. FreeRTOS is used to run a WiFi stack as well as the primitive xTaskCreatePinnedToCore() which is used to manage mutli-threaded process execution.
HexaFloorRide's firmware is intended to run on the Espressif ESP WROOM32 "Software On a Chip" (SOC). The development board used for this SOC is the Adafruit Huzzah32 Feather Board.. Note that some standard Arduino functions such as AnalogWrite() have not been implemented on the ESP32 SOC and alternate functions such as ledcSetup(), ledcAttachPin() and ledcWrite() must be used in their place. There are some additional compatability issues of note as follows:
- This code will NOT run on an ESP8266 unmodified because of both GPIO incompatability as well as some ESP32 specific libraries that are in use.
A set of instructions on how to install the source code for theAgingApprentice projects can be found here.
At this time we have no tools or standards for automated testing of Arduino code on an embedded system.
Use serial over USB to load the inital code onto the embedded system. Subsequent builds can be uploaded using either serial over USB or a OTA web interface hosted by the robot which allows you to do OTA updates.
- Visual Studio Code - Text editor.
- PlatformIO - IDE for ESP32 based Arduino development.
If you are new to these tools then you may want to read this.
Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us. If you wish to contribute, please follow our conventions for the use of header files which can be seen here
We use Semantic Versioning in naming the releases of this code base.
HexaFloorRide uses an inverse kinematic model to manipulate it's legs. To learn more about our implementation of an inverse kinematic model look here.
This project is licensed under the MIT License.
- Robot chassis design inspired by Cameron Buss' Swampy the Hexapod.
- 3 DOF Inverse Kinematic code inspired by Avatar Aymen Nacer.
- Tony DiCola and Adafruit Industries for their MQTT QOS1 Arduino library.
- Jeff Rowberg for the MPU6050 DMP logic.
May not use.
- DFRobot & John Rickman for their LiquidCrystal I2C LCD display Arduino library.
May not use.
- The many folks involved in porting the Arduino libraries over to the ESP32.