Skip to content

hariharanragothaman/androquad

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Androquad

Platform Language Flight Config ROS 2 License GitHub Last Commit Repo Size

An Arduino-based quadrotor/multirotor flight controller built on the AeroQuad flight software platform. Originally developed circa 2013, this project targets the Arduino Mega 2560 with AeroQuad Shield v2.1 in a Hex-Y6 configuration.

Overview

Androquad addresses the challenge of agile, swing-free trajectory tracking for multi-rotor UAVs with suspended loads. The project focuses on:

  • Modeling, designing routines, and state estimation for an industrial multi-rotor
  • Self-protection and situational awareness
  • PID-based flight control with multi-rate task scheduling (100Hz / 50Hz / 10Hz / 1Hz)
  • Support for magnetometer heading hold and barometric altitude hold
  • Camera stabilization
  • Extensibility for both terrestrial and aerial robotic platforms

Architecture

androquad/
├── androquad.ino          # Main Arduino sketch (~1200 lines)
│                          #   - Platform-specific hardware abstraction
│                          #   - Multi-rate control loop (100/50/10/1 Hz)
│                          #   - Sensor initialization and processing
│                          #   - Flight control pipeline
├── UserConfiguration.h    # Build-time configuration header
│                          #   - Hardware board selection
│                          #   - Flight configuration (quad/hex/octo)
│                          #   - Sensor and feature enables
│                          #   - Receiver and telemetry settings
├── .gitignore
└── README.md

Control Loop Architecture

Rate Tasks
100 Hz Gyro/Accel evaluation, kinematics, altitude estimation, flight control, GPS update, camera stabilization
50 Hz Pilot command reading, RSSI, range finder updates
10 Hz Magnetometer/heading (task 1), battery/telemetry (task 2), OSD/LED status (task 3)
1 Hz MavLink heartbeat

Current Configuration

Parameter Value
Board Arduino Mega 2560 + AeroQuad Shield v2.1
Flight Config Hex-Y6 (6 motors in Y6 layout)
Gyroscope ITG-3200 (9DOF, alternate address)
Accelerometer ADXL345 (9DOF)
Magnetometer HMC5883L (SparkFun 9DOF)
Barometer BMP085
Receiver PPM (SERIAL_SUM_PPM_2, 8 channels)
ESC Rate 400 Hz
Features Heading hold, barometric altitude hold, camera stabilization

Supported Hardware Platforms

  • AeroQuad v1 / v1 IDG - Arduino Uno + AeroQuad Shield v1.7 and below
  • AeroQuad v1.8 - Arduino Uno + AeroQuad Shield v1.8/1.9
  • AeroQuad Mini - Arduino Pro Mini + Mini Shield v1.0
  • AeroQuad Mega v1/v2/v2.1 - Arduino Mega + AeroQuad Shield variants
  • AeroQuad Wii / Mega Wii - Arduino with Wii sensor boards
  • ArduCopter (APM) - ArduPilot Mega with Oilpan
  • CHR6DM variants - CHR6DM as IMU/heading reference
  • AeroQuad STM32 - Baloo board (STM32-based)

Supported Flight Configurations

Config Motors Layout
quadXConfig 4 Quad X
quadPlusConfig 4 Quad +
quadY4Config 4 Quad Y4
triConfig 3 Tricopter
hexPlusConfig 6 Hex +
hexXConfig 6 Hex X
hexY6Config 6 Hex Y6 (currently active)
octoX8Config 8 Octo X8
octoXConfig 8 Octo X
octoPlusConfig 8 Octo +

Dependencies

This sketch requires the AeroQuad libraries to be installed in your Arduino libraries path. These are not included in this repository. Key dependencies:

  • GlobalDefined.h, AeroQuad.h, PID.h, AQMath.h, FourthOrderFilter.h
  • Gyroscope drivers: Gyroscope_ITG3200.h, Gyroscope_IDG_IDZ500.h, etc.
  • Accelerometer drivers: Accelerometer_ADXL345.h, Accelerometer_BMA180.h, etc.
  • Magnetometer drivers: Magnetometer_HMC5843.h, Magnetometer_HMC5883L.h
  • Barometer drivers: BarometricSensor_BMP085.h
  • Receiver drivers: Receiver_MEGA.h, Receiver_PPM.h, etc.
  • Motor drivers: Motors_PWM_Timer.h, Motors_PWM.h, etc.
  • Flight control processors: FlightControlHexY6.h, etc.

Getting Started (Legacy Arduino Build)

  1. Install the Arduino IDE
  2. Clone the AeroQuad libraries into your Arduino libraries/ folder
  3. Clone this repository
  4. Edit UserConfiguration.h to match your hardware:
    • Select your board (#define AeroQuadMega_v21, etc.)
    • Select your flight configuration (#define hexY6Config, etc.)
    • Enable/disable sensors and features
  5. Open androquad.ino in Arduino IDE
  6. Select Arduino Mega 2560 as the board
  7. Compile and upload

Project Status

This project was originally developed ~12 years ago on the AeroQuad platform. It is now being revived with plans to migrate to ROS 2 for modern robotics integration. See ROADMAP.md for the planned evolution.

License

This project builds upon the open-source AeroQuad flight software. Please refer to the original AeroQuad project for licensing details.

About

we address the issue of increasing the overall efficiency of automated robots during operation, and the problem of agile swing free trajectory tracking of a quad rotor with suspended load. The topic has great practical significance in UAV (Unmanned Aerial Vehicle) applications. This aims at modelling, designing routines, and estimation of an ind…

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors