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:
- Bl-Ctrl (mikrokopter.de)
- YGEi (yge.de)
- Quax-BL (mod)
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:
- Bl-Ctrl (mikrokopter.de)
- YGEi (yge.de)
- Quax-BL (mod)
- 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 the following Behavior Conditions
- 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 the following Behavior Conditions
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 the following behavior conditions
- 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.