Historical project documentation. Content is maintained in GitLab.

NGOS-0.63

Release Notes

NGOS version 0.63

Bumped version number to 0.63.

Refactored “uavpset commands” into uavpset.c. Refactored libng, splitted ngctrl stuff into ngctrl.c. Cloned ngctrl subproject of ng-tools to ngctrl2 and made it compiling.

Implemented ‘api ngctrl-v2-list-types’ and ‘api ngctrl-v2-request <type> <intervall>’. We are now able to dump in NGCTRL-V2 format.

Extended libng with a prelimary ngctrl2 protocol support. The essential parts work.

Ngctrl2 works for requesting gyro data with output to the console, eg. “ngctrl2 -l -r reg:intervall”.

Finished NGCTRL2 printf parser. It now knows all packet types and is able to print all 11 packet types known today. Extended ng_ngctrl2_packet_poll() to return number of parsed packets and a list of packet types received.

Implemented “api ngctrl-v2-version”. Current version is version 1.

Switched qngctrl from NGCTRL1 to NGCTRL2. Dumping works wonderful.

Implemented NGCTRL packet type DUMP_PKG_POS_HOLD which contains the position hold target location. Implemented NGCTRL2 packet type DUMP_PKG_FLIGHT_STATE which contains the controller flight state, which also signals PH and CH. Implemented packet type DUMP_PKG_POS_HOLD and DUMP_PKG_FLIGHTSTATE in all NGCTRL2 parsers.

Implemented dump_ngctrl_v2_dump_once(dump_pkg_type_t type) using negative intervals for asynchronous NGCTRL2 packets.

Behavior action nav.position.hold(on|off) now automatically sends a single TUNE_NAV_POSITION_HOLD and DUMP_PKG_FLIGHTSTATE NGCTRL2 packet, on all terminals where NGCTRL2 is running. Implemented dump_ngctrl_v2_dump_once(DUMP_PKG_FLIGHTSTATE) wherever the flight state changes. Also added dump_ngctrl_v2_dump_once(DUMP_PKG_POS_HOLD) where necessary. Splitted NGCTRL2 debug packet into two packet types.

Improved libng’s ng_ngctrl2_initialization() by reading answer to init commands. Improved ng_ngctrl2_request(), now reading answer to command before returning. Improved configuration parsing in qngctrl.

Added new controller quality CTRL_QUALITY_DEPRECIATED and changed quality of controller amir-ng to CTRL_QUALITY_FLYING.

Replaced CTRL_QUALITY_* defines with typedef enum ctrl_quality_t. Replaced CTRL_FS_* defines with typedef enum ctrl_flightstate_t. Replaced CTRL_SCALING_* defines with typedef enum ctrl_scaling_state_t. Dropped CTRL_CONTROLLER_* defines, they are not used. Made elements of ctrl_args_t const.

Reimplemented out-of-order NGCTRL2 packet DUMP_PKG_FLIGHTSTATE. We now check for new flightstate in ctrl_loopstep() and also set the boolean variable ctrl_flightstate_changed accordingly.

Implemented error message in ngctrl2 should no command flag be specified on the command line.

Pimped qngctrl: Introduced dump interval and dump enable checkbox per scalable plot. Removed old global dump interval. Lowered minimal dump interval to 20ms.

Implemented dump once for NGCTRL2 by using an negative intervall of -1. Fixed typos in device.c comments.

Fixed all “diff” commands. Crazy but true: (conf_pointer_t)&default_global + offset != (conf_pointer_t)(&default_global + offset) !!! Do you see why? ;)

Improved ‘diff all’: now showing NGOS version and revision in comments.

Fixed default behaviors, there was a index error.

Implemented new behavior ctrl.wobble(amplitude, periode). It will wobble your throttle within the given amplitude and periode. Make sure not to use periodes < 500ms or your NG will gain height!

Implemented shell warning when enabling simulation with HAL “none” and when enabling actors with HAL “none” saying that this HAL does not produce actor data and can not fly.

