Skip to content

Add thrust interlock and move gamepad status to Flight tab#780

Open
ataffanel wants to merge 1 commit intomasterfrom
ataffanel/775
Open

Add thrust interlock and move gamepad status to Flight tab#780
ataffanel wants to merge 1 commit intomasterfrom
ataffanel/775

Conversation

@ataffanel
Copy link
Member

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

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)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

variable name doesn't follow naming style

linkQualitySignal = pyqtSignal(float)

gamepad_device_updated = pyqtSignal(str, str, str)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

unclear grouping using newlines

@stefanthorstenson
Copy link
Contributor

Live demo with @ataffanel proved indented functionality!

Copy link
Member

@enyanil enyanil left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Incorrect input mapping can lead to Crazyflie unindendently taking off when connecting

3 participants