Skip to content
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

feat(hyd): Nose wheel steering and separate hand tiller axis #6187

Merged
merged 1 commit into from
Dec 17, 2021

Conversation

crocket63
Copy link
Contributor

@crocket63 crocket63 commented Nov 17, 2021

Fixes #4791 Fixes #5851 Fixes #4947

Summary of Changes

Challenge: Plane rudder to steering link is hard coded in msfs and can't be disabled, thus it is impossible to implement steering tiller handle function properly.

This PR uses a "hack" to properly allow total separation between plane rudder and nose steering. As msfs internally adds rudder action to steering, we just substract expected rudder action by msfs from the steering angle we really request.

A new custom hydraulic steering is added. Its implementation is not affected by the hack used, so only the msfs interface part contains the hacky part, and will be easily removed when issue solved by Asobo.

Known issues caused by the hack:
-Full tiller one way and rudder the opposite way can move the steering even without hydraulic power
-Full rudder action can overcome to some extent our system implementation: you can move a bit the steering even with no hydraulic power, as msfs will turn the wheel even when our internal implementation is not moving at all.

Modifying steering animation so it shows our internal system state will mask those issues and allow for perfect visual behaviour. But it can cause strange plane rotation behaviour when above mentioned issues will be triggered.

Credits to @tracernz for the fixing of broken default steering animation!!!

Features:

  • Tiller axis using Engine 4 Mixture axis binding
  • Tiller can be used with bindings Steering Inc and Steering Dec
  • Optional tiller enabled from EFB options (if off: back to pedals that can turn the nose wheel to +-75°)
  • Hydraulic implementation
  • Integrate hydraulics with pushback ( depressurise system / turns the steering)
  • Actual nose steering limitation versus speed
  • Use our internal real steering position to animate the in game steering
  • Move tiller animation properly with axis input
  • Add Pedal Disconnect tiller button mapped on game input "Toggle Water Rudder"
  • Add Autopilot steering input to BSCU computer

BINDING NOTES (function -> ingame binding):
Tiller axis -> MIXTURE 4 AXIS (-100% to 100%)
Tiller pedal disconnect -> TOGGLE WATER RUDDER
Tiller keyboard + (if no axis used) -> INCREASE STEERING
Tiller keyboard - (if no axis used) -> DECREASE STEERING

Note that all study level details about activation and steering will be missing, let's keep this as simple as possible for a first try.
In further PR, we'll add details such as the nose wheel to be turned in flight +/- 2.5° by BSCU self test and declare a fault if it's not moving.

Screenshots (if necessary)

References

image

Additional context

Discord username (if different from GitHub):

Testing instructions

As this PR makes a huge change on ground behaviour, please give any good or bad feedback you have in mind so we can cross check this with type rated pilots. Taxiing WILL require more attention as the real plane does. Turn the tiller handle slowly to follow wheel steering action will help to anticipate turn in / turn out, as the steering will take time to go back to center.

IMPORTANT NOTE:
Visual animation is linked to our new hydraulic system physical position. In case of max pedal rudder input, MSFS might be able to turn the wheel internally WHATEVER our system implementation state. This means you won't see nose wheel moving but it turns behind the scene in MSFS, which will make the plane acting differently from what the visual nose steering is indicating. Nothing we can do about this until an ASOBO fix.

That said, any strange movement of nose steering indicates an issue in our system implementation and has to be noted and corrected.