Improved timeout handling in libng’s ng_send() and ng_receive().

Implemented ctrl.wink.nick(amplitude,period) and ctrl.wink.roll(amplitude,period). They modulate a sinus with given amplitude and period onto nick and roll sticks. Untested.

Implemented behavior condition while.flying.rc.pot.binary(). Added a flight state check to ctrl.wobble() and ctrl.wink.nick/roll(). All three behavior action will beep an error should they be issued while the flightstate is landed or spinup.

Fixed scaling for ctrl.wink.nick(amplitude,period) and ctrl.wink.roll(amplitude,period). Amplitude is now 8bit rc (will be scaled to 12bit) and period is given in [100ms].

Matze fixed LED signals for receiver detection, Fixed register name, implemented blinking (detected receiver, but no valid signal) for dsl dual channel signal detection, fixed whitespaces, fixed blink frequency.

Fixed Ierr for integral and HH PID. Correctly recognize ranges: nick[-16000..16000], roll[-8000..8000], yaw[-16000..16000]. This assures that Ierr will be correct for >90/>180 degree cases.

Ralf changed serial port flags in libng to work better with bluetooth, implemented different bluetooth flag for Bluetooth UART devices in libng and qngctrl.

HW-0.22-r2-mini has been added to the hardware folders.

Implemented new behavior conditions when.landed.rc.stick.left.edge(edge) and when.landed.rc.stick.right.edge(edge) which trigger when respective stick is at edge [all|top|bottom|left|right]. Implemented new behavior action ctrl.calibrate.acc.by.stick(stick) where stick is [left|right]. It allows us to calibrate the acc vector using the rc sticks.

Matze implemented device detection for PCA9685. Implemented ‘set pca9685 [channel] [value]’ and I2C FSM to controll 16 pwm outputs for bling bling. Implemented ‘set pca9685 [channel] [value]’ and I2C FSM to controll 16 pwm outputs for bling bling. Implemented action actor.pca9685.light to controll the pca via behaviors and changed terminal command from ‘set’ to ’tune’. Also added the old ‘set led’ command to the new ’tune’ command group. Bugfixes & new action actor.pca9685.dim.light. Implemented action actor.pca9685.set.scheme, so set predefined color schemes on PWM channel 0-11 via behavior. First implementation of actio actor.pca9685.set.sequence, needs to be tested.

Implemented new behavior action ctrl.hh([yes|no]).

Added flight state CTRL_FS_LOOPING and fixed amir and amir-ng controller to fly should they see an unknown flight state.

Implemented behavior action ctrl.flip(front|back|left|right).

Michael fixed battery voltage calculation of print battery cammand. Replaced calcultion in ctrl.c against function get_battery_voltage.

Added new files ctrl_amir_ng_flip.[ch] containing code for the new flip implementation depending on flight state and added files to Makefile.am. The amir-ng controller now calls flight state depandant flip functions.

Implemented prelimary flip code. Do not use, you will trash your copter currently!

Patched qngctrl to work with qwt6

Implemented rate limits. Can be enabed with the global parameter CTRL.use.rate.limit. We need to check out angular rate limits in-flight.

Created gen.daily, a small script to automatically generate daily builds with and without usb bootloader.

Replaced when.landed.rc.left.stick.edge(edge) and when.landed.rc.right.stick.edge(edge) with when.landed.rc.stick.edge(stick, edge).

Improved “print acc”.

Moved ACC[nick|roll|yaw]corr from conf to global and gave them new meaning. They are set by ctrl.calibrate.acc.by.stick(stick) and represent the addition calibration used to hoover on the spot. Introduced new ACC[nick|roll|yaw]cal parameters which represents the default absolute calibration of the ACC which gets set by ‘calibrate acc’ and ‘calibrate all’ as well as by left stick top right. Both parameters get calulcated into the used ACC value ACCresult[]/ACCmean[].

Implemented behavior condition when.rc.stick.edge.and.pot(stick,edge,pot). It now zeros rc values in HOOK_INPUT_RC making sure the copter does not nick/roll while the pot is triggered.

