NGOS Features
Contents
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 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 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.