The fun begins!! Let's divide testing in 3 parts:

  1. Steering hydraulic system implementation

    • Nose steering can only move if : Yellow pressure available AND at least one engine on AND main landing gear on ground (engine on condition is a check above low oil pressure threshold)
    • When nose steering is deactivated with cockpit switch "Anti Skid / N-W STRG": steering will center ONLY if there's yellow pressure. It will not move from any pilot or autopilot inputs.
    • Movement should look perfectly smooth in any condition
    • When leaving ground, steering shall be centered.
    • When in flight and touchdown steering shall be centered
    • During pushback, steering is not controllable by any input even if there's hydraulic pressure.
    • After pushback, if pressure is available, steering is available again as soon as Ecam memo NW STRG DISC disapears
  2. Legacy mode (EFB settings / Sim options / Tiller setting disabled)

    • Steering is done using rudder pedals as if it was the Tiller handle input.
    • Steering angle versus speed matches reference for tiller input max angle
    • Tiller handle animation moves properly
    • Plane can taxi correctly
    • Plane yaw axis responds correctly on take off with/without crosswind
    • Plane yaw axis responds correctly on landing
    • Autoland rolls out properly in center of the runway even in cross wind
    • Pedal disconnect should not have effect as nose is steered by a virtual tiller in this mode
  3. Realistic Tiller mode (EFB settings / Sim options / Tiller setting enabled)

    • Map an analogue axis to game binding "Engine 4 Mixture Axis"
    • Map two keys on "Steering set Inc" and "Steering set Dec"
    • Steering is done using rudder pedals with a 6.4° max angle.
    • Steering is done using Tiller axis from 0 to 74°
    • Steering can be done using keyboard bindings
    • Steering angle versus speed matches reference for tiller input max angle
    • Steering angle versus speed matches reference for pedals input max angle
    • Tiller handle animation moves properly
    • Plane can taxi correctly
    • Plane yaw axis responds correctly on take off with/without crosswind
    • Plane yaw axis responds correctly on landing
    • Autoland rolls out properly in center of the runway even in cross wind
    • Pedal disconnect button hold should deactivate nose steering from rudder pedals (nose steering doesn't turn -6/+6 degrees anymore)

How to download the PR for QA

Every new commit to this PR will cause a new A32NX artifact to be created, built, and uploaded.

  1. Make sure you are signed in to GitHub
  2. Click on the Checks tab on the PR
  3. On the left side, click on the bottom PR tab
  4. Click on the A32NX download link at the bottom of the page

@crocket63 crocket63 changed the title feat(hyd) : Nose wheel steering and separate hand tiller axis feat(hyd): Nose wheel steering and separate hand tiller axis Nov 17, 2021
@aguther
Copy link
Contributor

aguther commented Nov 17, 2021

This PR will require a lot of testing and probably tuning of the ROLLOUT for Autoland.

@crocket63
Copy link
Contributor Author

crocket63 commented Nov 17, 2021

This PR will require a lot of testing and probably tuning of the ROLLOUT for Autoland.

Oh yeah tests and more tests on this one :s We'll see if plane is usable as a start though....

I guess right now you only rely on rudder output for rudder and nose steering? We can imagine having a separate output from autoland just for steering that can kicks in at lower speeds and if rudder alone can't keep the center?

@aguther
Copy link
Contributor

aguther commented Nov 17, 2021

This PR will require a lot of testing and probably tuning of the ROLLOUT for Autoland.

Oh yeah tests and more tests on this one :s We'll see if plane is usable as a start though....

I guess right now you only rely on rudder output for rudder and nose steering? We can imagine having a separate output from autoland just for steering that can kicks in at lower speeds and if rudder alone can't keep the center?

We will see down the road, yes. I just wanted to highlight it for the moment so it's not forgotten.

@crocket63 crocket63 marked this pull request as ready for review November 18, 2021 14:16
@crocket63 crocket63 marked this pull request as draft November 18, 2021 14:16
@aguther
Copy link
Contributor

aguther commented Nov 21, 2021

I have two questions:

  • Is there already an LVAR that I can use for the AP to feed an input for the nosewheel steering?
  • Do I need to use the rudder differently or does it only move the gear differently depending on speed?
  • Where do I find the speed dependent curve?

I need to see how my spare time is, but then I will do changes to the AP so that we do not need to retune everything (I will interpret the output of the AP and split the signal depending on speed into rudder and nosewheel).

@crocket63
Copy link
Contributor Author

I think the best way to do this would be for you to create a new LVAR that the steering system just adds to the requested position.

I think it all works pretty well in "realistic mode", so you can do whatever you need with rudder like before, and just adding up to 6 degrees in your AP demand will turn the steering accordingly.

Main issue right now is I totally fail to make it work correctly in "replicate the old sim behaviour"..... So that's a main problem as probably a lot of people just don't want a tiller.
Problem is I can't just desactivate the hack as it only works thanks to modified flight_model.cfg ....

So until we can find a way to make the two modes work correctly don't spend too much time on this...

@crocket63 crocket63 marked this pull request as ready for review November 24, 2021 16:10
@crocket63 crocket63 marked this pull request as draft November 24, 2021 16:11
@crocket63 crocket63 marked this pull request as ready for review November 24, 2021 20:00
@crocket63 crocket63 marked this pull request as draft November 24, 2021 20:00
@crocket63 crocket63 marked this pull request as ready for review November 24, 2021 22:52
@crocket63 crocket63 marked this pull request as draft November 24, 2021 22:53
@crocket63 crocket63 marked this pull request as ready for review November 25, 2021 16:26
@crocket63 crocket63 marked this pull request as draft November 25, 2021 16:27
@crocket63 crocket63 marked this pull request as ready for review November 25, 2021 19:06
@crocket63 crocket63 marked this pull request as draft November 25, 2021 19:07
@crocket63
Copy link
Contributor Author

Most of functional stuff planned is in and usable in last build artifact.

If possible I'd need as many tests as possible and feedback about how the new handling feels, as this is pretty much a game changer compared with previous taxi behaviour.

Remaining is a lot of code cleaning on the lib.rs low level hacks, and also tests on the AP roll out behaviour to see if we need a mandatory AP change or if it can wait for a dedicated PR.

@crocket63 crocket63 marked this pull request as ready for review November 26, 2021 21:14
@crocket63 crocket63 marked this pull request as draft November 26, 2021 21:14
@crocket63 crocket63 marked this pull request as ready for review December 1, 2021 17:51
@crocket63 crocket63 marked this pull request as draft December 2, 2021 07:33
@crocket63 crocket63 marked this pull request as ready for review December 2, 2021 11:46
@FlyingCarpet7
Copy link

Tried this PR and it’s great fun to taxi around with a tiller axis!
I use a Thrustmaster T16000 joystick and throttles. Rudder by twisting joystick and for tiller a nicely located axis on the throttle.
First I had problems with the aircraft steering the opposite direction when using rudder. Turns out I have to disable auto rudder from assistance menu.
Rudder input gave just the right amount of nosewheel steering at taxi speeds and felt nice/normal during acceleration.
Disabled tiller function as well and taxing/flying worked as well using only rudder inputs.
Excellent work on this PR!

@aguther
Copy link
Contributor

aguther commented Dec 17, 2021

I‘m using the feature for a while now and it works really good. For me it‘s ready to go.

@frankkopp
Copy link
Member

Tested during writing the docs page.
Feedback/issues have been implemented/fixed and I consider this as good to go.

We should have at least 1 or 2 full tests though.

@MacMinnS
Copy link

Quality Assurance Trainee Report

Discord : Systemfalter# 0698
Object of testing: 6187
Tier of Testing : 1/2
Date : 17-12-2021

Testing Process:
I've completed multiple full flights, cold and dark, turnaround, etc with this PR as well as with it merged into experimental. This has been working great, I have it bound to a PS4 controller axis and it's been great! No major issues, def takes some getting used to and I've overcorrected a few times, but I'm happy with how this is working.

Negatives:
N/A

Testing Results:
Passed

Conclusions:
I'd say this is good to go. Documentation looks great as well!

@jcalor
Copy link

jcalor commented Dec 17, 2021

Quality Assurance Tester Report

Discord : Calo#6816
Object of testing: #6187
Tier of Testing : 1
Date : 17/12/2021

Testing Process:

PART 1 - PASSED

  • Nose steering can only move if : Yellow pressure available AND at least one engine on AND main landing gear on ground (engine on condition is a check above low oil pressure threshold) - checked
  • When nose steering is deactivated with cockpit switch "Anti Skid / N-W STRG": steering will center ONLY if there's yellow pressure. It will not move from any pilot or autopilot inputs. - checked
  • Movement should look perfectly smooth in any condition - checked
  • When leaving ground, steering shall be centered. - checked
  • When in flight and touchdown steering shall be centered - checked
  • During pushback, steering is not controllable by any input even if there's hydraulic pressure. - checked
  • After pushback, if pressure is available, steering is available again as soon as Ecam memo NW STRG DISC disapears - checked

PART 2 - PARTIALLY? PASSED

  • Steering is done using rudder pedals as if it was the Tiller handle input. - checked
  • Steering angle versus speed matches reference for tiller input max angle - checked (enjoyed some airport drifting 😆 )
  • Tiller handle animation moves properly - checked
  • Plane can taxi correctly - checked
  • Plane yaw axis responds correctly on take off with/without crosswind - checked
  • Plane yaw axis responds correctly on landing - checked
  • Pedal disconnect should not have effect as nose is steered by a virtual tiller in this mode - pedal disconnect works for me. When I press and I maintain pressed assigned button, nose wheel does not move. Is this how should work on this mode?

PART 3

I´ve not been able to test this part since I have no tiller axis and it would be very difficult to taxi and made the required tests with keyboard buttons.

Negatives: Pedal disconnect button works with Tiller setting disabled??

Testing Results: Passed

Conclusions: Super cool feature, FBW really need it. Everything works as intended, but I only doubt about that small thing mentioned above.

@frankkopp
Copy link
Member

Quality Assurance Tester Report

Discord: Cdr_Maverick#6475
Object of testing: #6187
Tier of Testing: 2
Date: 17.12.2021

Testing Process:
Full flight EDDM-LOWI
Mapping of tiller to Joystick slider axis (no rudders right now) and rudder to twist on joystick.
Disconnect button mapped to Joystick button, also nose wheel turn
See protocol below.

Negatives:
- Legacy: Pedal disconnect should not have effect as nose is steered by a virtual tiller in this mode - NOT OK

Testing Results: Passed with minor issue - but in my opinion it's ok like this

Conclusions: LGTM

Protocol:

  1. Steering hydraulic system implementation

    • Nose steering can only move if : Yellow pressure available AND at least one engine on AND main landing gear on ground (engine on condition is a check above low oil pressure threshold)
      • legacy OK, but some residual movement when yellow press and PTU is turned off
      • legacy no engine - OK
      • real: OK, but some residual movement when yellow press and PTU is turned off
      • real no engine:
    • When nose steering is deactivated with cockpit switch "Anti Skid / N-W STRG": steering will center ONLY if there's yellow pressure. It will not move from any pilot or autopilot inputs.
      • legacy - OK
      • real: OK
    • Movement should look perfectly smooth in any condition
      • legacy OK
      • real: OK
    • When leaving ground, steering shall be centered.
      • legacy OK
      • real: OK
    • When in flight and touchdown steering shall be centered
      • legacy OK
        • real: OK
    • During pushback, steering is not controllable by any input even if there's hydraulic pressure.
      • legacy OK
      • real: OK
    • After pushback, if pressure is available, steering is available again as soon as Ecam memo NW STRG DISC disapears
      • legacy OK
      • real: OK
  2. Legacy mode (EFB settings / Sim options / Tiller setting disabled)

    • Steering is done using rudder pedals as if it was the Tiller handle input. - OK
    • Steering angle versus speed matches reference for tiller input max angle - OK (visually)
    • Tiller handle animation moves properly - OK
    • Plane can taxi correctly - OK
    • Plane yaw axis responds correctly on take off with/without crosswind - OK
    • Plane yaw axis responds correctly on landing - OK
    • Autoland rolls out properly in center of the runway even in cross wind - OK (only one test)
    • Pedal disconnect should not have effect as nose is steered by a virtual tiller in this mode - NOT OK
  3. Realistic Tiller mode (EFB settings / Sim options / Tiller setting enabled)

    • Map an analogue axis to game binding "Engine 4 Mixture Axis" - OK
    • Map two keys on "Steering set Inc" and "Steering set Dec" - OK
    • Steering is done using rudder pedals with a 6.4° max angle - OK
    • Steering is done using Tiller axis from 0 to 74° - OK
    • Steering can be done using keyboard bindings - OK
    • Steering angle versus speed matches reference for tiller input max angle - OK (visually)
    • Steering angle versus speed matches reference for pedals input max angle - OK (visually)
    • Tiller handle animation moves properly - OK
    • Plane can taxi correctly - OK
    • Plane yaw axis responds correctly on take off with/without crosswind - OK
    • Plane yaw axis responds correctly on landing - OK
    • Autoland rolls out properly in center of the runway even in cross wind- OK
    • Pedal disconnect button hold should deactivate nose steering from rudder pedals (nose steering doesn't turn -6/+6 degrees anymore) - OK

@aguther aguther merged commit 173105c into flybywiresim:master Dec 17, 2021
igor8518 added a commit to igor8518/a32nx that referenced this pull request Dec 18, 2021
igor8518 added a commit to igor8518/a32nx that referenced this pull request Dec 18, 2021
igor8518 added a commit to igor8518/a32nx that referenced this pull request Dec 20, 2021
igor8518 added a commit to igor8518/a32nx that referenced this pull request Dec 26, 2021
igor8518 added a commit to igor8518/a32nx that referenced this pull request Jan 14, 2022
igor8518 added a commit to igor8518/a32nx that referenced this pull request Jan 15, 2022
igor8518 added a commit to igor8518/a32nx that referenced this pull request Jan 16, 2022
igor8518 added a commit to igor8518/a32nx that referenced this pull request Jan 17, 2022
igor8518 added a commit to igor8518/a32nx that referenced this pull request Jan 19, 2022
igor8518 added a commit to igor8518/a32nx that referenced this pull request Jan 20, 2022
igor8518 added a commit to igor8518/a32nx that referenced this pull request Jan 21, 2022
igor8518 added a commit to igor8518/a32nx that referenced this pull request Jan 21, 2022
igor8518 added a commit to igor8518/a32nx that referenced this pull request Jan 21, 2022
…lybywiresim#6187)"

This reverts commit 26af4f4.

fix systems

Co-Authored-By: Erick Torres <30361843+ErickSharp@users.noreply.github.com>
igor8518 added a commit to igor8518/a32nx that referenced this pull request Jan 22, 2022
@2hwk 2hwk added this to the v0.8.0 milestone Apr 29, 2022
@crocket63 crocket63 deleted the feat_nose_steering branch August 21, 2022 09:01
This pull request was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet