Historical project documentation. Content is maintained in GitLab.

Features

NGOS Features

Hardware

Version 0.22-mini

  • Modular design with

    • Flight Controller (FC) PCB
    • CAM-Controller (CC) PCB
    • Breakout-Boards for Gyros (choose between 3x ADXR610 or 3x MLX)
  • Flight Controller (FC)

    • 50mm x 50mm, 4 layers using SMD0603

    • ARM7 LPC2148 60MHz 16/32 bit CPU with ARM7TDMI-S core (main CPU)

    • Support for different I2C BL controllers:

    • Dual bidirectional I2C bus buffer

    • Onboard power switch with 2 buttons

    • Optional switched voltage regulator instead of linear voltage regulator

    • Onboard switch for UART/USB ISP programming

    • Acoustic low voltage warning

    • Programmable using JTAG, UART or USB interface

    • SPI extention plug

    • I2C extention plug

    • 2 onboard UARTs (5V or 3.3V) for ACT DSL receivers, consoles and GPS

    • 8-channel SPI level translators

    • Sockets for 3 analog Gyros

      • Sparkfun ADXRS300
      • Sparkfun ADXRS610
      • Melexis MLX90609-R2
    • 4-channel 12bit ADC with 1Msps for Gyros (Analog Devices AD7924)

    • Discrete Sallen-Key Filters for Gyros

    • Dedicated Temperature Sensor

    • Dedicated Light Sensor

    • Digital 3D linear acceleration sensor (Sparkfun LIS3LV02DQ)

    • Absolute air pressure sensor (Freescale MPXH6115) with 24bit ADC

    • 24bit Analog Digital Converter (Texas Instruments ADS1255)

    • 12bit 4 Channel Analog Digital Converter (Analog Devices AD7924)

    • Dedicated low noise power supplies for 12/24bit ADCs and Gyros

  • Cam Controller (CC)

    • Atmel ATmega644P 20mhz 8bit MCU (RC/Servo/Comm controller)
    • Support for 5 servo channels (RC controller)
    • 2 onboard UARTs (5V) for ACT DSL receivers, consoles and GPS

Version 0.22

  • Modular design with

    • Flight Controller (FC) PCB
    • Sensor Board (SB) PCB
    • Breakout-Boards for Gyros (choose between 3x ADXR610 or 3x MLX) and Accelerometer (1x Lis3l)
  • Flight Controller (FC)

    • 80mm x 80mm, 2 layers using SMD0805
    • ARM7 LPC2148 60MHz 16/32 bit CPU with ARM7TDMI-S core (main CPU)
    • Atmel ATmega644P 20mhz 8bit MCU (RC/Servo/Comm controller)
    • Support for different I2C BL controllers:
    • Support for 5 servo channels (RC controller)
    • Dual bidirectional I2C bus buffer
    • Onboard power switch with 2 buttons
    • Optional switched voltage regulator instead of linear voltage regulator
    • Onboard switch for UART/USB ISP programming
    • Acoustic low voltage warning
    • Programmable using JTAG, UART or USB interface
    • SPI extention plug
    • I2C extention plug
    • 5 onboard UARTs (two of them 5V or 3.3V) for ACT DSL receivers, consoles and GPS
    • 8-channel SPI level translators
  • Sensor Board (SB)

    • 80mm x 80mm, 2 layers using SMD0805
    • Atmel ATmega328P 20mhz 8bit MCU (Sensor/GPS preprocessor)
    • Sockets for 3 analog Gyros
      • Sparkfun ADXRS300
      • Sparkfun ADXRS610
      • Melexis MLX90609-R2
    • 4-channel 12bit ADC with 1Msps for Gyros (Analog Devices AD7924)
    • Discrete Sallen-Key Filters for Gyros
    • Dedicated Temperature Sensor
    • Dedicated Light Sensor
    • Digital 3D linear acceleration sensor (Sparkfun LIS3LV02DQ)
    • Absolute air pressure sensor (Freescale MPXH6115) with 24bit ADC
    • 24bit Analog Digital Converter (Texas Instruments ADS1255)
    • 12bit 4 Channel Analog Digital Converter (Analog Devices AD7924)
    • 3-axis Compass based on 3D Magnetometer (PNI Corp. MicroMag-3)
    • Dedicated low noise power supplies for 12/24bit ADCs and Gyros

