Skip to content

theAgingApprentice/HexaFloorRide

Repository files navigation

hexaBot

LICENSE

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.

Getting Started

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.

Documentation

Here is an index of links to helpful documents found in this repository.

Constructing a HexaFloorRide Robot

HexaFloorRide User Guides

HexaFloorRide Developers Guide

Prerequisites

In order to make use of the code in this repository you will require the following items.

Development Software Stack

Code Compatability

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.

Installing

A set of instructions on how to install the source code for theAgingApprentice projects can be found here.

Testing

At this time we have no tools or standards for automated testing of Arduino code on an embedded system.

Deployment

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.

Built With

If you are new to these tools then you may want to read this.

Contributing

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

Versioning

We use Semantic Versioning in naming the releases of this code base.

Kinematic Model

HexaFloorRide uses an inverse kinematic model to manipulate it's legs. To learn more about our implementation of an inverse kinematic model look here.

Authors

License

This project is licensed under the MIT License.

Acknowledgments

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