All Projects → LuSeKa → HoverBot

LuSeKa / HoverBot

Licence: MIT License
Self-balancing robot using hoverboard hub motors

Programming Languages

C++
36643 projects - #6 most used programming language
python
139335 projects - #7 most used programming language
c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to HoverBot

CircuitMess-Ringo
CircuitMess Ringo is an educational DIY mobile phone designed to bring electronics and programming to the crowd in a fun and interesting way.
Stars: ✭ 62 (-29.55%)
Mutual labels:  diy
antispy-jammer
Simplest ultrasonic ANTISPY voice recording jammer based on ATTINY13 / ATTINY85 / ARDUINO with PAM8403 module driving piezo ultrasonic transducers (and optionally AD8933 signal generator)
Stars: ✭ 39 (-55.68%)
Mutual labels:  diy
mpi
minimal (n)vim plugins - icons (Under 200 LOC)
Stars: ✭ 32 (-63.64%)
Mutual labels:  diy
weather-station
Everything you need to run and monitor your own open source weather station. ⛅
Stars: ✭ 38 (-56.82%)
Mutual labels:  diy
PiDSP
Home of PiDSP - a freeDSP for Raspberry Pi
Stars: ✭ 17 (-80.68%)
Mutual labels:  diy
python-tutorial-codes
Python 🐍 Tutorials
Stars: ✭ 23 (-73.86%)
Mutual labels:  diy
ATtiny13-TinyRemoteXL
12-Button IR Remote Control
Stars: ✭ 33 (-62.5%)
Mutual labels:  diy
lucidgloves
Arduino/ESP32 based DIY VR Haptic gloves. Compatible with SteamVR via OpenGloves.
Stars: ✭ 1,149 (+1205.68%)
Mutual labels:  diy
Laser-XY-Scanner
Low Cost DIY Laser XY Scanner, Cutter, or Engraver
Stars: ✭ 27 (-69.32%)
Mutual labels:  diy
WriteYourOwnReact
Write your own version of React. Why? Because you CAN!
Stars: ✭ 20 (-77.27%)
Mutual labels:  diy
firmware
Alternative IP Camera firmware from an open community
Stars: ✭ 236 (+168.18%)
Mutual labels:  diy
ATtiny13-TinySolder
T12 Quick Heating Soldering Station
Stars: ✭ 45 (-48.86%)
Mutual labels:  diy
pcb-ws2812-wifi-controller
WiFi Controller for WS2812 LED Stripes
Stars: ✭ 48 (-45.45%)
Mutual labels:  diy
arduino-ble-gadget
Create your own Do-It-Yourself BLE enabled sensor gadget on the ESP32 platform.
Stars: ✭ 31 (-64.77%)
Mutual labels:  diy
STM32-RFM95-PCB
STM32 and AVR128 Printed Circuit Board for creating IOT nodes with the RFM95 LORA chip
Stars: ✭ 14 (-84.09%)
Mutual labels:  diy
Apple-1-Mini
A minified replica of the Apple 1
Stars: ✭ 32 (-63.64%)
Mutual labels:  diy
pedalevite
Pédale Vite — DIY multi-FX pedalboard for guitar/bass/etc.
Stars: ✭ 68 (-22.73%)
Mutual labels:  diy
digitalmusicstand
web based music sheet viewer (go, pdfjs) as a single binary
Stars: ✭ 22 (-75%)
Mutual labels:  diy
linorobot2
Autonomous mobile robots (2WD, 4WD, Mecanum Drive)
Stars: ✭ 97 (+10.23%)
Mutual labels:  diy
PiBuilder
Ideas for building a Raspberry Pi from "bare metal" to ready-to-run IOTstack
Stars: ✭ 26 (-70.45%)
Mutual labels:  diy

This repo is deprecated. This project now lives here (as of March 2022): https://github.com/CharlestonRobotics/ChIMP

HoverBot

Rugged radio-controlled self-balancing robot using hoverboard hub motors.

HoverBot_Slide

Table of contents

  1. Key Components
  2. External Dependencies
  3. Videos
  4. Control Scheme
  5. Schematic
  6. Wiring
    1. ODrive
    2. IMU
    3. RC Receiver
    4. Arduino
  7. Press
  8. Additional Documentation

