Table of Contents
Host Force Feedback Button-Triggered Condition Force
Produces a condition force effect on a game controller on the host that is triggered by a button.
Library
MATLAB Command Line
Click to copy the following command line to the clipboard. Then paste it in the MATLAB Command Window:
qc_open_library('quarc_library/Devices/Peripherals/Host/Force Feedback Game Controllers/Condition Force Effects')Description
The Host Force Feedback Button-Triggered Condition Force block produces a condition force on the host game controller in response to a button being pressed on the game controller. Condition force effects are closed-loop effects that vary according to the "condition" or state of the device, such as its position, velocity or acceleration. The condition force may take the form of a spring, damper, inertia or friction.
Each condition is based on a different "metric". The spring effect uses position as its metric, so the force increases in proportion to the distance of the axis from a defined neutral point. The damper effect uses velocity as its metric, so the force increases in proportion to the velocity with which the user moves the axis. The inertia effect is based on the metric of acceleration, so the force increases in proportion to the acceleration of the axis. Finally, the friction effect is applied when the axis is moved and depends on the defined friction coefficient. In general, excluding saturation, the resulting force is equal to:
negative coefficient * (metric - (offset - deadband))
when the metric is less than offset - deadband
, and is equal to:
positive coefficient * (metric - (offset + deadband))
when the metric is greater than offset + deadband
.
If one of the offset through dead inputs is not a scalar, but is a vector whose length equals the number of axes for the effect, then the direction is not determined by the Fx, Fy and Fz inputs. Instead, a separate condition force effect is applied to each axis independently, with the elements of the offset through dead input vectors applying to the corresponding axes. The axes are determined by which of the Fx, Fy and Fz inputs are connected. For example, if the Fx and Fz inputs are connected, but not the Fy input, and the offset through dead inputs are 2-vectors, then the first element of each 2-vector is applied to a condition force effect along the X axis, and the second element to a separate condition force effect along the Z axis. If some of the inputs are scalars, but not all, then the scalar value is applied to all the force effect axes as if the value were expanded into a vector of the appropriate length.
The parameters of the block determine the temporal characteristics of the effect, such as the duration and envelope. A Host Force Feedback Game Controller block must be present in the model to configure the game controller.
Limitations
Unused axes
Unused axes should be left unconnected or connected to the
MATLAB Command Line
Click to copy the following command line to the clipboard. Then paste it in the MATLAB Command Window:
doc('Ground')Level of support
Not all force feedback game controllers will support a condition force effect that is triggered by a button. If button-triggered condition force effects are supported, a game controller may not support all the axes or features of this block.
Conditionally-executed subsystems
Force effects are downloaded to the device and implemented by the device itself. Hence, placing this block in a conditionally-executed subsystem does not disable the effect when the subsystem is not being executed. Instead of using a conditionally-executed subsystem, set the magnitude of the force to zero or use a Host Force Feedback Externally-Triggered Condition Force block for this purpose and trigger it using the button states read by the Host Force Feedback Game Controller block.
MATLAB/Simulink R2010a Support
Note that the Host Force Feedback Button-Triggered Condition Force block available in this build of QUARC 2.1 does not currently support MATLAB/Simulink R2010a. Quanser is currently working on a solution to not only have this block work with MATLAB/Simulink R2010a but also greatly improve its overall performance and capabilities.
Input Ports
Fx
The X component of the direction of the applied force. The positive X direction is from left to right. If this axis is unused, connect it to a
MATLAB Command Line
Click to copy the following command line to the clipboard. Then paste it in the MATLAB Command Window:
doc('Ground')Fy
The Y component of the direction of the applied force. The positive Y direction is from back to front. If this axis is unused, connect it to a
MATLAB Command Line
Click to copy the following command line to the clipboard. Then paste it in the MATLAB Command Window:
doc('Ground')Fz
The Z component of the direction of the applied force. The positive Z direction is from up to down. If this axis is unused, connect it to a
MATLAB Command Line
Click to copy the following command line to the clipboard. Then paste it in the MATLAB Command Window:
doc('Ground')offset
The offset by which to bias the metric used to produce the condition effect. For a spring effect, the position at which the spring would be considered at rest is defined by the offset. For a damper, the offset defines the velocity for which the damping force is zero. The offset is not normally used for the inertia or friction effects. See the formulae in the block description above for more details.
+coeff
The proportionality factor that scales the effect with the metric in the positive direction. For the spring effect, it is the spring constant in Hooke's Law. For the damper effect, it is the damping coefficient and for the inertia effect, it is the coefficient applied to acceleration. For the friction effect, it is the coefficient of friction.
For some devices, you can set separate coefficients for the positive and negative direction along the axis associated with the condition. For example, a flight stick controlling a damaged aircraft might move more easily to the right than to the left. If separate coefficients are supported, then this coefficient is applied to the positive direction. Otherwise this coefficient is used for both the positive and negative directions. See the formulae in the block description above for more details.
-coeff
The proportionality factor that scales the effect with the metric in the negative direction. For the spring effect, it is the spring constant in Hooke's Law. For the damper effect, it is the damping coefficient and for the inertia effect, it is the coefficient applied to acceleration. For the friction effect, it is the coefficient of friction.
For some devices, you can set separate coefficients for the positive and negative direction along the axis associated with the condition. For example, a flight stick controlling a damaged aircraft might move more easily to the right than to the left. If separate coefficients are supported, then this coefficient is applied to the negative direction. Otherwise this coefficient is ignored and the +coeff input is used for both the positive and negative directions. See the formulae in the block description above for more details.
+sat
In force feedback, saturation is an expression of the maximum possible force for an effect. For example, suppose a flight stick has a spring condition on the X axis. If the offset is 0 and the coefficient is 1 then the maximum force is exerted when the stick is furthest from the center. But if you define a positive and negative saturation of 0.5 then the force does not increase after the stick has been moved halfway to the right or left. This input is used to specify the saturation in the positive direction. If the device does not support positive and negative saturation limits then this value is applied to both the positive and negative directions. See the formulae in the block description above for more details.
-sat
In force feedback, saturation is an expression of the maximum possible force for an effect. For example, suppose a flight stick has a spring condition on the X axis. If the offset is 0 and the coefficient is 1 then the maximum force is exerted when the stick is furthest from the center. But if you define a positive and negative saturation of 0.5 then the force does not increase after the stick has been moved halfway to the right or left. This input is used to specify the saturation in the negative direction. If the device does not support positive and negative saturation limits then this value is ignored and the +sat input is applied to both the positive and negative directions. See the formulae in the block description above for more details.
dead
The deadband is a zone around the offset of an axis within which the condition is not active. In the case of a spring that is at rest in the middle of an axis, the deadband enlarges this area of rest. See the formulae in the block description above for more details.
Output Ports
This block has no output ports.
Parameters and Dialog Box
Controller name
The identity of the associated Host Force Feedback Game Controller block. The Host Force Feedback Button-Triggered Condition Force block must be associated with a Host Force Feedback Game Controller block.
Effect type (tunable offline)
The type of condition effect to generate. The supported types are spring, damper, inertia and friction.
Effect gain (tunable online)
A normalized gain to apply to the effect. The forces are scaled by this gain before being applied to the device. The gain must be a fraction between 0 and 1 inclusive. This parameter is useful for scaling effects for a different game controller.
Button number (tunable online)
The button which will trigger the effect. Up to 32 buttons are supported on Windows, with buttons numbered from 0 to 31. Button 0 is typically the "fire" button on the game controller.
Trigger repeat interval (tunable online)
The interval in seconds between the end of one playback and the start of the next when the effect is triggered by a button press and the button is held down. Setting this value to -1 prevents repetition.
Envelope attack level (tunable online)
The normalized amplitude (0.0=no force, 1.0=maximum) of the force at the beginning of playback.
Envelope attack time (tunable online)
The amount of time in seconds for the amplitude of the effect to ramp linearly from the attack level to the sustain level. The sustain level is the amplitude of the force specified at the block inputs. This parameter may be zero.
Envelope fade level (tunable online)
The normalized amplitude (0.0=no force, 1.0=maximum) of the force at the end of playback.
Envelope fade time (tunable online)
The amount of time in seconds for the amplitude of the effect to ramp linearly from the sustain level to the fade level. The sustain level is the amplitude of the force specified at the block inputs. This parameter may be zero.
Effect duration (tunable online)
The total duration of the effect in seconds. It should be larger than sum of the envelope's attack and fade times. The difference between the effect duration and the sum of the attack and fade times determines the time for which the sustain level is maintained.
Delay in starting the effect (tunable online)
The time in seconds to delay starting the effect after the trigger button is pressed.
Effect sampling period (tunable online)
The sampling period of the effect in seconds. This parameter determines the sampling period of the effect on the device itself. It is not related to the sample time of this block. It is the period at which the magnitude of the effect is updated by the device. If this value is zero, the default sampling period is used.
Sample time
The sample time of the block. A sample time of 0 indicates that the block will be treated as a continuous time block. A positive sample time indicates that the block is a discrete time block with the given sample time.
A sample time of -1 indicates that the block inherits its sample time from its inputs.
To use the fundamental sampling time of the model, set the sample time to qc_get_step_size, which is a QUARC function that returns the fundamental sampling time of the model.
The default sample time is set to -1
because this block typically inherits its sample time from its inputs.
Targets
Target Name |
Compatible* |
Model Referencing |
Comments |
---|---|---|---|
Yes |
Yes |
||
Yes |
Yes |
||
Yes |
Yes |
||
Yes |
Yes |
||
Yes |
Yes |
||
Yes |
Yes |
||
Yes |
Yes |
||
Yes |
Yes |
||
Yes |
Yes |
||
Yes |
Yes |
||
Yes |
Yes |
||
Yes |
Yes |
||
Yes |
Yes |
||
Yes |
Yes |
Last fully supported in QUARC 2018. |
|
Rapid Simulation (RSIM) Target |
Yes |
Yes |
|
S-Function Target |
No |
N/A |
Old technology. Use model referencing instead. |
Normal simulation |
Yes |
Yes |
See Also
Copyright ©2024 Quanser Inc. This page was generated 2024-10-17. Submit feedback to Quanser about this page.
Link to this page.