ArduPlane, ArduCopter, ArduRover, ArduSub source
Go to file
abaghiyan 26cbdd9a4c Plane: Fixed formula for load factor
In general when there the pitch and roll exist the formula for the aerodynamic load factor should be as follows:
aerodynamic_load_factor = cosf(radians(_ahrs.pitch))/cosf(radians(demanded_roll));
which in case of turns (in the horizontal plane) becomes
aerodynamic_load_factor = 1.0f/cosf(radians(demanded_roll));
formulas can be obtained from equations of balanced spiral:
liftForce * cos(roll) = gravityForce * cos(pitch);
liftForce * sin(roll) = gravityForce * lateralAcceleration / gravityAcceleration; // as mass = gravityForce/gravityAcceleration
see issue #24320 [#24320].
To connect loadFactor to airspeed we can use formula of balancing between lift force and gravity force:
liftForce = loadFactor * gravityForce; on the other hand lift force can be expressed as
liftForce = 0.5 * lifCoefficient * airDensity * sq(airspeed) * referenceArea; minimum airseepd is at loadFactor = 1
and lift force only balances the gravit force, so gravity force (which is same as lift force at minimum airspeed) with minimum airspeed can be expressed as
gravityForce = 0.5 * lifCoefficient * airDensity * sq(airspeed_min) * referenceArea; substituting gravit force in previous formula gives us
0.5 * lifCoefficient * airDensity * sq(airspeed) * referenceArea = loadFactor * 0.5 * lifCoefficient * airDensity * sq(airspeed_min) * referenceArea;
from where we get:
loadFactor = sq(airspeed / airspeed_min);
These changes also require changes in ardupilot/libraries/AP_TECS/AP_TECS.cpp
Line 418 (according to the comments by Peter Hall): _TASmin *= _load_factor; should be changed to _TASmin *= safe_sqrt(_load_factor);

See details here: #24320
2025-02-18 10:53:06 +11:00
.github .github: re-enable examples 2025-02-13 09:59:49 +11:00
.vscode Waf:add --vs-launch 2025-01-22 18:23:57 +11:00
AntennaTracker Tracker: 4.6.0-beta4 release notes 2025-02-17 20:40:07 +09:00
ArduCopter Copter: 4.6.0-beta4 release notes 2025-02-17 20:40:12 +09:00
ArduPlane Plane: Fixed formula for load factor 2025-02-18 10:53:06 +11:00
ArduSub ArduSub: move from MAV_MODE enum to uint8_t 2025-02-17 17:20:24 +11:00
benchmarks waf: add gbenchmark Waf tool 2015-12-03 07:54:31 +11:00
Blimp Blimp: move from MAV_MODE enum to uint8_t 2025-02-17 17:20:24 +11:00
docs treewide: fix shebangs - /bin/bash -> /usr/bin/env bash 2024-02-13 11:36:23 +11:00
libraries AP_HAL_ChibiOS : add SULILGH7 board 2025-02-17 19:50:16 +11:00
modules modules: add littlefs v2.10.1-ardupilot 2025-01-21 11:10:31 +11:00
Rover Rover: 4.6.0-beta4 release notes 2025-02-17 20:40:09 +09:00
tests AP_gtest: enable testing for exit conditions, SITL unit tests 2021-09-28 09:11:48 +10:00
Tools Tools: build_autotest.sh: allow use of more modern timelimit command 2025-02-17 20:19:03 +11:00
.dir-locals.el emacs: add a .dir-locals.el 2016-10-24 09:41:31 -02:00
.dockerignore Tools: fix junit report and add firmware version on report 2023-11-22 18:32:19 +11:00
.editorconfig .editorconfig: Update for more standards aware editors 2023-05-23 09:56:28 +10:00
.flake8 Tools: Improved flake8 speed, ignore, and exclude 2022-06-28 13:16:24 +10:00
.git-blame-ignore-revs .git-blame: Ignore reformat in ROS2 2024-09-06 21:28:25 +10:00
.gitattributes .gitattributes: mark bin, elf and hex as binary 2021-05-20 11:45:02 +10:00
.gitignore gitignore: ignore .python-version file used by pyenv 2025-02-04 11:24:16 +11:00
.gitmodules modules: add littlefs v2.10.1-ardupilot 2025-01-21 11:10:31 +11:00
.pre-commit-config.yaml pre-commit: remove check for dds_xrce_profile.xml 2024-05-29 17:47:52 +10:00
.pydevproject
.valgrind-suppressions Valgrind: add supressions file and .valgrindrc using it 2019-07-18 16:49:11 +10:00
.valgrindrc Valgrind: add supressions file and .valgrindrc using it 2019-07-18 16:49:11 +10:00
BUILD.md docker: add usage instructions to BUILD.md 2024-05-29 08:31:11 +09:00
CODE_OF_CONDUCT.md Add developer code of coduct 2022-02-08 10:53:35 +11:00
COPYING.txt
Dockerfile Dockerfile: Added Micro-XRCE-DDS-GEN instal to Dockerfile. 2024-11-08 10:50:05 +11:00
Doxyfile.in cfg: Fix typos 2016-05-13 19:20:07 -03:00
Makefile Make: use https:// scheme for ardupilot URLs 2019-12-10 07:53:46 +11:00
pyproject.toml global: add skip-string-normalization to black config 2022-07-26 21:23:42 +10:00
README.md README: add Navigator maintainer attribution 2024-06-27 00:06:38 -03:00
Vagrantfile Vagrant: add autotest server VM 2025-02-17 20:19:03 +11:00
waf waf: use python3 even if /usr/bin/python is v2 2023-05-06 10:09:04 +10:00
wscript Waf:add --vs-launch 2025-01-22 18:23:57 +11:00

ArduPilot Project

Discord

Test Copter Test Plane Test Rover Test Sub Test Tracker

Test AP_Periph Test Chibios Test Linux SBC Test Replay

Test Unit Teststest size

Test Environment Setup

Cygwin Build Macos Build

Coverity Scan Build Status

Test Coverage

Autotest Status

ArduPilot is the most advanced, full-featured, and reliable open source autopilot software available. It has been under development since 2010 by a diverse team of professional engineers, computer scientists, and community contributors. Our autopilot software is capable of controlling almost any vehicle system imaginable, from conventional airplanes, quad planes, multi-rotors, and helicopters to rovers, boats, balance bots, and even submarines. It is continually being expanded to provide support for new emerging vehicle types.

The ArduPilot project is made up of:

User Support & Discussion Forums

Developer Information

Top Contributors

How To Get Involved

License

The ArduPilot project is licensed under the GNU General Public License, version 3.

Maintainers

ArduPilot is comprised of several parts, vehicles and boards. The list below contains the people that regularly contribute to the project and are responsible for reviewing patches on their specific area.