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
.debpackages. To customize it, place your modified copy in a config directory and pass it with-c /path/to/config/. If-cis 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.