Skip to content

Sensors and accelerations

FreeDyn writes the accelerations it computes. HHT solves for the accelerations of every body in every step, so the result channels Rddot_* (center of mass) and omegadot_* (angular) of the bodies are exact values of the solution, not difference quotients of the velocities: they do not depend on output_step and keep their peaks. (The viewer's der() differentiates the output samples; with output_step: 0.005 it smooths a bump's acceleration peaks by a few percent.)

Sensors

A sensor is a point on a body with a frame fixed in it: a seat, the driver's head, an inertial measurement unit, the reference point of a motion platform. It has no effect on the simulation.

sensors:
  head:
    body1: chassis
    point: [1.2, 0.35, 1.1]          # global, at t = 0
    # orientation: [1, 0, 0, 0]      # the sensor axes: global at t = 0, then fixed in body1

Channels, in the sensor frame (except the position):

channel
position_x/y/z global position of the point [m]
velocity_x/y/z velocity of the point [m/s]
acceleration_x/y/z acceleration of the point [m/s²]
specific_force_x/y/z acceleration minus gravity, a − g [m/s²]: what an accelerometer measures, +9.81 upwards at rest
angular_velocity_x/y/z angular velocity of the body [rad/s]
angular_acceleration_x/y/z angular acceleration of the body [rad/s²]

The acceleration of the point is a = R̈ + ω̇ × r + ω × (ω × r), with r from the center of mass to the point; all quantities are taken from the solved accelerations.

The sensor axes are the global axes at t = 0 by default, then they turn with the body: in a vehicle model built with x forward and z up, specific_force_x is the longitudinal, specific_force_y the lateral acceleration felt in the car. orientation (Euler parameters, global at t = 0) turns the sensor frame, e.g. to the axes of a real sensor or a motion platform. The axes of the body itself are its principal axes of inertia, usually not those you want.

Motion cueing

The inputs of a motion cueing algorithm are the specific force and the angular velocity (and acceleration) at the reference point of the driver, in the vehicle frame: one sensor gives all of them, at every output step (output_step equal to step gives every step).

Accuracy

The accelerations satisfy the equations of motion at the end of each step. The constraints of the joints are kept on the positions; on the accelerations they hold to the integration error: a sensor on the axis of a pendulum's revolute joint measures a few µm/s² instead of zero, at accelerations of 20 m/s² in the bob. In the legacy profile (.fds models, the original HHT form) the accelerations satisfy the equations of motion in the α-weighted form of that method.

All keys

key value
id id
body1 (required) string The body that carries the sensor.
point [x, y, z] or a point name Position, global, at t = 0. Default the center of mass of body1.
orientation list of 4 or a frame name Axes of the sensor frame as Euler parameters, global at t = 0, then fixed in body1. Default [1, 0, 0, 0]: the global axes at t = 0 (e.g. x forward, z up in a vehicle model).