Back

NullForceFeedback

sofa::component::haptics::NullForceFeedback
ForceFeedback
Doc (from source)

Null force feedback for haptic feedback device.

Abstract (AI generated)

The `NullForceFeedback` component provides no force feedback for haptic devices by ensuring that all computed forces are identically zero.

Metadata
module
Sofa.Component.Haptics
namespace
sofa::component::haptics
include
sofa/component/haptics/NullForceFeedback.h
inherits
  • ForceFeedback
description

The NullForceFeedback component in the SOFA framework is designed to provide no force feedback for haptic devices. It inherits from the ForceFeedback class and implements methods required by its base class, namely init, computeForce, and computeWrench. These methods are overridden to ensure that no forces or wrenches are computed, effectively providing a null or zero-force response.

Mathematical and Physical Description

Governing Equations and Operators

  • Mass Matrix (M): Not applicable as there is no force computation involved.
  • Stiffness Matrix (K): Not applicable since the component does not contribute to any stiffness terms.
  • Internal Force (oldsymbol{f}_{int}): The internal forces computed by this component are identically zero, i.e.,

egin{equation}
oldsymbol{f}_{int} = \mathbf{0}

\end{equation}

  • Residual (R): The residual for the nonlinear solve is also identically zero, i.e.,

egin{equation}
R(x) = M\frac{x_{n+1}-x_n}{\Delta t} - \Delta t f_{int}(x_{n+1}) - \Delta t f_{ext} = M\frac{x_{n+1}-x_n}{\Delta t} - \Delta t (0)

\end{equation}

Constitutive or Kinematic Laws Involved

  • Strain Measures: Not applicable as the component does not compute any strains.
  • Stress Tensors: Not applicable since no stress tensors are computed.
  • Hyperelastic Potentials: Not applicable.
  • Damping Models: No damping models are involved.
  • Constraint Jacobians: Not applicable since there are no constraints enforced by this component.

Role in the Global FEM Pipeline

  • Assembly Phase: The NullForceFeedback does not contribute to any assembly of global matrices or vectors; it simply provides a zero-force response.
  • Time Integration: No forces are computed, so it has no impact on the time integration scheme.
  • Nonlinear Solve: Since internal forces and residuals are zero, this component does not affect the nonlinear solve process.
  • Linear Solve: Not applicable as there is no linear system to solve for this component.

Numerical Methods or Discretization Choices

The NullForceFeedback component does not involve any numerical methods or discretization choices. It merely ensures that all computed forces and wrenches are zero, which effectively disables haptic feedback.

Variational / Lagrangian Mechanics Framework

  • Variational Formulation: Not applicable as the component does not contribute to any variational formulation.
  • Lagrangian Mechanics: The NullForceFeedback does not affect the Lagrangian mechanics of the system since it only provides a zero-force response and does not influence the kinetic or potential energy terms.

Summary

The NullForceFeedback component serves as a placeholder for scenarios where haptic interactions are disabled. It ensures that no forces are computed, effectively providing a null force feedback to any haptic device integrated into the simulation pipeline.

