Joystick Setup Page
When a compatible joystick is plugged into the topside computer, the Joystick Setup page will become active and a small red icon will appear in the top toolbar. After the calibration process is complete and the joystick is enabled, this icon will turn white.
The General Settings tab:
- Enables or disables a joystick. After calibration, this box will be automatically checked.
- Selecting the intended joystick, if more than one joystick is connected.
- Selecting the RC Mode Style.
- Mode 3 is default. Other modes may be selected based on user preference.
- Quickly viewing axis movement and button presses.
This tab allows users to reconfigure buttons based on their preference.
Pressing a physical joystick button will highlight the number on the screen. The user can then select the desired button action from the dropdown.
Joystick Button Functions
Joystick buttons can be configured to perform different functions. Each button may be assigned a regular function and a shift function. To use shift functions, a button must be assigned the special shift function. The shift button will then act like a shift key on a keyboard; when held, it modifies the other buttons to execute their assigned shift functions. The available button functions are described below.
- none: Do nothing, button is disabled
- shift: When held, act as a shift modifier for other buttons
- arm_toggle: Toggle the armed state of the vehicle
- arm: Arm the vehicle
- disarm: Disarm the vehicle
- gain_toggle: Toggle between minimum and maximum pilot input gain sensitivity
- gain_inc: Increase pilot input gain/sensitivity
- gain_dec: Decrease pilot input gain/sensitivity
- trim_roll_inc: Trim level target roll to the right
- trim_roll_dec: Trim level target roll to the left
- trim_pitch_inc: Trim level target pitch forward
- trim_pitch_dec: Trim level target pitch backward
- input_hold_toggle: Toggle holding current joystick axis inputs (cruise control on/off)
- roll_pitch_toggle: Toggle between roll/pitch and forward/lateral control on joystick input
These button functions will command a switch to the corresponding flight mode. Please note that the advanced modes are in development and are not recommended for general use.
Roll and Pitch Control
Presently (due to legacy/inheritance reasons), there is no convenient way to control the roll and pitch of and ArduSub vehicle with QGroundControl. The available solution is to use the roll_pitch_toggle joystick button function. When this button is pushed, the forward and lateral joystick axes toggle between controlling the forward and lateral motion of the vehicle and controlling the roll and pitch of the vehicle.
The roll and pitch input behaves differently in different flight modes.
- MANUAL: The roll and pitch input control the rotation rate of the vehicle. As long as the joystick input is deflected, the vehicle will continue to rotate. A centered joystick input commands a rotation rate of zero.
- ACRO: This functions like MANUAL, but the rate of rotation is precisely controlled and stabilized.
- STABILIZE: The roll and pitch input control the desired angle of the vehicle attitude. When the joystick input is centered, the vehicle will stabilize a level attitude. When the joystick input is deflected, the vehicle will stabilize the deflected angle. There are two parameters that control the maximum angle of vehicle deflection: the pilot input gain (which scales the input), and the ANGLE_MAX parameter (which controls the maximum angle that the vehicle will deflect in stabilize mode). For example, if the ANGLE_MAX parameter is 80 degrees, and the input gain is 50%, when the the roll or pitch joystick input is completely deflected, the vehicle will deflect 40 degrees ( 0.5 * 80 ). Press the roll_pitch_toggle joystick button while the vehicle is deflected to lock the current deflection angle and return to controlling forward and lateral motion. To clear the roll and pitch input command, switch to MANUAL mode, or press the roll_pitch_toggle button.
- DEPTH HOLD: This functions like STABILIZE mode, but the pressure-depth is also maintained. The throttle joystick is used to control the vehicle to the desired depth, and on joystick release the current depth will be stabilized to.
- mount_center: Sets RC Input channel 8 pwm to the value configured by the CAM_TILT_CENTER parameter
- mount_tilt_up: Increase RC Input channel 8 pwm by the amount configured by the JS_CAM_TILT_STEP parameter
- mount_tilt_down: Decrease RC Input channel 8 pwm by the amount configured by the JS_CAM_TILT_STEP parameter
- camera_trigger: Trigger cameras shutter NOT IMPLEMENTED
- camera_source_toggle: Toggle video source, toggles RC Input channel 10 between 1100 and 1900 pwm
- mount_pan_right: Pan mount right
- mount_pan_left: Pan mount left
- lights1_cycle: Increase or decrease RC Input channel 9 pwm by the amount configured by the JS_LIGHTS_STEP parameter, switches between increasing and increasing when output limits are reached
- lights1_brighter: Increase RC Input channel 9 pwm by the amount configured by the JS_LIGHTS_STEP parameter
lights1_dimmer: Decrease RC Input channel 9 pwm by the amount configured by the JS_LIGHTS_STEP parameter
lights2_cycle: Increase or decrease RC Input channel 10 pwm by the amount configured by the JS_LIGHTS_STEP parameter, switches between increasing and increasing when output limits are reached
- lights2_brighter: Increase RC Input channel 10 pwm by the amount configured by the JS_LIGHTS_STEP parameter
- lights2_dimmer: Decrease RC Input channel 10 pwm by the amount configured by the JS_LIGHTS_STEP parameter
- relay_1_on: Sets the pin configured by the RELAY_PIN parameter to output HIGH
- relay_1_off: Sets the pin configured by the RELAY_PIN parameter to output LOW
relay_1_toggle: Toggles the state of the pin configured by the RELAY_PIN parameter
relay_2_on: Sets the pin configured by the RELAY_PIN2 parameter to output HIGH
- relay_2_off: Sets the pin configured by the RELAY_PIN2 parameter to output LOW
relay_2_toggle: Toggles the state of the pin configured by the RELAY_PIN2 parameter
relay_3_on: Sets the pin configured by the RELAY_PIN3 parameter to output HIGH
- relay_3_off: Sets the pin configured by the RELAY_PIN3 parameter to output LOW
- relay_3_toggle: Toggles the state of the pin configured by the RELAY_PIN3 parameter
- servo_1_inc: Increase Aux1 servo output by 50 pwm
- servo_1_dec: Decrease Aux1 servo output by 50 pwm
- servo_1_min: Set Aux1 servo output to the configured minimum pwm according to SERVO9_MIN
- servo_1_max: Set Aux1 servo output to the configured maximum pwm according to SERVO9_MAX
servo_1_center: Set Aux1 servo output to the configured center according to SERVO9_TRIM
servo_2_inc: Increase Aux2 servo output by 50 pwm
- servo_2_dec: Decrease Aux2 servo output by 50 pwm
- servo_2_min: Set Aux2 servo output to the configured minimum pwm according to SERVO10_MIN
- servo_2_max: Set Aux2 servo output to the configured maximum pwm according to SERVO10_MAX
servo_2_center: Set Aux2 servo output to the configured center according to SERVO10_TRIM
servo_3_inc: Increase Aux3 servo output by 50 pwm
- servo_3_dec: Decrease Aux3 servo output by 50 pwm
- servo_3_min: Set Aux3 servo output to the configured minimum pwm according to SERVO11_MIN
- servo_3_max: Set Aux3 servo output to the configured maximum pwm according to SERVO11_MAX
- servo_3_center: Set Aux3 servo output to the configured center according to SERVO11_TRIM
These are reserved for developer use, and do not do anything by default
For more information, it's possible to check the ArduSub joystick source code.
This tab calibrates the joysticks control axis for recognition as proper inputs for QGC.
The calibration process wil only recognize 4 axis (0-3) even if there are more on the physical joystick.
- Press the Start button and then follow the on-screen instructions to calibrate/move the sticks.
- The joystick is enabled as the last step of the calibration process.
- Test the buttons and sticks work as intended by pressing them, and viewing the result in the Axis/Button monitor in the General tab.
Some additional options are available in this tab. These options may be useful for specific, unsual setups, for increasing sensibility, and for handling noisy joysticks.
Some options are not required or useful with ArduSub and may inhibit proper operation if used.
- Full down stick is zero throttle: In this mode, lowered stick sends 0 in MANUAL_CONTROL z, centered stick 500, and raised 1000.
- Center stick is zero throttle: Centered or lowered stick sends 0 in MANUAL_CONTROL z, raised stick sends 1000.
- Spring loaded throttle smoothing: In this mode you control not the throttle itself, but the rate at which it increases/decreases. This is useful for setups where the throttle stick is spring loaded, as the user can hold the desired throttle while releasing the stick.
The exponential slider allows you to make the sticks less sensitive in the center, allowing finer control in this zone. The slider adjusts the curvature of the exponential curve. The higher the Expo value, the flatter the curve is at the center, and steeper it is at the edges.
Further Advanced Settings
The advanced settings are not recommended for everyday users. They can cause unpredicted results if used incorrectly.