Browse Source

Add RC-radio-like exponential to joystick RPY axes

QGC4.4
Rustom Jehangir 9 years ago
parent
commit
a2e20952ea
  1. 10
      src/Joystick/Joystick.cc

10
src/Joystick/Joystick.cc

@ -283,6 +283,16 @@ void Joystick::run(void) @@ -283,6 +283,16 @@ void Joystick::run(void)
yaw = std::max(-1.0f, std::min(tanf(asinf(yaw_limited)), 1.0f));
throttle = std::max(-1.0f, std::min(tanf(asinf(throttle_limited)), 1.0f));
// Exponential (0% to -50% range like most RC radios)
// 0 for no exponential
// -0.5 for strong exponential
float expo = -0.35;
// Calculate new RPY with exponential applied
roll = -expo*powf(roll,3) + (1+expo)*roll;
pitch = -expo*powf(pitch,3) + (1+expo)*pitch;
yaw = -expo*powf(yaw,3) + (1+expo)*yaw;
// Adjust throttle to 0:1 range
if (_throttleMode == ThrottleModeCenterZero) {
throttle = std::max(0.0f, throttle);

Loading…
Cancel
Save