Face

The package quori_face accepts an image and displays it on the Quori face. The image is treated as containing radial pixels along the polar and azimuthal axes of the spherical face.

Calibration

To calibrate, run roslaunch quori_face calibrate.launch. This will spawn quori_face_node with a grid image and a dynamic_reconfigure user interface for adjusting the calibration. At exit, the new calibration will be written to quori_face/config/params.yaml.

Usage

To use, run roslaunch quori_face quori_face.launch.

Parameters

Transform Parameters

These parameter names directly correspond to the paper "LOW COST OPTICAL MECHANICAL SYSTEM FOR HUMAN ROBOT INTERACTION" (IMECE2018-87885) on the face projection transform algorithm.

  • ~transform/R: double (default: 4.0) - Radius of the spherical head.
  • ~transform/r_m: double (default: 1.5) - Radius of the mirror.
  • ~transform/r_o: double (default: 2.0) - Radius of the base circle at the bottom of the head.
  • ~transform/h: double (default: 1.0) - Distance from the center of projection to the bottom of the head.
  • ~transform/L: double (default: 8.4476252817457738) - The distance between the projection center and the intersection of the projection axis and the sphere.
  • ~transform/epsilon: double (default: 0.059068559067049511) - The angle between the axis of roation of the circle and the intersection of the projection axis and the sphere.
  • ~transform/delta/x: double (default: -2.9) - X-axis projector installation error.
  • ~transform/delta/y: double (default: -1.6) - Y-axis projector installation error.
  • ~transform/screen_size/x: uint32 (default: 1920) - Width of the projector screen in pixels.
  • ~transform/screen_size/y: uint32 (default: 1080) - Height of the projector screen in pixels.

Lookup Table Parameters

quori_face aggressively caches the expensive transform algorithm into a lookup table.

  • ~lookup_table_resolution/x: uint32 (default: 2048) - Width of the transform lookup table in pixels.
  • ~lookup_table_resolution/y: uint32 (default: 2048) - Height of the transform lookup table in pixels.

Image Parameters

The input image must be of fixed width and height during the execution of quori_face_node. If the received image is of a different size, it is resized before being transform. For optimal performance, this value should match the expected input image resolution.

  • ~image_resolution/x: uint32 (default: 1280) - Expected width of received images for display.
  • ~image_resolution/y: uint32 (default: 720) - Expected height of received images for display.

Spherical Mapping Parameters

Quori may optionally be configured with a helmet. We can adjust the spherical region mapped to the input image by adjusting the min and max coordinates.

  • ~center/theta: double (default: 1280) - Central polar value (that corresponds to the center of the image), in radians, to map.
  • ~center/psi: double (default: 720) - Central azimuthal value (that corresponds to the center of the image), in radians, to map.
  • ~min/theta: double (default: -PI * 0.45) - Minimum polar value, in radians, to map.
  • ~min/psi: double (default: -PI * 0.5) - Minimum azimuthal value, in radians, to map.
  • ~max/theta: double (default: PI * 0.45) - Maximum polar value, in radians, to map.
  • ~max/psi: double (default: PI * 0.5) - Maximum azimuthal value, in radians, to map.

Dynamic Reconfigure Options

quori_face allows certain ROS parameters to be adjusted on-the-fly for easy calibration.

  • dx: double - The ~transform/delta/x value (see above).
  • dy: double - The ~transform/delta/y value (see above).
  • center_theta: double - The ~center/theta value (see above).
  • center_psi: double - The ~center/psi value (see above).
  • min_theta: double - The ~min/theta value (see above).
  • min_psi: double - The ~min/psi value (see above).
  • max_theta: double - The ~max/theta value (see above).
  • max_psi: double - The ~max/psi value (see above).

Subscribed Topics

  • image: sensor_msgs/Image - The image to display on the face. The image is treated as being composed of radial pixels. For optimal performance, the image should match the configured ~image_resolution and be BGR8 encoded.