- 
                Notifications
    You must be signed in to change notification settings 
- Fork 4.4k
Feature: Add QML-configurable gimbal max speed and deadzones #13280
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
9546ecf    to
    9b14afc      
    Compare
  
    | Could you look at the GimbalController and see if you can use that instead of changing Vehicle? | 
        
          
                src/Joystick/Joystick.cc
              
                Outdated
          
        
      | static int zeroPitchCount = 0; | ||
| static int zeroYawCount = 0; | ||
|  | ||
| if (std::abs(gimbalPitchOut) == 0) { | ||
| zeroPitchCount++; | ||
| } else { | ||
| zeroPitchCount = 0; | ||
| } | ||
|  | ||
| if (std::abs(gimbalYawOut) == 0) { | ||
| zeroYawCount++; | ||
| } else { | ||
| zeroYawCount = 0; | ||
| } | ||
|  | ||
| if (zeroPitchCount >= 3 && zeroYawCount >= 3) { | ||
|  | ||
| }else{ | ||
| _activeVehicle->sendGimbalAbsolutePosition(gimbalPitchOut, gimbalYawOut); | ||
| // qDebug() << gimbalYawOut << gimbalPitchOut; | ||
| } | 
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a bit weird. Can you add a comment how it works. And also remove avoid the empty if clause.
And don't use static there but instead it should be a class member variable.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I gonna fix the static. I use this code to stop overflowing MAVLink messages to the gimbal.
Without it QGroundControl cannot use the onscreen gimbal control.
When the slider is in the neutral / 0 position, the code stops sending gimbal commands.
The slider goes to neutral when you release it, because a spring centers it.
This prevents spamming the gimbal with useless "zero movement" commands when the stick is centered.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is starting to look good.
Have you thought about the case where we don't have control over the gimbal yet and need to acquire it?
| 
 I suggest handling this in a follow up PR, since it feels a bit out of scope for the changes in this one. | 
| Could you remove the extra .txt & .cmake files? | 
| 
 Yes I will do that. Thanks for pointing it out. | 
| So I've been going through the state of Joystick Config/Calibration. It's quite a mess and needs a consistent rework. I'm going to do that in the next couple days which is gonna hammer this pull. I'll take care of it myself though by integrating.modifying your work into the new code. So leave this open for now. And I'll pull code from it and move it to the new stuff as I make progress. | 
| 
 Thanks a lot for the update. I will leave the PR open as suggested and will follow your progress. | 
Title:
Add QML-configurable gimbal max speed and yaw/pitch deadzone settings
Description
This PR adds new joystick configuration features to allow runtime adjustment of:
Gimbal pitch and yaw max speed, using a single gimbalMaxSpeed parameter exposed to QML
Deadzone control for pitch and yaw gimbal axes via gimbalPitchDeadzone and gimbalYawDeadzone
Enable/disable axis-based gimbal control (gimbalAxisEnabled)
This allows users to fine-tune gimbal behavior without recompiling, which is especially useful when mapping joystick axes for dynamic camera control.
Changes include:
Test Steps
Tested in:
Checklist:
Related Issue
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.