Stereo Sensor Coordinate Configuration File

Download Sample stereo_sensor_coordinate.ini

The stereo sensor coordinate configuration file (stereo_sensor_coordinate.ini) defines how the stereo sensor is oriented in the world frame.

A default version of this file ships encrypted with the executable in .deb packages. To customize it, place your modified copy in a config directory and pass it with -c /path/to/config/. If -c is not specified, the default location that the config file should be placed is /usr/lib/nodar/config.

# Defines how the stereo sensor is oriented in the world frame.
# Using zero rotation would still work for most parts of the Hammerhead pipeline.
# NOTE: The euler_x_deg field replaces the previous bar_pitch parameter. If you keep y and z angles at 0,
# the x angle will be the bar_pitch regardless of the angle applying order.

meters_above_ground = 0

# The world axes are defined as
#   - z-axis: parallel to the ground
#   - y-axis: pointing into the ground, to the center of Earth.
#   - x-axis: Usually to the right. It follows the right-hand rule.
# We specify the stereo sensor orientation by specifying the orientation of the left camera.
# The left camera axes are defined as OpenCV image axes with z-axis pointing into the monitor screen.
# Please provide a rotation that rotates the left camera axes to the world axes. For example, if the bar
# is tilted toward the ground, away from the horizon, then euler_x_deg should be positive.
euler_x_deg = 0
euler_y_deg = 0
euler_z_deg = 0
# The order of applying the angles. Currently supported values are "xyz" and "zyx".
order = xyz

# The IP of the source providing stereo sensor coordinates.
# If empty, then we do not listen for a source to provide the coordinates
source_ip =

# The sensor coordinates are always initialized with the aforementioned parameters.
# However, if there is a source publishing coordinate updates,
# then you also need to choose how to handle these values.
# Specifically, you need to choose one of the following blocking modes:
#
# never:  Start with the initial params. Never block main to wait for updates, but if a change is received, use it.
#         Don't use this if you are not confident in the choice of initial params above.
# first:  Same as `never`, but wait for an initial set of params to start the main thread.
#         You can/should use this if you are not confident in the choice of initial params above,
#         and if you don't expect frequent coordinate updates
# always: Before getting the next frame, make sure that we have received a parameter update.
#         If we haven't received an update, then block until we get one.
#         Use this if you expect frequent updates. Note this if updates come slowly, then you are effectively
#         throttling hammerhead main
source_blocking = first

Mounting Height

meters_above_ground: Height of the stereo sensor above the ground in meters.

World Coordinate System

The world axes are defined as:

  • z-axis: parallel to the ground, pointing forward
  • y-axis: pointing into the ground, toward the center of the Earth
  • x-axis: to the right, following the right-hand rule

The left camera axes follow the OpenCV image convention.

Euler Angles

The rotation rotates the left camera axes to the world axes.

euler_x_deg: Rotation around the x-axis in degrees. If the bar is tilted toward the ground (away from the horizon), this value should be positive.

euler_y_deg: Rotation around the y-axis in degrees.

euler_z_deg: Rotation around the z-axis in degrees.

order: The order of applying the Euler angles. Supported values are xyz and zyx.

External Coordinate Source

source_ip: IP address of a source providing stereo sensor coordinate updates. Leave empty to disable.

source_blocking: Controls how coordinate updates from the external source are handled:

  • never: Start with the initial parameters. Never block to wait for updates, but use them if received. Only use this if you are confident in the initial parameters.
  • first: Wait for an initial set of parameters before starting, then never block again. Use this if you are not confident in the initial parameters and don't expect frequent updates.
  • always: Block before each frame until a coordinate update is received. Use this if you expect frequent updates. Note that slow updates will throttle Hammerhead.