Add thrust interlock and move gamepad status to Flight tab#780
Open
Add thrust interlock and move gamepad status to Flight tab#780
Conversation
When connecting to a Crazyflie or selecting/changing an input device or mapping, a thrust interlock is now engaged that forces thrust to zero until the physical throttle is brought to zero by the user. This prevents unexpected take-off due to a misconfigured mapping or a non-zero throttle position at connection time. The gamepad device info (device name, mapping, mux) previously shown in the status bar is now displayed in a dedicated Gamepad section in the Flight tab, alongside an interlock status indicator. Fixes #775
| @@ -93,6 +93,8 @@ | |||
| _log_data_signal = pyqtSignal(int, object, object) | |||
| _pose_data_signal = pyqtSignal(object, object) | |||
|
|
|||
Contributor
There was a problem hiding this comment.
Is there a reason to the empty line? If not, we can remove it
| _assisted_control_updated_signal = pyqtSignal(bool) | ||
| _heighthold_input_updated_signal = pyqtSignal(float, float, float, float) | ||
| _hover_input_updated_signal = pyqtSignal(float, float, float, float) | ||
|
|
Contributor
There was a problem hiding this comment.
Is there a reason to the empty line? If not, we can remove it
| disconnectedSignal = pyqtSignal(str) | ||
| linkQualitySignal = pyqtSignal(float) | ||
|
|
||
| gamepad_device_updated = pyqtSignal(str, str, str) |
Contributor
There was a problem hiding this comment.
variable name doesn't follow naming style
| linkQualitySignal = pyqtSignal(float) | ||
|
|
||
| gamepad_device_updated = pyqtSignal(str, str, str) | ||
|
|
Contributor
There was a problem hiding this comment.
unclear grouping using newlines
Contributor
|
Live demo with @ataffanel proved indented functionality! |
enyanil
requested changes
Feb 24, 2026
Member
enyanil
left a comment
There was a problem hiding this comment.
Super nice addition! I have some comments about how it works:
- The state is "ready" when no gamepad is connected which is a bit misleading. Maybe add a state that is "not connected" or just a "-".
- When creating a custom mapping, the mapping is applied to the gamepad but the name in the gamepad info box is not updated. It however gets updated if you go into the menu and select a custom mapping.
- The red text about throttle in the state field is visible for a very short time and then switches to "ready" when selecting a mapping, even when everything is ok. This is not super distracting but maybe could be removed by changing order of reading?
We're also going to have to update some docs about the flight tab and input devices when this is merged.
Some things that I don't think comes from your updates (that can be made into separate issues):
- When creating a custom mapping and adding assist to the rb button, saving and applying the mapping, and then pressing rb while not connected to a cf causes the entire client to crash.
- When setting a mapping (for example ps_mode2) it is remembered when closing and re-opening the client, custom mappings are not remembered when they are selected.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
When connecting to a Crazyflie or selecting/changing an input device or mapping, a thrust interlock is now engaged that forces thrust to zero until the physical throttle is brought to zero by the user. This prevents unexpected take-off due to a misconfigured mapping or a non-zero throttle position at connection time.
The gamepad device info (device name, mapping, mux) previously shown in the status bar is now displayed in a dedicated Gamepad section in the Flight tab, alongside an interlock status indicator.
Fixes #775