Older Versions

Software

NGOS Version 0.64

  • Modular C code using GNUARM GCC toolchain
  • Compiles under 32bit and 64bit Linux and Windows
  • Uses autotools for comfortable configuration and compilation
  • Multithreaded OS design not impacting on realtime processes
  • Supports a device table and device probing
  • Supports the following sensor inputs
    • Analog gyro input (10bit samples)
    • Digital linear acceleration sensor via SPI (LISL)
    • Digital 3-axis compass via SPI (MicroMag3)
    • Digital 3-axis compass via I2C (MK3Mag)
    • Analog barometric sensor via 24bit ADC
    • NMEA GPS via UART
  • Supports the following actor outputs
    • up to 16x BL-Ctrl via I2C
    • up to 5x Servo via PWM via the Cam Controller
  • Signals to user:
    • 7x LED via GPIO
    • Beeper via GPIO
  • Supports on the extention port:
    • 1x SSP with 512 byte buffer
    • ?x GPIO
    • 1x I2C (Sensor Bus)
    • 1x SPI (Sensor Bus)
  • Supports the following receivers:
    • All PPM/PCM/SPCM receiver with Sum-Signal
    • All ACT PPM/PCM/SPCM DSL receiver (DSL4/6/8, DDS8/10) with a DSL plug
    • ACT S3D XS4+2 2.4GHz receiver with Sum-Signal
    • All ACT S3D 8, 12, 16 2.4GHz receiver (with or without Telemetry) with S3D-DSL plug
    • Spektrum Satellite Receivers via UART
  • Supports the following telemetry, 16 channels:
    • ACT M-Bus
    • Muliplex M-Link
  • Shell Consoles on USB and all UART ports (usable in parallel)
  • Uses Kalman filtering for gyro/acceleration/compass sensor data fusion
  • Calculates linear accelerations and makes this data available to controllers
  • Calculates axis coupling and compensates accordingly
  • Supports unlimited closed-loop Controllers in parallel (changing even while flying possible):
    • Wolferl Controller: The closed-loop controller as designed by Wolferl
    • Bearing-Hold Controller: A heading-hold controller for very dynamic flights
    • Amir’s Controller: A next generation integral-flight controller
    • Amir’s NG Controller: A next generation integral-flight controller (supports DCM, HH, GPS)
    • RC Controller: A “just forward throttle” controller for testing purposes
  • Supports per-controller configuration variables
  • Supports Global Configuration Variables
  • Supports storing of different configurations
  • Supports parameter changing while flying
  • Supports in-flight ufo-side RC calibration using a behavior rule
  • Supports a configuration variables editor
  • Supports GPS tracking and KML file output
  • Supports RC-Controller and CAM-Controller using I2C
  • Supports NGlight using I2C
  • Supports camera tilt (pitch/roll) compensation
  • Supports different Hardware Abstraction Layers (HALs) for Rotor-configurations:
    • Quad, QuadX (x-formation), QuadR (reverse), Quad45 (45 degrees turned)
    • Y6 (aka HexY)
    • Okto
    • X8 (aka OctoX), X8X (aka OctoX x-formation)
    • BLC (test HAL)
  • Supports in-flight HAL-switching for compatible HALs
  • Supports user configurable Behaviors consisting of behavior condition and associated action
    • Implements the following Behavior Conditions
      • when.ctrl.entering.fs(x)
      • when.ctrl.leaving.fs(x)
      • when.flying.rc.pot.binary(x,y)
      • when.flying.rc.signal.lost(x)
      • when.landed.rc.stick.edge(x,y)
      • when.landed.rc.stick.left.delay(x,y,z)
      • when.landed.rc.stick.left(x,y)
      • when.landed.rc.stick.right.delay(x,y,z)
      • when.landed.rc.stick.right(x,y)
      • when.landed.rc.sticks.both.delay(x,y,z)
      • when.landed.rc.sticks.both(x,y)
      • when.rc.pot.binary(x,y)
      • when.rc.pot.changed(x)
      • when.rc.pot.gt(x,y)
      • when.rc.pot.lt(x,y)
      • when.rc.pot.tristate(x,y)
      • when.rc.pri.pot.binary(x,y)
      • when.rc.signal.lost(x)
      • when.rc.stick.edge.and.pot(x,y,z)
      • when.rc.stick.left.delay(x,y,z)
      • when.rc.stick.left(x,y)
      • when.rc.stick.right.delay(x,y,z)
      • when.rc.stick.right(x,y)
      • when.rc.sticks.both.delay(x,y,z)
      • when.rc.sticks.both(x,y)
      • when.rc.throttle.changed()
      • while.battery.low()
      • while.flying.rc.pot.binary(x,y)
      • while.flying.rc.signal.lost(x)
      • while.rc.pot.binary(x,y)
      • while.rc.signal.lost(x)
      • var.bit.false(x,y)
      • var.bit.op.and.false(x,y)
      • var.bit.op.and.true(x,y)
      • var.bit.op.or.false(x,y)
      • var.bit.op.or.true(x,y)
      • var.bit.true(x,y)
      • var.equal.clear(x,y)
      • var.equal(x,y)
      • var.gt(x,y)
      • var.lt(x,y)
      • var.not.equal(x,y)
    • Implements the following Behavior Actions
      • actor.motors(x)
      • actor.pca9685.dim.light(x,y)
      • actor.pca9685.load.defaults()
      • actor.pca9685.set.light(x,y)
      • actor.pca9685.set.scheme(x)
      • actor.pca9685.set.sequence(x,y)
      • actor.play.melody(x)
      • actor.port.playpattern(x,y)
      • actor.port.set(x,y)
      • conf.load.store(x,y)
      • conf.load(x)
      • conf.store.last.loaded()
      • conf.store(x)
      • ctrl.altitude.hold(x)
      • ctrl.ascend(x)
      • ctrl.calibrate.acc.by.stick(x)
      • ctrl.calibrate(x)
      • ctrl.descend(x)
      • ctrl.hh(x)
      • ctrl.hover()
      • ctrl.set.bat.minimum(x)
      • ctrl.set.hw.hal(x)
      • ctrl.set.pt1.comp(x)
      • ctrl.switch.conf(x)
      • ctrl.switch.ctrl(x)
      • ctrl.wink.nick(x,y)
      • ctrl.wink.roll(x,y)
      • ctrl.wobble(x,y)
      • gps.track(x)
      • nav.coming.home(x)
      • nav.position.hold(x)
      • nav.set.target(x,y)
      • nav.store.target()
      • rc.calibrate.bearing()
      • rc.calibrate.throttle()
      • rc.clear.bearing()
      • rcctrl.set.nick.corr(x)
      • rcctrl.set.roll.corr(x)
      • rcctrl.set.servo.opmode(x)
      • rcctrl.set.servo(x,y)
      • rc.fact.change.bearing(x)
      • rc.fact.change.yaw(x)
      • rc.trainer.mode(x)
      • var.bit.clear(x,y)
      • var.bit.set(x,y)
      • var.set(x,y)
  • Implements standard user defined behaviors
  • Debug data output to USB and UART ports
  • Debug application visualizing the received data as near realtime graphs and in 3D