Key Components

External Dependencies

Arduino

Python

Videos

YouTube Video YouTube Video

Control Scheme

The ODrive is operated in current control mode. The current is computed by the Arduino from the pitch and pitching velocity to control balancing, from the throttle command to control the forward and backward velocity, and from the steering command and the yaw velocity to control the steering. The controller is tuned with five parameters listed in the config.h file.

HoverBot_control

A problem of this control scheme is that the onboard controller does not get velocity feedback. If the vehicle goes too fast, the balance controller cannot compensate a forward fall anymore, and it will fall over eventually. The human at the sticks therefore needs to make sure that the velocity is kept sufficiently slow.

Schematic

The following diagram roughly explains the data flow and types of electrical connections. HoverBot_wiring

Wiring

Note that the wiring is Highly Experimental and just a Proof-of-Concept. wiring_overview Wiring

The wiring connects the wheel motors and their hall sensors with the ODrive, the ODrive to the Arduino and the Arduino to the IMU (sitting on a breadboard) and to the RC receiver.

ODrive

ODrive_wiring

The wiring of the ODrive is explained on the ODrive website (that has very nice docs overall!): https://docs.odriverobotics.com/#wiring-up-the-odrive

Power and motors

The ODrive is powered from the battery via its DC clamps (thick black and red cables on the left), and each motor's three phases (A, B, C, blue, yellow and green) are connected to one of its motor output clamps (M0 and M1). The order in which the motor wires are connected does not matter, the ODrive figures this out by itself during calibration.

Auxiliary resistor

If HoverBot is powered from batteries without built-in battery management system (PMS), no auxiliary breaking resistor is required (the ODrive dumps recuperated energy into the battery). If the batteries have a PMS (such as the ones usually found in a hoverboard), using the auxiliary resistor might prevent overvoltage errors.

Hall sensors

Each hoverboard motor comes with hall sensors that tell the ODrive when to power which of the three phases. Each hall sensor has five wires: Two for power (5V, usually red and GND, usually black) and three for signal (often blue, yellow and green). A motor's hall sensors are connected using extension cables to the corresponding sensor inputs (M0 and M1) on the ODrive's J4 connector. The three signal lines are connected to inputs A, B and Z where the order again does not matter. Note that it might be necessary (depending on the version of the ODrive) to add some a 22nF capacitor between each of the three signals and ground for signal integrity (insulated with hot glue), as is mentioned here: https://discourse.odriverobotics.com/t/encoder-error-error-illegal-hall-state/1047/6

5V power

The ODrive powers the 5V power supply of all other components, so its GND (black cable on the J3 connector) and 5V (red cable on the J2 connector) are connected to a breadboard that acts as power distribution.

UART

The ODrive communicates with the Arduino via the serial port, or UART. The UART pins are GPIO 1 (yellow) and GPIO 2 (white), as explained here (GPIO 1 connects to the Arduino's RX, GPIO 2 to the Arduino's TX): https://docs.odriverobotics.com/interfaces#ports

IMU

IMU_wiring The IMU only requires two wires for 5V power (red) and GND (black) from the breadboard and two wires for the I2C connection to the Arduino, connecting the IMU's and the Arduino's SDA (white) and SCL (left green). https://learn.adafruit.com/adafruit-bno055-absolute-orientation-sensor/pinouts

RC Receiver

receiver_wiring

The receiver is powered by 5V (red) and GND (blue) from the breadboard and each of the PWM signal outputs (three for the HoverBot) are connected to one of the Arduino's inputs that are capable of hardware interrupts. The fact that three hardware interrupt pins are needed is the reason why HoverBot uses an Arduino Mega rather than a smaller and cheaper Uno or Nano (see https://www.arduino.cc/reference/en/language/functions/external-interrupts/attachinterrupt/). The pins used are 2 (orange), 3 (yellow) and 18 (green), and their channel assignment is set in the first lines of the config.h file: https://github.com/LuSeKa/HoverBot/blob/master/config.h

Arduino

The Arduino is powered from 5V (red) and GND (black) from the breadbaord. Apart from the connections already mentioned, the Arduino's USB port should be accessible for programming.

Press

Additional Docs

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].