* [guidance] attempt to clean guidance indi code
- remove super dangerous RC_DEBUG flag
- use new filter *_types
- fix filters documentation (time constant -> omega)
- outer loop control separated as a WEAK function
* get rid of deprecated thrust dynamics
---------
Co-authored-by: Ewoud Smeur <e.j.j.smeur@tudelft.nl>
* [wgs84] compute the geoid/ellipsoid with the same model
Use the same model by default (WGS84) in the flight plan generator and
the airborne code. Small differences can propagate and lead to different
NED altitude for the waypoints, especially when using WAYPOINTS_LLA_ALT
option with EKF2. A 'configure' allows to desactivate this option, which
is acceptable for a local flight.
* [ins] add option to force using flight plan reference
* update anton airframe
* [supervision] fix startup config
otherwise the default conf and control_panel after install is the first
in alphabetic order, not the example conf.
* [tool] fix link to GCS editor
* [conf] update conf example to include a fixed-wing airframe
* [flight_plan] update ins_reset to correct macro
* [disco] remove define with wrong name
and most likely wrong value anyway
* [airframe] update and clean Enac conf
From zombie package, needed by our current version of mavlink.
It is a workaround that could be removed if we manage to update mavlink,
now based on importlib rather than imp (removed in python 3.12).
Definitions and tools to abstract ChibiOS/Linux logging.
Use with control effectiveness logger and traffic_info (adding logging
support).
fix alt scaling in ACINFO_LLA message
With this flag, only GPS with valid integrity data is used, which is
greatly limiting the number of satellites actually used, and a much
lower precision in the end.
Make it possible to set the command vector from the stabilization INDI controller, when STABILIZATION_INDI_COMMANDS array is defined. The benefit is a simpler configuration of the control_laws section of the airframe file when using INDI.
Be careful that with this, a "correct" failsafe_value is needed for the commands, since it is the value applied in KILL mode. Some special keywords (e.g. MOTOR_STOP) are added to help avoiding mistakes.
Backward compatible if STABILIZATION_INDI_COMMANDS is not defined.
- add example airframe
- add special names for command failsafe values:
- MOTOR_STOP = MIN_PPRZ = -9600
- MAX_PPRZ = 9600
- MOTOR_IDLE = 0
- update airborne parsing
- update and factorize ground tool rtcm2ivy
- change offset type to uint16 to avoid overflow and garbage sending
(it should have never worked!!!!!)
- fix packet size checks
This PR allows to redefine the outer-loop for stabilization and
guidance, and to specify the guidance model for something else than a
quarotor (but still not an hybrid).
Two use case are proposed:
- replace the PD control of the outer-loop (still used by default) by
and Hinfinity controller
- parametrize the guidance for an hexa-copter with tilted motors,
allowing to produce side force for lateral motion control.
* [actuator] change configuration of actuators
- add a configuration structure to the actuators array
- limit the use of macros
- add a shell command to get and set actuator value
- update config for all boards
* fix actuator faulhaber for NPS
* add missing file in actuators nps
Configured with the number of poles (default 14, which is common for
most motors).
The update of RPM and other parameters is done in the actuators commit
function to have the fastest rate, instead of being done in the ESC
message send function.
* [fix] fix some bugs
small errors from compilation tests
* Attempt to fix the detection of failing tests
Side effect: the file issues.md is not produced anymore, but still available in stdout, so needs a manual copy if needed
- proper initial condition for linear filters
- add rate limit model
- possibility to use ranges to find best value for actuator dynamic
- allow to change any of the variables from command line
- update plot figures to group them with signal, fit result and fft
- add config files for full INDI with G2 matrix and Heewing Ranger T1 configuration
- possibility to use basic PID with steering rover
- fix navigation
- add support for mission mode
- fix simulator (orientation was wrong, leading to opposite steering
between sim and reality)
- add support of 2 wheels rover in simulation
- add and update config files
- generic pan/tilt gimbal control with several builtin modes
- gimbal position and orientation configurable
- specialization possible for gimbals not matching the default scheme
(with an example using the Caddx GM3 3 axis gimbal)
- remove all the old unused code using gimbal control
The RTC should not be activated by default, it is done if needed by
modules that need it (e.g. sdlog).
Currently, it is not possible to start a tawaki without the logger
activated as RTC is activated but source not correctly selected.
New message can set position, speed, acceleration and heading setpoint
for an accurate trajectory tracking.
Also fix the update of ref when h_ref is disabled.
* update control effectiveness script for new matrix format
* add a config file example for a quadcopter
- full indi
- no G2 vector
- new output format
- refactor some code
- more configurable
- reduce the number of lines with values set to 0 (replaced by memset)
- fix state update (pointer cast this way is undefined behavior)
The Ranger T1 is a tilt-rotor hybrid plane. As a first basic approach,
two separated controls are used for hovering (INDI) and forward flight
(PID). The mixing is done by a dedicated module and the autopilot is
customized to support the specific modes.
A simple PID controller is added to the rotorcraft firmware as it is not
possible to directly reuse the one from fixedwing firmware.
In a future work, a full INDI version might be used, but this approach
can still serves as an example of customized autopilot.
A simulation model for JSBSim is also provided.
Add a parameter to the takeoff function to specify the height at which the takeoff is considered finished.
A negative value tells that the default value (configurable from airframe file) should be used.
Update demo FP
* [guided] rewrite guided mode example with a separated lib
* [Settings] Allows to set setting by name.
---------
Co-authored-by: Fabien-B <Fabien-B@github.com>
This is a temporary measure to compile or not on ubuntu 24.04 until the
mavlink submodule is updated and integrate the required adaption to cope
with deprecated packages
* [generator] generate unique ID and names table for modules
* [state] add accessors for the state origin
* [state] don't access directly to state origin, use getters
* [state] filter inputs with module ID
* [ahrs] convert AHRS modules to state input filter
- selection of ahrs with settings from each module
- init functions for each ahrs modules
- remove old chimu
* update unit test
* [ins] decoupled INS implementation
To allow multiple INS at the same time:
- remove weak functions from ins.c
- remove the INS_TYPE_H define
- use ABI message to trigger INS reset
* [state] protect for c++
* [shell] add imu shell command
read current config and values of IMUs from shell
* [shell] add a sys_time shell command
read current sys_time and registered timers
The functions passed to the attributes 'on_enter' and 'on_exit' will be
called once every time the flight plan state machine enters or leaves a
block, even if the block change is requested by the operator or if it is
caused by an exception.
It allows to properly activate and then disable services related to a
specific block.
Another good side effect is that the block and stage index are now
private and can't be modified by external modules. Old variables
nav_block and nav_stage can still be used as read-only.
Based on the work from:
Baptiste Pollien, Christophe Garion, Gautier Hattenberger, Pierre Roux, Xavier Thirioux.
A Verified UAV Flight Plan Generator. 2023 IEEE/ACM 11th International Conference on Formal Methods in Software Engineering (FormaliSE),
May 2023, Melbourne, Australia. pp.130-140, 10.1109/FormaliSE58978.2023.00021
- update airframe and add competition flight plans
- fix flight plan DTD
- mag params for Bristol
- add a set_expo function (might be weak) for digital cam driver
- fix tag tracking for simulation, add getter functions
- add option to skip initial circle in nav survey
- fix jevois driver parsing
* [chibios] remove unecessary option that makes a warning on H7
see ChibiOS forum: http://forum.chibios.org/viewtopic.php?t=5830
* [guidance] fix hybrid guidance
after merging #3248
* [natnet] remove call to function that doesn't exist
issue were only on verbose mode
* [conf] remove bebop_flip aiframe file
The FLIP mode is not supported anymore, better remove this example.
If flip is really needed, it should be implemented as a custom mode in
generated autopilot.
Gtk3 doesn't support all features of gtk2 (or have a different interface), so if only gtk3 is found, GUI tools are not compiled, only CLI tools based only on glib.
If no gtk found, tools based on glib/gtk are not compiled.
Remove two old tools not used and not supported by gtk3.
Introducing several changes to the control stask for the stabilization:
- new structures: stabilization, stab (att and/or rates) and thrust (vector)
- more functional approach: stabilization receives the stab and thrust
setpoints from guidance and fill command vector at the end
- modes and sub-modes are redefined (split stab and guidance modes),
some AP modes are removed (FLIP and MODULE)
- RC read functions are removed and replaced by ABI bindings, one for
each part (AP, stab, guidance_h, guidance_v) with dedicated functions
- transition ratio (float in [0-1]) replace transition_percentage (int)
- the AP_MODULE mode is replaced by generated autopilot
- the ABI hack for guidance indi is not needed anymore
- AP generator supports a new 'store' attribute to use return values of
functions
- cleaning of the stabilization API (for setter functions)