NGOS Version 0.59

  • Modular C code using GNUARM GCC toolchain

  • Compiles under 32bit and 64bit Linux and Windows

  • Uses autotools for comfortable configuration and compilation

  • Multithreaded OS design not impacting on realtime processes

  • Supports a device table and device probing

  • Supports the following sensor inputs

    • Analog gyro input (10bit samples)
    • Digital linear acceleration sensor via SPI (LISL)
    • Digital 3-axis compass via SPI (MicroMag3)
    • Digital 3-axis compass via I2C (MK3Mag)
    • Analog barometric sensor via 24bit ADC
    • NMEA GPS via UART
  • Supports the following actor outputs

    • up to 16x BL-Ctrl via I2C
    • up to 5x Servo via PWM
  • Signals to user:

    • 7x LED via GPIO
    • Beeper via GPIO
  • Supports on the extention port:

    • 1x SSP with 512 byte buffer
    • ?x GPIO
    • 1x I2C (Sensor Bus)
    • 1x SPI (Sensor Bus)
  • Supports on the X-ADC port:

    • 3x 10bit ADC input
  • Supports the following receivers:

    • All PPM/PCM/SPCM receiver with Sum-Signal
    • All ACT DSL receiver (DSL4/6/8, DDS8/10) with a DSL plug
    • ACT S3D XS4+2 2.4GHz receiver with Sum-Signal
    • ACT S3D 8 and 12 2.4GHz with S3D-DSL plug
  • Shell Consoles on USB and all UART ports (usable in parallel)

  • Uses Kalman filtering for gyro/acceleration/compass sensor data fusion

  • Calculates linear accelerations and makes this data available to controllers

  • Calculates axis coupling and compensates accordingly

  • Supports unlimited closed-loop Controllers in parallel (changing even while flying possible):

    • Wolferl Controller: The closed-loop controller as designed by Wolferl
    • Bearing-Hold Controller: A heading-hold controller for very dynamic flights
    • Amir’s Controller: A next generation integral-flight controller
    • RC Controller: A “just forward throttle” controller for testing purposes
  • Supports per-controller configuration variables

  • Supports Global Configuration Variables

  • Supports storing of different configurations

  • Supports parameter changing while flying

  • Supports in-flight ufo-side RC calibration using a behavior rule

  • Supports a configuration variables editor

  • Supports GPS tracking and KML file output

  • Supports camera tilt (pitch/roll) compensation

  • Supports different Hardware Abstraction Layers (HALs) for Rotor-configurations:

    • Quad, QuadX (x-formation), QuadR (reverse)
    • Y6 (aka HexY)
    • Okto
    • X8 (aka OctoX), X8X (aka OctoX x-formation)
    • BLC (test HAL)
  • Supports in-flight HAL-switching for compatible HALs

  • Supports user configurable Behaviors consisting of behavior condition and associated action

    • Implements the following Behavior Conditions
      • when.rc.throttle.changed()
      • when.rc.pot.lt(x,y)
      • when.rc.pot.gt(x,y)
      • when.rc.pot.changed(x)
      • when.rc.pot.binary(x,y)
      • when.rc.pot.tristate(x,y)
      • when.rc.stick.left(x,y)
      • when.rc.stick.right(x,y)
      • when.rc.signal.lost(x)
      • when.ctrl.entering.fs(x)
      • when.ctrl.leaving.fs(x)
      • while.battery.low()
      • when.rc.pri.pot.binary(x,y)
      • var.equal(x,y)
      • var.not.equal(x,y)
      • var.gt(x,y)
      • var.lt(x,y)
      • var.bit.true(x,y)
      • var.bit.false(x,y)
      • var.bit.op.and.true(x,y)
      • var.bit.op.and.false(x,y)
      • var.bit.op.or.true(x,y)
      • var.bit.op.or.false(x,y)
    • Implements the following Behavior Actions
      • ctrl.calibrate(x)
      • ctrl.switch.ctrl(x)
      • ctrl.switch.conf(x)
      • ctrl.hover()
      • ctrl.ascend(x)
      • ctrl.descend(x)
      • actor.motors(x)
      • actor.play.melody(x)
      • rc.calibrate.bearing()
      • rc.calibrate.throttle()
      • rc.fact.change.bearing(x)
      • rc.fact.change.yaw(x)
      • var.set(x,y)
      • var.bit.set(x,y)
      • var.bit.clear(x,y)
      • gps.track(x)
      • conf.store(x)
      • rc.trainer.mode(x)
      • ctrl.altitude.hold(x)
      • ctrl.set.hw.hal(x)
      • conf.load(x)
      • rcctrl.set.nick.corr(x)
      • rcctrl.set.roll.corr(x)
      • rcctrl.set.servo(x,y)
      • rcctrl.set.servo.opmode(x)
      • ctrl.set.pt1.comp(x)
      • rc.clear.bearing()
      • ctrl.set.bat.minimum(x)
  • Implements standard user defined behaviors

  • Debug data output to USB and UART ports

  • Debug application visualizing the received data as near realtime graphs and in 3D