Methods
void init () virtual
void computeForce (SReal x, SReal y, SReal z, SReal u, SReal v, SReal w, SReal q, SReal & fx, SReal & fy, SReal & fz) virtual
void computeWrench (const sofa::type::Transform<SReal> & world_H_tool, const sofa::type::SpatialVector<SReal> & V_tool_world, sofa::type::SpatialVector<SReal> & W_tool_world) virtual
{
  "name": "NullForceFeedback",
  "namespace": "sofa::component::haptics",
  "module": "Sofa.Component.Haptics",
  "include": "sofa/component/haptics/NullForceFeedback.h",
  "doc": "Null force feedback for haptic feedback device.",
  "inherits": [
    "ForceFeedback"
  ],
  "templates": [],
  "data_fields": [],
  "links": [],
  "methods": [
    {
      "name": "init",
      "return_type": "void",
      "params": [],
      "is_virtual": true,
      "is_pure_virtual": false,
      "is_static": false,
      "access": "public"
    },
    {
      "name": "computeForce",
      "return_type": "void",
      "params": [
        {
          "name": "x",
          "type": "SReal"
        },
        {
          "name": "y",
          "type": "SReal"
        },
        {
          "name": "z",
          "type": "SReal"
        },
        {
          "name": "u",
          "type": "SReal"
        },
        {
          "name": "v",
          "type": "SReal"
        },
        {
          "name": "w",
          "type": "SReal"
        },
        {
          "name": "q",
          "type": "SReal"
        },
        {
          "name": "fx",
          "type": "SReal &"
        },
        {
          "name": "fy",
          "type": "SReal &"
        },
        {
          "name": "fz",
          "type": "SReal &"
        }
      ],
      "is_virtual": true,
      "is_pure_virtual": false,
      "is_static": false,
      "access": "public"
    },
    {
      "name": "computeWrench",
      "return_type": "void",
      "params": [
        {
          "name": "world_H_tool",
          "type": "const sofa::type::Transform<SReal> &"
        },
        {
          "name": "V_tool_world",
          "type": "const sofa::type::SpatialVector<SReal> &"
        },
        {
          "name": "W_tool_world",
          "type": "sofa::type::SpatialVector<SReal> &"
        }
      ],
      "is_virtual": true,
      "is_pure_virtual": false,
      "is_static": false,
      "access": "public"
    }
  ],
  "description": "The `NullForceFeedback` component in the SOFA framework is designed to provide no force feedback for haptic devices. It inherits from the `ForceFeedback` class and implements methods required by its base class, namely `init`, `computeForce`, and `computeWrench`. These methods are overridden to ensure that no forces or wrenches are computed, effectively providing a null or zero-force response.\n\nIn SOFA's haptics module, this component interacts with other components through the force feedback pipeline. The `NullForceFeedback` can be used in scenarios where haptic interactions are disabled or not required, allowing the simulation to run without generating any haptic feedback forces.\n\nThe component has no data fields and does not require any specific parameters for initialization. Its primary role is to serve as a placeholder or default option when integrating with devices that do not need force feedback.",
  "maths": "The `NullForceFeedback` component in the SOFA framework is designed to provide no force feedback for haptic devices. It inherits from the `ForceFeedback` class and implements methods required by its base class, namely `init`, `computeForce`, and `computeWrench`. These methods are overridden to ensure that no forces or wrenches are computed, effectively providing a null or zero-force response.\n\n### Mathematical and Physical Description\n\n#### Governing Equations and Operators\n- **Mass Matrix (M)**: Not applicable as there is no force computation involved.\n- **Stiffness Matrix (K)**: Not applicable since the component does not contribute to any stiffness terms.\n- **Internal Force (\boldsymbol{f}_{int})**: The internal forces computed by this component are identically zero, i.e.,\n  \n  \begin{equation}\n    \boldsymbol{f}_{int} = \\mathbf{0}\n  \n  \\end{equation}\n\n- **Residual (R)**: The residual for the nonlinear solve is also identically zero, i.e.,\n  \n  \begin{equation}\n    R(x) = M\\frac{x_{n+1}-x_n}{\\Delta t} - \\Delta t f_{int}(x_{n+1}) - \\Delta t f_{ext} = M\\frac{x_{n+1}-x_n}{\\Delta t} - \\Delta t (0)\n  \n  \\end{equation}\n\n#### Constitutive or Kinematic Laws Involved\n- **Strain Measures**: Not applicable as the component does not compute any strains.\n- **Stress Tensors**: Not applicable since no stress tensors are computed.\n- **Hyperelastic Potentials**: Not applicable.\n- **Damping Models**: No damping models are involved.\n- **Constraint Jacobians**: Not applicable since there are no constraints enforced by this component.\n\n#### Role in the Global FEM Pipeline\n- **Assembly Phase**: The `NullForceFeedback` does not contribute to any assembly of global matrices or vectors; it simply provides a zero-force response.\n- **Time Integration**: No forces are computed, so it has no impact on the time integration scheme.\n- **Nonlinear Solve**: Since internal forces and residuals are zero, this component does not affect the nonlinear solve process.\n- **Linear Solve**: Not applicable as there is no linear system to solve for this component.\n\n#### Numerical Methods or Discretization Choices\nThe `NullForceFeedback` component does not involve any numerical methods or discretization choices. It merely ensures that all computed forces and wrenches are zero, which effectively disables haptic feedback.\n\n#### Variational / Lagrangian Mechanics Framework\n- **Variational Formulation**: Not applicable as the component does not contribute to any variational formulation.\n- **Lagrangian Mechanics**: The `NullForceFeedback` does not affect the Lagrangian mechanics of the system since it only provides a zero-force response and does not influence the kinetic or potential energy terms.\n\n### Summary\nThe `NullForceFeedback` component serves as a placeholder for scenarios where haptic interactions are disabled. It ensures that no forces are computed, effectively providing a null force feedback to any haptic device integrated into the simulation pipeline.",
  "abstract": "The `NullForceFeedback` component provides no force feedback for haptic devices by ensuring that all computed forces are identically zero.",
  "sheet": "# NullForceFeedback\n\n## Overview\n\nThe `NullForceFeedback` component is designed to provide a null or zero-force response in the SOFA framework's haptics module. It inherits from the `ForceFeedback` class and overrides methods such as `computeForce` and `computeWrench` to ensure no forces are computed, effectively disabling haptic feedback.\n\n## Mathematical Model\n\nThe internal forces computed by this component are identically zero:\n\n\\[ \\boldsymbol{f}_{int} = \\mathbf{0} \\]\n\nThis results in a null residual for the nonlinear solve:\n\n\\[ R(x) = M\\frac{x_{n+1}-x_n}{\\Delta t} - \\Delta t f_{int}(x_{n+1}) - \\Delta t f_{ext} = M\\frac{x_{n+1}-x_n}{\\Delta t} - \\Delta t (0) \\]\n\n## Practical Notes\n\nThe `NullForceFeedback` component is useful for scenarios where haptic interactions are disabled or not required. It ensures that the simulation runs without generating any haptic feedback forces, making it a placeholder or default option when integrating with devices that do not need force feedback."
}