IGC Possible Fixes To Herelink RC Dilemma

Note: We'll probably need a VIO and a LR1 which is configured to move in order to test these items. We have an LR1, but it has not been configured to move. We could ship back our LR1 payload which is not configured, or we could configure the one we have if given instructions.

Background Info

On the most recent herelinks, when testing hotswaps, testers found that the VIO was not moving. Upon further investigation, it was noticed that the herelink movement was assigned to RC15 for the VIO and RC6 for the LR1.

This is the exact opposite of what it was before. So, on IGC, the Ardupilot VIO RC params have RC6 function set to move the VIO, while the IGC Ardupilot LR1 RC params have RC15 set to move the LR1.

Note: There are two things set here. First, in the herelink settings, buttons and sticks are assigned to RC values, meaning that moving them outputs RC signals. Second, the flight controller has params associated with what a RC value does. The herelink settings are completely out of IGC's control currently and is entirely reliant on what is set on the herelink manually.

The dilemma is that in previous working and tested systems, the RC params set were the exact opposite. The VIO has always used RC6 to move it. So if we go the easy route and flip these params, we will absolutely cause issues to existing clients resulting in them having to manually change herelink settings. It is a mess.

Possible Solution #1, assign the same Ardupilot Param RC function to multiple RC params (10h):

If we could set the ardupilot parameter which assigns the RC function to move the gimbal to multiple RC params, and that works, it could be a solution to this issue. Then in further releases, we could always associate the same RC value to move the gimbal, rather than switching it up. But this only works if it does not cause issues to assign the same RC function to multiple RC values. This needs to be tested. How to test if this is a viable solution: "

Could someone check if assigning multiple RCx_OPTION ardupilot params to the same function causes issues? It might be a solution to this problem if it does not cause issues. We could theoretically have IGC make it so both RC6 and RC15 are assigned to the same option. I cannot test this since I don't have the vio and my lr1 has not been configured to moveLR1:

1	1	RC15_DZ	50	4
1	1	RC15_MAX	2000	4
1	1	RC15_MIN	1000	4
1	1	RC15_OPTION	214	4
1	1	RC6_DZ	50	4
1	1	RC6_MAX	2000	4
1	1	RC6_MIN	1000	4
1	1	RC6_OPTION	214	4

VIO:

"

This is the path of least resistance if it works

Testing if this is viable (3h)

Implementing solution (2h)

Testing solution extensively (3h)

Possible Solution #2, IGC-based gimbal movement (26h)

This leverages existing work we had done on IGC where we were moving the gimbal via software buttons on IGC rather than through the herelink. These changes were scrapped due to wanting to use that back wheel to move the gimbal, and because the switch direction button caused a delay.

  1. Reassign both VIO and LR1 gimbal movement to a new RC value to avoid conflicts with old versions

  2. Assign the C and D buttons on the herelink by default to "VIO Up or Right" and "VIO Down or Left" whenever the VIO is detected. Rename these already existing button functions to "Gimbal Up or Right" and "Gimbal Down or Left".

  3. Assign the top right bumper button to gimbal switch "VIO switch direction" and rename the button to "Gimbal switch direction".

  4. Now gimbal movement is controlled via the "C" and "D" buttons by default. Switch direction is the same. The difference is that it is now entirely controlled on IGC rather than via the herelink.

(1-4): ~10h

  1. Fix existing issue which we ran into where the "VIO switch direction" button on the herelink causes a 3 second delay before actually switching direction (16h)

Test this change for both LR1 and VIO

Possible Solution #3, IGC-based gimbal movement + we manage to make the wheel associated with moving the gimbal detected on software (44h)

ALL STEPS FROM SOLUTION 2

  1. Figure out how to make IGC detect the herelink back wheel which moves gimbal. It is not detected when we have "gpio-keys" selected as the Active Joystick. But we need "gpio-keys" selected, unless IGC will force us to calibrate and use the normal joysticks for drone movement, which we don't do right now (18h)

Last updated