NGOS Version 0.38

  • Modular C code using GNUARM GCC toolchain
  • Compiles under 32bit and 64bit Linux and Windows
  • Uses autotools for comfortable configuration and compilation
  • Multithreaded OS design not impacting on realtime processes
  • Supports a device table and device probing
  • Supports the following sensor inputs
    • Analog gyro input (10bit samples)
    • Digital linear acceleration sensor via SPI
    • Digital 2-axis compass via I2C
    • NMEA GPS via UART
  • Supports the following actor outputs
    • 4x BL-Ctrl via I2C
    • 2x LED via GPIO
    • Beeper via GPIO
  • Command console on USB and UART ports (usable in parallel)
  • Uses Kalman filtering for gyro/acceleration/compass sensor data fusion
  • Calculates linear accelerations and makes this data available to controllers
  • Calculates axis coupeling and compensates accordingly
  • Supports unlimited closed-loop controllers in parallel (rollover even while flying possible):
    • Wolferl Controller: The closed-loop controller as designed by Wolferl
    • Bearing-Hold Controller: A heading-hold controller for very dynamic flights
    • Amir’s Controller: A next generation integral-flight controller
    • RC Controller: A “just forward throttle” controller for testing purposes
  • Supports per-controller configuration variables
  • Supports global configuration variables
  • Supports parameter changing while flying
  • Supports in-flight ufo-side RC calibration using a separate channel
  • Supports a configuration variables editor
  • Supports GPS tracking and KML file output
  • Supports user definable behaviors which consist of a condition and associated action
    • Implements the following behavior conditions
      • when.rc.throttle.changed()
      • when.rc.pot.lt(x,y)
      • when.rc.pot.gt(x,y)
      • when.rc.pot.changed(x)
      • when.rc.pot.binary(x,y)
      • when.rc.pot.tristate(x,y)
      • when.rc.stick.left(x,y)
      • when.rc.stick.right(x,y)
      • when.rc.signal.lost()
      • when.ctrl.entering.fs()
      • when.ctrl.leaving.fs()
      • while.battery.low()
      • var.equal(x,y)
      • var.not.equal(x,y)
      • var.gt(x,y)
      • var.lt(x,y)
      • var.bit.true(x,y)
      • var.bit.false(x,y)
      • var.bit.op.and.true(x,y)
      • var.bit.op.and.false(x,y)
      • var.bit.op.or.true(x,y)
      • var.bit.op.or.false(x,y)
    • Implements the following behavior actions
      • ctrl.calibrate(x)
      • ctrl.switch.ctrl(x)
      • ctrl.switch.conf(x)
      • ctrl.hover()
      • ctrl.ascend()
      • ctrl.decend()
      • actor.motors(x)
      • actor.play.melody(x)
      • rc.calibrate.bearing()
      • rc.calibrate.throttle()
      • var.set(x,y)
      • var.bit.set(x,y)
      • var.bit.clear(x,y)
  • Implements 12 standard user defined behaviors
  • Debug data output to USB and UART ports
  • Debug application visualizing the received data as near realtime graphs

Note:: This is the current state. All the above features are implemented and working.

Other language

Please note that there is a german Features page: Fähigkeiten.