* FlighGear and Ivy thread working
* Main loop replaced with main_thread
* Cleaned up nps_main
* HITL main - test TX with Vectornav
* Added AggieAir control panel
* [modules] Flight logger module added
* [fixedwing] Airframe configuration updated
* [hitl] Proof Of Concept - IO and simulation running
* [nps] Minor changes in main hitl
* [nps] Performance Test with Pthread library
* [hitl] Working with pthreads instead of glib threads
* [hitl] Minor updates
* [nps] Refactoring to get rid of Gthreads
* [nps] Minor changes, added mutex guards
* [nps] Minor Ivy fix
* [nps] Threads working properly
[hitl] Ins separated
* [hitl] Check for launch variable
* [nps] Refactoring makefile into common and hitl/sitl specific
* [hitl] Hitl works, sitl too
* [hitl] ins_vectornav comments
* [hitl] Updated launch routine
* [nps_hitl Cleaned up version of NPS/HITL
- added support for ACTUATORS message (Rotorcraft)
- resolved start issue for Fixedwing (works fine now)
- minor improvements in threads (fg_thread, ap_init)
* [nps] Minor fixes to save current work
* [nps] Minor fixes
* Update to latest pprzlink
* FlighGear and Ivy thread working
* Main loop replaced with main_thread
* Cleaned up nps_main
* HITL main - test TX with Vectornav
* Added AggieAir control panel
* [modules] Flight logger module added
* [fixedwing] Airframe configuration updated
* [hitl] Proof Of Concept - IO and simulation running
* [nps] Minor changes in main hitl
* [nps] Performance Test with Pthread library
* [hitl] Working with pthreads instead of glib threads
* [hitl] Minor updates
* [nps] Refactoring to get rid of Gthreads
* [nps] Minor changes, added mutex guards
* [nps] Minor Ivy fix
* [nps] Threads working properly
[hitl] Ins separated
* [hitl] Check for launch variable
* [nps] Refactoring makefile into common and hitl/sitl specific
* [hitl] Hitl works, sitl too
* [hitl] ins_vectornav comments
* [hitl] Updated launch routine
* [nps_hitl Cleaned up version of NPS/HITL
- added support for ACTUATORS message (Rotorcraft)
- resolved start issue for Fixedwing (works fine now)
- minor improvements in threads (fg_thread, ap_init)
* [nps] Minor fixes to save current work
* [nps] Minor fixes
* Update to latest pprzlink
* Fixed the feed function
* Compilation fixes
* More compilation fixes
* Last compilation fixes
* Added a simple automated flight plan (auto take off and landing)
* Fixes in NPS
* Removed SBUS fakerator
* Removed superfluous "else"
* Renamed "flight recorder" to "xgear"
* Fixed formatting
* Updated extra_dl module
* Initial support for extra_dl to run over USB serial
* Fixed usb_serial for extra_dl
* extra_dl_periodic() called at TELEMETRY_FREQUENCY
* [imu] convert imu subsystems to modules
Also
- get rid of explicit imu init|event|periodic calls in main
- each imu implementation has their own imu_x_init/event/periodic
* [imu] fix some imu modules
* [imu] fix bad paths
* [imu] add imu_common module that every implementation autoloads
and put body_to_imu settings in imu_common module
* [imu] fix imu_ardrone2
* [conf] add imu_common settings module in conf_example and conf_tests
This pull request is for the guidance algorithms used to control hybrid drones like the Quadshot and MavShot. It supports autonomous waypoint navigation as well as "forward-flight". The code was flight tested in autonomous waypoint navigation mode, including autonomous landing (using sonar).
IMU, mag, baro and telemetry tested.
Positive x-axis of the IMU is indicated by the arrows on the board, the side with LEDS and F4 is up (negative z-axis).
Still missing support for the modem and the external flash...
To get the axes correct also extended the imu_mpu600_hmc5883 driver to allow different axes/channel assignments.
* [conf] 2seas2o -> tudelft
* [conf] non-existing airframe
* [airframe] simulate indi frog with no inertia
* [conf] start cleaning old IMAV airframes, remove non-existing
* [airframe_editor] point to other default airframe
* [CHIMU] documentation and examples
* [airframe] yapa_xsens is TUDELFT
add fields_valid bitfiled to gps struct and use that to decide whether a valid UTM pos is availabe instead of always computing UTM if GPS_USE_LATLONG is defined
should close#641
in the telemetry xml file a type can be specified for the process (default is "pprz").
You can also set "mavlink" and use mavlink messages, which will be sent as specified if the mavlink module is loaded and that mavlink message is registered there.
use default_rotorcraft.xml instead...
basically we now have two extra ARDrone specific messages in the default_rotorcraft file (ARDRONE_NAVDATA and OPTIC_FLOW_EST)
but they are only sent if a publisher is present for it... so it doesn't really hurt...
Continue refactoring of AHRS and INS:
- add GEO_MAG ABI message
- add GPS ABI message
- remove explicit calling of update_gps functions (replaced by GPS ABI callbacks)
- each ins has it's own unique struct/function names
- send STATE_FILTER_STATUS from each implementation (with added id if you run multiple ones)
- use stateIsAttitudeValid() instead of AHRS.is_aligned
- The state interface is initialized with invalid attitude.
It becomes valid as soon as an attitude is set (via one of the stateSetNedToBodyX functions).
This should be only done by an AHRS/INS after it is aligned.
- add possibility to run multiple (currently two) AHRS implementations and switch which one should push the output to the state interface during runtime
`ahrs_init()` and `ins_init()` are now sort of "dispatcher" functions, that init/register the actually used implementation.
As an example using `float_mlkf` as the `PRIMARY_AHRS` and `int_cmpl_quat` as `SECONDARY_AHRS`, in your firmware section of the airframe file:
```
<subsystem name="ahrs" type="float_mlkf"/>
<subsystem name="ahrs" type="int_cmpl_quat">
<configure name="SECONDARY_AHRS" value="int_cmpl_quat"/>
</subsystem>
```
In `ahrs_init()` it calls the ahrs_x_register functions for both. Each of those calls their own ahrs_foo_init and then `ahrs_register_impl(enable_output_function)`, then do the ABI binding and register periodic telemetry functions.
The "enable_output_function" pointer is used to keep a reference to the implementation functions to switch on/off publishing of the output to the state interface.
Hence you can call `ahrs_switch(idx)` at runtime to switch the output of the AHRS implementations.
E.g. with idx=1 switch to the output of the secondary AHRS (with 0 being the primary)
Add the `conf/settings/estimators/ahrs_secondary.xml` settings file to switch them via settings.