Hotfixed qngctrl1: The switch from qwt5 to qwt6 seems to have broken the autoscaling feature. Dunno why… :( I have disabled autoscaling by default for now.

Added missing HAL parameters for HAL x8X.

Updated manage_licenses.sh script & foreign friends db. Added license to build_arm-toolchains.sh script. Updated all licenses: added website url, changed copyright year to 2011.

Refactored actor_scan_actors_task() to try to scan the i2c bus a second time, should it not detect devices on the bus.

The behavior condition when_rc_stick_edge_and_pot((stick, edge, pot) works landed and in simulated flight.

Added #ifdef around ctrl.flip(). It’s not yet consumer ready. You need to define BEHAVIOR_ENABLE_FLIP in behavior.h for ctrl.flip() to be available.

Reintegrated Matze’s branch: Switched PCA configuration to own config struct, implemented ‘diff pca’,‘show pca’ &‘dump pca’. Also added PCA support to ‘diff all’ & ‘set <key> <val>’. And last but not least added, default value for PCA channels in config struct, which will be set on startup.

Reintegrated Florian’s branch: Initial commit of spektrum support. Improved scaling - works now with 125% travel adj. Needs some fine tuning.

Matze fixed device detection and added spectrum receiver to IDX list, #define DEV_IDX_SPEKTRUM_UART0 63, #define DEV_IDX_SPEKTRUM_UART1 64, also extended dirty register for the PCA from 16 to 32 bit to force the statemachine to a second write of a PCA channel value, also added a hysteris for the behavior_action_actor_dim_pca9685 action.

Implemented two level in-flight calibration: moving the calibration stick halfways increases acc vektor by one, moving the calibration stick fullway increases acc vektor by 5.

Changed default behavior rules to include the new style calibration: 05 when.rc.stick.edge.and.pot(right,any,0) => ctrl.calibrate.acc.by.stick(right) dropped old style calibration from defaults.

Corrected POS.Kalman.Baro.R default value so that the height kalman filter works correctly. Now guesses at least the right height. Acc gets fused into baro height. Still need to tune this.

Fixed new style 2 step calibration to only trigger once +1 when moving the stick full way. Full way movement now results in +-5 (eg. +-1 and +-4).

Fixed ‘show stats’ when using a mk3mag. It did not show compass statistics.

Implemented new global parameter called ‘CTRL.compass.corr’ allowing to turn the measured compass value by a certain angle. This allows us to attach the compass in arbitrary orientation.

Implemented new statistic output: cycle mean frequency. Implemented new controller input state information: cycle_period, cycle_hz. Controllers need to handle cycle_period within integration code now. This allows us to use dynamic cycle intervals…

Fixed 8bit->12bit scaling in behavior action ctrl.hoover(), ctrl.ascend() and ctrl.decend(). The argument was not converted to 12bit.

Makefiles in qngctrl now check for QWT5/6 libraries and configure library usage accordingly. Added QWT5/6 compatibility #ifdef’s.

Matze added pca9685 burst transfer for testing, changed PCA Device ID to 0x80, changed single channel to four channel burst mode (not yet stable) and added ’loop pca9685’ for real time channel overview. Fixed pca9685 ID for pcb rev2. Fixed PCA9685 device index.

Changed controllers amir and amir-ng to support dynamic closed-loop cycle times. We now use cs.in.cycle_period to integrate correctly, even when we skip a closed-loop cycle and controller needs to integrate over 2ms or more.

Improved “loop rc”, “loop dsl” and “loop rc”, “loop ctrl”, “loop adc10”, “loop adc12”, “loop adc16” and “loop adc24”, “loop compass”, “loop attitude”, “loop acc”, “loop position” and “loop mk3mag”. They print their results all 512 loop cycles now.

Fixed behavior condition when.rc.pot.tristate(channel, button). Now works as expected.

HW-0.22-r3-mini has been added to the hardware folders.