3D Camera

There are different kinds of cameras to obtain the depth, categorized according to the used technique:

  • Depth sensor: There are two elements which must always be present for depth sense: An IR (Infra-Red) projector, and an IR camera. Some depth sensors have an RGB (Red Green Blue) camera, some don't. The IR projector projects a pattern of IR light which falls on objects around it like a sea of dots. We can't see the dots because the light is projected in the Infra-Red color range. But the IR camera can see the dots. An IR camera is essentially the same as a regular RGB camera except that the images it captures are in the Infra-Red color range. So nothing too fancy going on there, still no actual depth sense. The camera sends it's video feed of this distorted dot pattern into the depth sensor's processor, and the processor works out depth from the displacement of the dots. On near objects the pattern is spread out, on far objects the pattern is dense.

  • Stereo camera: A type of 3d camera with two or more lenses with a separate image sensor or film frame for each lens. This allows the camera to simulate human binocular vision, and therefore gives it the ability to capture three-dimensional images.

  • ToF camera: It is a range imaging camera system that resolves distance based on the known speed of light, measuring the time-of-flight of a light signal between the camera and the subject for each point of the image. The time-of-flight camera is a class of scannerless LIDAR, in which the entire scene is captured with each laser or light pulse, as opposed to point-by-point with a laser beam such as in scanning LIDAR systems.
HRIM defines a 3D camera as
An optical instrument that provides a 3D reading about the environment.

So, apart from the common requirements (ID, Status, Power, Specs and Simulation, detailed in HRIM component model section), all 3D cameras will contain a topic referring to publishing a depth information of the environment.

As there is a lot of technological difference between the three types defined above, the information has been divided with the aim of making the section more understandable. The first table is common for all, however the rest collect the specific information that each type should include.

HRIM component model: 3DCamera sensor
URI XML MODEL ABSTRACTION CLASS
M/O
SHORT DESCRIPTION
/hrim_sensor_3dcamera_<instance_id>/id generic/id.xml topic
(Pub)
M Component identification.
/hrim_sensor_3dcamera_<instance_id>/status generic/status.xml topic
(Pub)
M How the module is working.
/hrim_sensor_3dcamera_<instance_id>/power generic/power.xml topic
(Pub)
M Describes the power supply type and give the information about the module power consumption.
/hrim_sensor_3dcamera_<instance_id>/specs_comm generic/specs_comm.xml topic
(Pub)
M Published the capabilities in term of communicaction that the component offers.
/hrim_sensor_3dcamera_<instance_id>/state_comm generic/state_comm.xml topic
(Pub)
M Published the resources that the component is using at the moment.
/hrim_sensor_3dcamera_<instance_id>/module_3d generic/module_3d.xml topic
(Pub)
M Ask for the 3D model of the HRIM component.
/hrim_sensor_3dcamera_<instance_id>/module_urdf generic/module_urdf.xml topic
(Pub)
M Ask for the information of the HRIM component's 3D model.
/hrim_sensor_3dcamera_<instance_id>/specs sensor/3dcamera/topics/specsDepth.xml
sensor/3dcamera/topics/specsStereo.xml
sensor/3dcamera/topics/specsTof.xml
topic
(Pub)
M Device features. Choose one depending on device type.
/hrim_sensor_3dcamera_<instance_id>/point_cloud sensor/3dcamera/topics/pointCloud.xml topic
(Pub)
M Environment point cloud.
/hrim_sensor_3dcamera_<instance_id>/audio_raw sensor/3dcamera/topics/audio.xml topic
(Pub)
O Integrated microphone.
/hrim_sensor_gps_<instance_id>/reconfiguration sensor/gps/topics/reconfiguration.xml topic
(Pub)
O Dynamic reconfiguration of H-ROS systems. The integration of an IMU sensor is needed.
Parameters
PARAMETER NAME DATA TYPE UNIT CLASS
M/O
SHORT DESCRIPTION
frame_id string M Sets the TF frame from which the 3D camera is publishing.
width int px M Resolution: width (width x height)
height int px M Resolution: height (width x height)
frame_rate int fps M Refresh rate
image_format string M Possible values are: ”rgb8”, ”rgba8”, ”rgb16”, ”rgba16”, ”bgr8”, ”bgra8”, ”bgr16”, ”bgra16”, ”mono8”, ”mono16”, ”bayerrggb8”, ”bayerbggr8”, ”bayergbrg8”, ”bayergrbg8”, ”bayerrggb16”, ”bayerbggr16”, ”bayergbrg16”, ”bayergrbg16”.:
frecuency_rate int Hz/s O Related to audio_raw topic
Audio sampling frecuency.
NOTE: Mandatory if audio_raw topic is added.
auto_calibration bool [0/1] O Enable/disable automatic calibration.
light bool [0/1] O If camera include a integrated light.
Enable/disable the light.
light_brightness float % O If camera include a integrated light with the optional to control the brightness.
Adjust the brightness.
flash bool [0/1] O If camera include a integrated flash.
Enable/disable flash.
auto_flash bool [0/1] O If camera include a integrated flash.
Enable/disable flash automatic control.

In depth sensor case the manufacturer will have to include the following content, apart from the common from all the 3D Cameras (described in HRIMComponent model: 3DCamera).

HRIM component model: 3DCamera - Depth sensor
URI XML MODEL ABSTRACTION CLASS
M/O
SHORT DESCRIPTION
/hrim_sensor_3dcamera_<instance_id>/specs sensor/3dcamera/topics/specsDepth.xml topic
(Pub)
M Device features.
/hrim_sensor_3dcamera_<instance_id>/ir_image_raw sensor/3dcamera/topics/image.xml topic
(Pub)
M Raw image.
/hrim_sensor_3dcamera_<instance_id>/depth_image_raw sensor/3dcamera/topics/image.xml topic
(Pub)
M Raw image.
/hrim_sensor_3dcamera_<instance_id>/rgb_image_raw sensor/3dcamera/topics/image.xml topic
(Pub)
O Raw RGB image.
/hrim_sensor_3dcamera_<instance_id>/rgb_camera_info sensor/3dcamera/topics/cameraInfo.xml topic
(Pub)
O RGB camera calibration and metadata.
/hrim_sensor_3dcamera_<instance_id>/depth_camera_info sensor/3dcamera/topics/cameraInfo.xml topic
(Pub)
O Camera calibration and metadata.
/hrim_sensor_3dcamera_<instance_id>/ir_camera_info sensor/3dcamera/topics/cameraInfo.xml topic
(Pub)
O IR camera calibration and metadata.
/hrim_sensor_3dcamera_<instance_id>/ir_projector_info sensor/3dcamera/topics/cameraInfo.xml topic
(Pub)
O IR projector calibration.
/hrim_sensor_3dcamera_<instance_id>/point_cloud_color sensor/3dcamera/topics/pointCloud.xml topic
(Pub)
O Color point cloud.
/hrim_sensor_3dcamera_<instance_id>/set_camera_info sensor/3dcamera/topics/setCameraInfo.xml service O Set camera calibration.
/hrim_sensor_3dcamera_<instance_id>/rgb_set_camera_info sensor/3dcamera/topics/setCameraInfo.xml service O Set RGB camera calibration.
/hrim_sensor_3dcamera_<instance_id>/ir_set_camera_info sensor/3dcamera/topics/setCameraInfo.xml service O Set IR camera calibration.

Note: the {BASE} wildcard references the base topics all modules contain, defined in the HRIM component model page.

to toggle it's complete XML notation:
<?xml version="1.0"?>
<module name="3dcameradepth" type="sensor" description="defines the messages to interact with a depth 3d camera">

  <mandatory>

    {BASE}

    <topic name="specs" type="publish" description="defines the most important characteristic of the camera" fileName="SpecsDepthCamera">
      <property name="header" type="header" fileName="Header">
        <property name="time" type="time" fileName="Time">
          <property name="sec" type="int32" unit="second">
            <value></value>
          </property>
          <property name="nanosec" type="uint32" unit="nanosecond">
            <value></value>
          </property>
        </property>
        <property name="frame_id" type="string" description="transform frame with which this data is associated">
          <value></value>
        </property>
      </property>
      <property name="resolution" type="string" unit="pixel" description="example: 752x480, 1280x1024">
        <value></value>
      </property>
      <property name="horizontal_fov" type="float32" unit="radian" description="horizontal field of view">
        <value></value>
      </property>
      <property name="vertical_fov" type="float32" unit="radian" description="vertical field of view">
        <value></value>
      </property>
      <property name="frame_rate" type="uint16" unit="frames per second" description="maximum possible frame rate">
        <value></value>
      </property>
      <property name="accuracy" type="float32" unit="metre" description="minimum possible accuracy value">
        <value></value>
      </property>
      <property name="operation_range" type="uint16[]" unit="metre" description="working distance (min-max)">
        <value></value>
      </property>
      <property name="image_formats" type="string" description="example: mono8, rgb1, bayergrbg8">
        <value></value>
      </property>
      <property name="rgb" type="boolean" description="true: image in RGB (color); false: image in grayscale">
        <value></value>
      </property>
      <property name="voltage" type="float32" unit="volt">
        <value></value>
      </property>
      <property name="max_power_consumption" type="float32" unit="watt" description="maximum power consumption">
        <value></value>
      </property>
    </topic>

    <topic name="point_cloud" type="publish" description="environment point cloud" fileName="PointCloud">
      <property name="header" type="header" fileName="Header">
        <property name="time" type="time" fileName="Time">
          <property name="sec" type="int32" unit="second">
            <value></value>
          </property>
          <property name="nanosec" type="uint32" unit="nanosecond">
            <value></value>
          </property>
        </property>
        <property name="frame_id" type="string" description="transform frame with which this data is associated">
          <value></value>
        </property>
      </property>
      <property name="height" type="uint32" description="point cloud structure height, if it's unordered height is 1">
        <value></value>
      </property>
      <property name="width" type="uint32" description="point cloud structure width, if it's unordered width is the length of the cloud">
        <value></value>
      </property>
      <property name="fields" type="pointField[]" description="describes the channels and their layout in the binary data blob" fileName="PointField">
        <property name="datatype" type="uint8" unit="enum" enum='{"INT8" : 1 , "UINT8" : 2 , "INT16" : 3 , "UINT16" : 4 , "INT32" : 5 , "UINT32" : 6 , "FLOAT32" : 7 , "FLOAT64" : 8}' description="device classification">
          <value></value>
        </property>
        <property name="name" type="string" description="name of field">
          <value></value>
        </property>
        <property name="offset" type="uint32" description="offset from start of point struct">
          <value></value>
        </property>
        <property name="count" type="uint32" description="how many elements in the field">
          <value></value>
        </property>
      </property>
      <property name="is_bigendian" type="boolean" description="is this data bigendian?">
        <value></value>
      </property>
      <property name="point_step" type="uint32" description="length of a point in bytes">
        <value></value>
      </property>
      <property name="row_step" type="uint32" description="length of a row in bytes">
        <value></value>
      </property>
      <property name="data" type="uint8[]" description="actual point data, size is (row_step * height)">
        <value></value>
      </property>
      <property name="is_dense" type="boolean" description="true if there are no invalid points">
        <value></value>
      </property>
    </topic>

    <topic name="ir_image_raw" type="publish" description="raw infrared image" fileName="Image">
      <property name="header" type="header" fileName="Header">
        <property name="time" type="time" fileName="Time">
          <property name="sec" type="int32" unit="second">
            <value></value>
          </property>
          <property name="nanosec" type="uint32" unit="nanosecond">
            <value></value>
          </property>
        </property>
        <property name="frame_id" type="string" description="transform frame with which this data is associated">
          <value></value>
        </property>
      </property>
      <property name="height" type="uint32" description="image height, that is, number of rows">
        <value></value>
      </property>
      <property name="width" type="uint32" description="image width, that is, number of columns">
        <value></value>
      </property>
      <property name="encoding" type="string" description="encoding of pixels channel meaning, ordering, size">
        <value></value>
      </property>
      <property name="is_bigendian" type="uint8" description="is this data bigendian?">
        <value></value>
      </property>
      <property name="step" type="uint32" description="full row length in bytes">
        <value></value>
      </property>
      <property name="data" type="uint8[]" description="actual matrix data, size is (step * rows)">
        <value></value>
      </property>
    </topic>

    <topic name="depth_image_raw" type="publish" description="raw depth image" fileName="Image">
      <property name="header" type="header" fileName="Header">
        <property name="time" type="time" fileName="Time">
          <property name="sec" type="int32" unit="second">
            <value></value>
          </property>
          <property name="nanosec" type="uint32" unit="nanosecond">
            <value></value>
          </property>
        </property>
        <property name="frame_id" type="string" description="transform frame with which this data is associated">
          <value></value>
        </property>
      </property>
      <property name="height" type="uint32" description="image height, that is, number of rows">
        <value></value>
      </property>
      <property name="width" type="uint32" description="image width, that is, number of columns">
        <value></value>
      </property>
      <property name="encoding" type="string" description="encoding of pixels channel meaning, ordering, size">
        <value></value>
      </property>
      <property name="is_bigendian" type="uint8" description="is this data bigendian?">
        <value></value>
      </property>
      <property name="step" type="uint32" description="full row length in bytes">
        <value></value>
      </property>
      <property name="data" type="uint8[]" description="actual matrix data, size is (step * rows)">
        <value></value>
      </property>
    </topic>

    <param name="frame_id" type="string" description="Sets the TF frame from which the camera is publishing.">
      <value></value>
    </param>

    <param name="width" type="int" unit="px" description="Resolution: width (width x height)">
      <value></value>
    </param>

    <param name="height" type="int" unit="px" description="Resolution: height (width x height)">
      <value></value>
    </param>

    <param name="frame_rate" type="int" unit="fps" description="Refresh rate.">
      <value></value>
    </param>

    <param name="image_format" type="string" description="Possible values are: 'rgb8', 'rgba8', 'rgb16', 'rgba16', 'bgr8', 'bgra8', 'bgr16', 'bgra16', 'mono8', 'mono16', 'bayerrggb8', 'bayerbggr8', 'bayergbrg8', 'bayergrbg8', 'bayerrggb16', 'bayerbggr16', 'bayergbrg16', 'bayergrbg16'.">
      <value></value>
    </param>

  </mandatory>

  <optional>

    <topic name="rgb_image_raw" type="publish" description="raw rgb image" fileName="Image">
      <property name="header" type="header" fileName="Header">
        <property name="time" type="time" fileName="Time">
          <property name="sec" type="int32" unit="second">
            <value></value>
          </property>
          <property name="nanosec" type="uint32" unit="nanosecond">
            <value></value>
          </property>
        </property>
        <property name="frame_id" type="string" description="transform frame with which this data is associated">
          <value></value>
        </property>
      </property>
      <property name="height" type="uint32" description="image height, that is, number of rows">
        <value></value>
      </property>
      <property name="width" type="uint32" description="image width, that is, number of columns">
        <value></value>
      </property>
      <property name="encoding" type="string" description="encoding of pixels channel meaning, ordering, size">
        <value></value>
      </property>
      <property name="is_bigendian" type="uint8" description="is this data bigendian?">
        <value></value>
      </property>
      <property name="step" type="uint32" description="full row length in bytes">
        <value></value>
      </property>
      <property name="data" type="uint8[]" description="actual matrix data, size is (step * rows)">
        <value></value>
      </property>
    </topic>

    <topic name="rgb_camera_info" type="publish" description="rgb camera calibration and metadata" fileName="CameraInfo">
      <property name="header" type="header" fileName="Header">
        <property name="time" type="time" fileName="Time">
          <property name="sec" type="int32" unit="second">
            <value></value>
          </property>
          <property name="nanosec" type="uint32" unit="nanosecond">
            <value></value>
          </property>
        </property>
        <property name="frame_id" type="string" description="transform frame with which this data is associated">
          <value></value>
        </property>
      </property>
      <property name="height" type="uint32" unit="pixel" description="image height, that is, number of rows">
        <value></value>
      </property>
      <property name="width" type="uint32" unit="pixel" description="image width, that is, number of columns">
        <value></value>
      </property>
      <property name="distortion_model" type="string">
        <value></value>
      </property>
      <property name="d" type="float64[]" description="the distortion parameters, size depending on the distortion model">
        <value></value>
      </property>
      <property name="k" type="float64[9]" description="intrinsic camera matrix for the raw (distorted) images">
        <value></value>
      </property>
      <property name="p" type="float64[12]" description="by convention, this matrix specifies the intrinsic (camera) matrix of the processed (rectified) image">
        <value></value>
      </property>
    </topic>

    <topic name="depth_camera_info" type="publish" description="camera calibration and metadata" fileName="CameraInfo">
      <property name="header" type="header" fileName="Header">
        <property name="time" type="time" fileName="Time">
          <property name="sec" type="int32" unit="second">
            <value></value>
          </property>
          <property name="nanosec" type="uint32" unit="nanosecond">
            <value></value>
          </property>
        </property>
        <property name="frame_id" type="string" description="transform frame with which this data is associated">
          <value></value>
        </property>
      </property>
      <property name="height" type="uint32" unit="pixel" description="image height, that is, number of rows">
        <value></value>
      </property>
      <property name="width" type="uint32" unit="pixel" description="image width, that is, number of columns">
        <value></value>
      </property>
      <property name="distortion_model" type="string">
        <value></value>
      </property>
      <property name="d" type="float64[]" description="the distortion parameters, size depending on the distortion model">
        <value></value>
      </property>
      <property name="k" type="float64[9]" description="intrinsic camera matrix for the raw (distorted) images">
        <value></value>
      </property>
      <property name="p" type="float64[12]" description="by convention, this matrix specifies the intrinsic (camera) matrix of the processed (rectified) image">
        <value></value>
      </property>
    </topic>

    <topic name="ir_camera_info" type="publish" description="ir camera calibration and metadata" fileName="CameraInfo">
      <property name="header" type="header" fileName="Header">
        <property name="time" type="time" fileName="Time">
          <property name="sec" type="int32" unit="second">
            <value></value>
          </property>
          <property name="nanosec" type="uint32" unit="nanosecond">
            <value></value>
          </property>
        </property>
        <property name="frame_id" type="string" description="transform frame with which this data is associated">
          <value></value>
        </property>
      </property>
      <property name="height" type="uint32" unit="pixel" description="image height, that is, number of rows">
        <value></value>
      </property>
      <property name="width" type="uint32" unit="pixel" description="image width, that is, number of columns">
        <value></value>
      </property>
      <property name="distortion_model" type="string">
        <value></value>
      </property>
      <property name="d" type="float64[]" description="the distortion parameters, size depending on the distortion model">
        <value></value>
      </property>
      <property name="k" type="float64[9]" description="intrinsic camera matrix for the raw (distorted) images">
        <value></value>
      </property>
      <property name="p" type="float64[12]" description="by convention, this matrix specifies the intrinsic (camera) matrix of the processed (rectified) image">
        <value></value>
      </property>
    </topic>

    <topic name="ir_projector_info" type="publish" description="ir projector calibration" fileName="CameraInfo">
      <property name="header" type="header" fileName="Header">
        <property name="time" type="time" fileName="Time">
          <property name="sec" type="int32" unit="second">
            <value></value>
          </property>
          <property name="nanosec" type="uint32" unit="nanosecond">
            <value></value>
          </property>
        </property>
        <property name="frame_id" type="string" description="transform frame with which this data is associated">
          <value></value>
        </property>
      </property>
      <property name="height" type="uint32" unit="pixel" description="image height, that is, number of rows">
        <value></value>
      </property>
      <property name="width" type="uint32" unit="pixel" description="image width, that is, number of columns">
        <value></value>
      </property>
      <property name="distortion_model" type="string">
        <value></value>
      </property>
      <property name="d" type="float64[]" description="the distortion parameters, size depending on the distortion model">
        <value></value>
      </property>
      <property name="k" type="float64[9]" description="intrinsic camera matrix for the raw (distorted) images">
        <value></value>
      </property>
      <property name="p" type="float64[12]" description="by convention, this matrix specifies the intrinsic (camera) matrix of the processed (rectified) image">
        <value></value>
      </property>
    </topic>

    <topic name="point_cloud_color" type="publish" description="color point cloud" fileName="PointCloud">
      <property name="header" type="header" fileName="Header">
        <property name="time" type="time" fileName="Time">
          <property name="sec" type="int32" unit="second">
            <value></value>
          </property>
          <property name="nanosec" type="uint32" unit="nanosecond">
            <value></value>
          </property>
        </property>
        <property name="frame_id" type="string" description="transform frame with which this data is associated">
          <value></value>
        </property>
      </property>
      <property name="height" type="uint32" description="point cloud structure height, if it's unordered height is 1">
        <value></value>
      </property>
      <property name="width" type="uint32" description="point cloud structure width, if it's unordered width is the length of the cloud">
        <value></value>
      </property>
      <property name="fields" type="pointField[]" description="describes the channels and their layout in the binary data blob" fileName="PointField">
        <property name="datatype" type="uint8" unit="enum" enum='{"INT8" : 1 , "UINT8" : 2 , "INT16" : 3 , "UINT16" : 4 , "INT32" : 5 , "UINT32" : 6 , "FLOAT32" : 7 , "FLOAT64" : 8}' description="device classification">
          <value></value>
        </property>
        <property name="name" type="string" description="name of field">
          <value></value>
        </property>
        <property name="offset" type="uint32" description="offset from start of point struct">
          <value></value>
        </property>
        <property name="count" type="uint32" description="how many elements in the field">
          <value></value>
        </property>
      </property>
      <property name="is_bigendian" type="boolean" description="is this data bigendian?">
        <value></value>
      </property>
      <property name="point_step" type="uint32" description="length of a point in bytes">
        <value></value>
      </property>
      <property name="row_step" type="uint32" description="length of a row in bytes">
        <value></value>
      </property>
      <property name="data" type="uint8[]" description="actual point data, size is (row_step * height)">
        <value></value>
      </property>
      <property name="is_dense" type="boolean" description="true if there are no invalid points">
        <value></value>
      </property>
    </topic>

    <topic name="set_camera_info" type="service" description="set camera calibration" fileName="SetCameraInfo">
      <property name="camera_info" type="cameraInfo" description="the camera info to store" fileName="CameraInfo">
        <property name="header" type="header" fileName="Header">
          <property name="time" type="time" fileName="Time">
            <property name="sec" type="int32" unit="second">
              <value></value>
            </property>
            <property name="nanosec" type="uint32" unit="nanosecond">
              <value></value>
            </property>
          </property>
          <property name="frame_id" type="string" description="transform frame with which this data is associated">
            <value></value>
          </property>
        </property>
        <property name="height" type="uint32" unit="pixel" description="image height, that is, number of rows">
          <value></value>
        </property>
        <property name="width" type="uint32" unit="pixel" description="image width, that is, number of columns">
          <value></value>
        </property>
        <property name="distortion_model" type="string">
          <value></value>
        </property>
        <property name="d" type="float64[]" description="the distortion parameters, size depending on the distortion model">
          <value></value>
        </property>
        <property name="k" type="float64[9]" description="intrinsic camera matrix for the raw (distorted) images">
          <value></value>
        </property>
        <property name="p" type="float64[12]" description="by convention, this matrix specifies the intrinsic (camera) matrix of the processed (rectified) image">
          <value></value>
        </property>
      </property>
      <response>
        <property name="success" type="boolean" description="true if the call succeeded">
          <value></value>
        </property>
        <property name="status_message" type="string" description="used to give details about success">
          <value></value>
        </property>
      </response>
    </topic>

    <topic name="rgb_set_camera_info" type="service" description="set rgb camera calibration" fileName="SetCameraInfo">
      <property name="camera_info" type="cameraInfo" description="the camera info to store" fileName="CameraInfo">
        <property name="header" type="header" fileName="Header">
          <property name="time" type="time" fileName="Time">
            <property name="sec" type="int32" unit="second">
              <value></value>
            </property>
            <property name="nanosec" type="uint32" unit="nanosecond">
              <value></value>
            </property>
          </property>
          <property name="frame_id" type="string" description="transform frame with which this data is associated">
            <value></value>
          </property>
        </property>
        <property name="height" type="uint32" unit="pixel" description="image height, that is, number of rows">
          <value></value>
        </property>
        <property name="width" type="uint32" unit="pixel" description="image width, that is, number of columns">
          <value></value>
        </property>
        <property name="distortion_model" type="string">
          <value></value>
        </property>
        <property name="d" type="float64[]" description="the distortion parameters, size depending on the distortion model">
          <value></value>
        </property>
        <property name="k" type="float64[9]" description="intrinsic camera matrix for the raw (distorted) images">
          <value></value>
        </property>
        <property name="p" type="float64[12]" description="by convention, this matrix specifies the intrinsic (camera) matrix of the processed (rectified) image">
          <value></value>
        </property>
      </property>
      <response>
        <property name="success" type="boolean" description="true if the call succeeded">
          <value></value>
        </property>
        <property name="status_message" type="string" description="used to give details about success">
          <value></value>
        </property>
      </response>
    </topic>

    <topic name="ir_set_camera_info" type="service" description="set ir camera calibration" fileName="SetCameraInfo">
      <property name="camera_info" type="cameraInfo" description="the camera info to store" fileName="CameraInfo">
        <property name="header" type="header" fileName="Header">
          <property name="time" type="time" fileName="Time">
            <property name="sec" type="int32" unit="second">
              <value></value>
            </property>
            <property name="nanosec" type="uint32" unit="nanosecond">
              <value></value>
            </property>
          </property>
          <property name="frame_id" type="string" description="transform frame with which this data is associated">
            <value></value>
          </property>
        </property>
        <property name="height" type="uint32" unit="pixel" description="image height, that is, number of rows">
          <value></value>
        </property>
        <property name="width" type="uint32" unit="pixel" description="image width, that is, number of columns">
          <value></value>
        </property>
        <property name="distortion_model" type="string">
          <value></value>
        </property>
        <property name="d" type="float64[]" description="the distortion parameters, size depending on the distortion model">
          <value></value>
        </property>
        <property name="k" type="float64[9]" description="intrinsic camera matrix for the raw (distorted) images">
          <value></value>
        </property>
        <property name="p" type="float64[12]" description="by convention, this matrix specifies the intrinsic (camera) matrix of the processed (rectified) image">
          <value></value>
        </property>
      </property>
      <response>
        <property name="success" type="boolean" description="true if the call succeeded">
          <value></value>
        </property>
        <property name="status_message" type="string" description="used to give details about success">
          <value></value>
        </property>
      </response>
    </topic>

    <topic name="audio_raw" type="publish" description="integrated microphone" fileName="Audio">
      <property name="header" type="header" fileName="Header">
        <property name="time" type="time" fileName="Time">
          <property name="sec" type="int32" unit="second">
            <value></value>
          </property>
          <property name="nanosec" type="uint32" unit="nanosecond">
            <value></value>
          </property>
        </property>
        <property name="frame_id" type="string" description="transform frame with which this data is associated">
          <value></value>
        </property>
      </property>
      <property name="frequency" type="uint16" unit="frequency" description="current frequency of the audio interface">
        <value></value>
      </property>
      <property name="data" type="int16[]" description="interlaced data of the audio buffer">
        <value></value>
      </property>
    </topic>

    <topic name="reconfiguration" type="publish" description="dynamic reconfiguration of H-ROS systems" fileName="Reconfiguration">
      <property name="header" type="header" fileName="Header">
        <property name="time" type="time" fileName="Time">
          <property name="sec" type="int32" unit="second">
            <value></value>
          </property>
          <property name="nanosec" type="uint32" unit="nanosecond">
            <value></value>
          </property>
        </property>
        <property name="frame_id" type="string" description="transform frame with which this data is associated">
          <value></value>
        </property>
      </property>
      <property name="orientation" type="quaternion" fileName="Quaternion">
        <property name="x" type="float64">
          <value></value>
        </property>
        <property name="y" type="float64">
          <value></value>
        </property>
        <property name="z" type="float64">
          <value></value>
        </property>
        <property name="w" type="float64">
          <value></value>
        </property>
      </property>
      <property name="orientation_covariance" type="float64[9]">
        <value></value>
      </property>
      <property name="angular_velocity" type="vector3" fileName="Vector3">
        <property name="x" type="float64">
          <value></value>
        </property>
        <property name="y" type="float64">
          <value></value>
        </property>
        <property name="z" type="float64">
          <value></value>
        </property>
      </property>
      <property name="angular_velocity_covariance" type="float64[9]">
        <value></value>
      </property>
      <property name="linear_acceleration" type="vector3" fileName="Vector3">
        <property name="x" type="float64">
          <value></value>
        </property>
        <property name="y" type="float64">
          <value></value>
        </property>
        <property name="z" type="float64">
          <value></value>
        </property>
      </property>
      <property name="linear_acceleration_covariance" type="float64[9]">
        <value></value>
      </property>
    </topic>

    <param name="frecuency_rate" type="int" unit="Hz/s" description="Related to audio_raw topic: audio sampling frecuency. Mandatory if audio_raw topic is added.">
      <value></value>
    </param>

    <param name="auto_calibration" type="bool" unit="[0/1]" description="Enable/disable automatic calibration.">
      <value></value>
    </param>

    <param name="light" type="bool" unit="[0/1]" description="If camera include a integrated light, enable/disable the light.">
      <value></value>
    </param>

    <param name="light_brightness" type="float" unit="percentage" description="If camera include a integrated light with the optional to control the brightness, adjust the brightness.">
      <value></value>
    </param>

    <param name="flash" type="bool" unit="[0/1]" description="If camera include a integrated flash, enable/disable flash.">
      <value></value>
    </param>

    <param name="auto_flash" type="bool" unit="Hz/s" description="If camera include a integrated flash, enable/disable flash automatic control.">
      <value></value>
    </param>

  </optional>

</module>

To create a stereo camera, the manufacturer will have to include the following content, apart from the common from all the 3D Cameras (described in HRIMComponent model: 3DCamera).

HRIM component model: 3DCamera - Stereo camera
URI XML MODEL ABSTRACTION CLASS
M/O
SHORT DESCRIPTION
/hrim_sensor_3dcamera_<instance_id>/specs sensor/3dcamera/topics/specsStereo.xml topic
(Pub)
M Device features.
/hrim_sensor_3dcamera_<instance_id>/left_image_raw sensor/3dcamera/topics/image.xml topic
(Pub)
M Left camera raw image.
/hrim_sensor_3dcamera_<instance_id>/right_image_raw sensor/3dcamera/topics/image.xml topic
(Pub)
M Right camera raw image.
/hrim_sensor_3dcamera_<instance_id>/left_camera_info sensor/3dcamera/topics/cameraInfo.xml topic
(Pub)
O Left camera calibration and metadata.
/hrim_sensor_3dcamera_<instance_id>/left_image_raw_color sensor/3dcamera/topics/image.xml topic
(Pub)
O Color unrectified left image.
/hrim_sensor_3dcamera_<instance_id>/left_compressed sensor/3dcamera/topics/compressed.xml topic
(Pub)
O .jpg or .png
/hrim_sensor_3dcamera_<instance_id>/left_image_mono sensor/3dcamera/topics/image.xml topic
(Pub)
O Monochrome distorted.
/hrim_sensor_3dcamera_<instance_id>/left_image_color sensor/3dcamera/topics/image.xml topic
(Pub)
O Color distorted.
/hrim_sensor_3dcamera_<instance_id>/left_image_rect sensor/3dcamera/topics/image.xml topic
(Pub)
O Monochrome, rectified.
/hrim_sensor_3dcamera_<instance_id>/left_image_rect_color sensor/3dcamera/topics/image.xml topic
(Pub)
O Color, rectified.
/hrim_sensor_3dcamera_<instance_id>/right_camera_info sensor/3dcamera/topics/cameraInfo.xml topic
(Pub)
O Right camera calibration and metadata.
/hrim_sensor_3dcamera_<instance_id>/right_image_raw_color sensor/3dcamera/topics/image.xml topic
(Pub)
O Color unrectified right image.
/hrim_sensor_3dcamera_<instance_id>/right_compressed sensor/3dcamera/topics/compressed.xml topic
(Pub)
O .jpg or .png
/hrim_sensor_3dcamera_<instance_id>/right_image_mono sensor/3dcamera/topics/image.xml topic
(Pub)
O Monochrome distorted.
/hrim_sensor_3dcamera_<instance_id>/right_image_color sensor/3dcamera/topics/image.xml topic
(Pub)
O Color distorted.
/hrim_sensor_3dcamera_<instance_id>/right_image_rect sensor/3dcamera/topics/image.xml topic
(Pub)
O Monochrome, rectified.
/hrim_sensor_3dcamera_<instance_id>/right_image_rect_color sensor/3dcamera/topics/image.xml topic
(Pub)
O Color, rectified.
/hrim_sensor_3dcamera_<instance_id>/set_camera_info sensor/3dcamera/topics/setCameraInfo.xml service O Set camera calibration.
/hrim_sensor_3dcamera_<instance_id>/left_set_camera_info sensor/3dcamera/topics/setCameraInfo.xml service O Set left camera calibration.
/hrim_sensor_3dcamera_<instance_id>/right_set_camera_info sensor/3dcamera/topics/setCameraInfo.xml service O Set right camera calibration.
to toggle it's complete XML notation:
<?xml version="1.0"?>
<module name="3dcamerastereo" type="sensor" description="defines the messages to interact with a stereo 3d camera">

  <mandatory>

    {BASE}

    <topic name="specs" type="publish" description="defines the most important characteristic of the camera" fileName="SpecsStereoCamera">
      <property name="header" type="header" fileName="Header">
        <property name="time" type="time" fileName="Time">
          <property name="sec" type="int32" unit="second">
            <value></value>
          </property>
          <property name="nanosec" type="uint32" unit="nanosecond">
            <value></value>
          </property>
        </property>
        <property name="frame_id" type="string" description="transform frame with which this data is associated">
          <value></value>
        </property>
      </property>
      <property name="resolution" type="string" unit="pixel" description="example: 752x480, 1280x1024">
        <value></value>
      </property>
      <property name="frame_rate" type="uint16" unit="frames per second" description="maximum possible frame rate">
        <value></value>
      </property>
      <property name="image_formats" type="string" description="example: mono8, rgb1, bayergrbg8">
        <value></value>
      </property>
      <property name="baseline" type="float32" unit="centimeter" description="distance between the two camera lenses">
        <value></value>
      </property>
      <property name="horizontal_fov" type="float32" unit="radian" description="horizontal field of view">
        <value></value>
      </property>
      <property name="vertical_fov" type="float32" unit="radian" description="vertical field of view">
        <value></value>
      </property>
      <property name="depth_range" type="float32" unit="metre" description="depth range">
        <value></value>
      </property>
    </topic>

    <topic name="point_cloud" type="publish" description="environment point cloud" fileName="PointCloud">
      <property name="header" type="header" fileName="Header">
        <property name="time" type="time" fileName="Time">
          <property name="sec" type="int32" unit="second">
            <value></value>
          </property>
          <property name="nanosec" type="uint32" unit="nanosecond">
            <value></value>
          </property>
        </property>
        <property name="frame_id" type="string" description="transform frame with which this data is associated">
          <value></value>
        </property>
      </property>
      <property name="height" type="uint32" description="point cloud structure height, if it's unordered height is 1">
        <value></value>
      </property>
      <property name="width" type="uint32" description="point cloud structure width, if it's unordered width is the length of the cloud">
        <value></value>
      </property>
      <property name="fields" type="pointField[]" description="describes the channels and their layout in the binary data blob" fileName="PointField">
        <property name="datatype" type="uint8" unit="enum" enum='{"INT8" : 1 , "UINT8" : 2 , "INT16" : 3 , "UINT16" : 4 , "INT32" : 5 , "UINT32" : 6 , "FLOAT32" : 7 , "FLOAT64" : 8}' description="device classification">
          <value></value>
        </property>
        <property name="name" type="string" description="name of field">
          <value></value>
        </property>
        <property name="offset" type="uint32" description="offset from start of point struct">
          <value></value>
        </property>
        <property name="count" type="uint32" description="how many elements in the field">
          <value></value>
        </property>
      </property>
      <property name="is_bigendian" type="boolean" description="is this data bigendian?">
        <value></value>
      </property>
      <property name="point_step" type="uint32" description="length of a point in bytes">
        <value></value>
      </property>
      <property name="row_step" type="uint32" description="length of a row in bytes">
        <value></value>
      </property>
      <property name="data" type="uint8[]" description="actual point data, size is (row_step * height)">
        <value></value>
      </property>
      <property name="is_dense" type="boolean" description="true if there are no invalid points">
        <value></value>
      </property>
    </topic>

    <topic name="left_image_raw" type="publish" description="left camera raw image" fileName="Image">
      <property name="header" type="header" fileName="Header">
        <property name="time" type="time" fileName="Time">
          <property name="sec" type="int32" unit="second">
            <value></value>
          </property>
          <property name="nanosec" type="uint32" unit="nanosecond">
            <value></value>
          </property>
        </property>
        <property name="frame_id" type="string" description="transform frame with which this data is associated">
          <value></value>
        </property>
      </property>
      <property name="height" type="uint32" description="image height, that is, number of rows">
        <value></value>
      </property>
      <property name="width" type="uint32" description="image width, that is, number of columns">
        <value></value>
      </property>
      <property name="encoding" type="string" description="encoding of pixels channel meaning, ordering, size">
        <value></value>
      </property>
      <property name="is_bigendian" type="uint8" description="is this data bigendian?">
        <value></value>
      </property>
      <property name="step" type="uint32" description="full row length in bytes">
        <value></value>
      </property>
      <property name="data" type="uint8[]" description="actual matrix data, size is (step * rows)">
        <value></value>
      </property>
    </topic>

    <topic name="right_image_raw" type="publish" description="right camera raw image" fileName="Image">
      <property name="header" type="header" fileName="Header">
        <property name="time" type="time" fileName="Time">
          <property name="sec" type="int32" unit="second">
            <value></value>
          </property>
          <property name="nanosec" type="uint32" unit="nanosecond">
            <value></value>
          </property>
        </property>
        <property name="frame_id" type="string" description="transform frame with which this data is associated">
          <value></value>
        </property>
      </property>
      <property name="height" type="uint32" description="image height, that is, number of rows">
        <value></value>
      </property>
      <property name="width" type="uint32" description="image width, that is, number of columns">
        <value></value>
      </property>
      <property name="encoding" type="string" description="encoding of pixels channel meaning, ordering, size">
        <value></value>
      </property>
      <property name="is_bigendian" type="uint8" description="is this data bigendian?">
        <value></value>
      </property>
      <property name="step" type="uint32" description="full row length in bytes">
        <value></value>
      </property>
      <property name="data" type="uint8[]" description="actual matrix data, size is (step * rows)">
        <value></value>
      </property>
    </topic>

    <param name="frame_id" type="string" description="Sets the TF frame from which the camera is publishing.">
      <value></value>
    </param>

    <param name="width" type="int" unit="px" description="Resolution: width (width x height)">
      <value></value>
    </param>

    <param name="height" type="int" unit="px" description="Resolution: height (width x height)">
      <value></value>
    </param>

    <param name="frame_rate" type="int" unit="fps" description="Refresh rate.">
      <value></value>
    </param>

    <param name="image_format" type="string" description="Possible values are: 'rgb8', 'rgba8', 'rgb16', 'rgba16', 'bgr8', 'bgra8', 'bgr16', 'bgra16', 'mono8', 'mono16', 'bayerrggb8', 'bayerbggr8', 'bayergbrg8', 'bayergrbg8', 'bayerrggb16', 'bayerbggr16', 'bayergbrg16', 'bayergrbg16'.">
      <value></value>
    </param>

  </mandatory>

  <optional>

    <topic name="audio_raw" type="publish" description="integrated microphone" fileName="Audio">
      <property name="header" type="header" fileName="Header">
        <property name="time" type="time" fileName="Time">
          <property name="sec" type="int32" unit="second">
            <value></value>
          </property>
          <property name="nanosec" type="uint32" unit="nanosecond">
            <value></value>
          </property>
        </property>
        <property name="frame_id" type="string" description="transform frame with which this data is associated">
          <value></value>
        </property>
      </property>
      <property name="frequency" type="uint16" unit="frequency" description="current frequency of the audio interface">
        <value></value>
      </property>
      <property name="data" type="int16[]" description="interlaced data of the audio buffer">
        <value></value>
      </property>
    </topic>

    <topic name="reconfiguration" type="publish" description="dynamic reconfiguration of H-ROS systems" fileName="Reconfiguration">
      <property name="header" type="header" fileName="Header">
        <property name="time" type="time" fileName="Time">
          <property name="sec" type="int32" unit="second">
            <value></value>
          </property>
          <property name="nanosec" type="uint32" unit="nanosecond">
            <value></value>
          </property>
        </property>
        <property name="frame_id" type="string" description="transform frame with which this data is associated">
          <value></value>
        </property>
      </property>
      <property name="orientation" type="quaternion" fileName="Quaternion">
        <property name="x" type="float64">
          <value></value>
        </property>
        <property name="y" type="float64">
          <value></value>
        </property>
        <property name="z" type="float64">
          <value></value>
        </property>
        <property name="w" type="float64">
          <value></value>
        </property>
      </property>
      <property name="orientation_covariance" type="float64[9]">
        <value></value>
      </property>
      <property name="angular_velocity" type="vector3" fileName="Vector3">
        <property name="x" type="float64">
          <value></value>
        </property>
        <property name="y" type="float64">
          <value></value>
        </property>
        <property name="z" type="float64">
          <value></value>
        </property>
      </property>
      <property name="angular_velocity_covariance" type="float64[9]">
        <value></value>
      </property>
      <property name="linear_acceleration" type="vector3" fileName="Vector3">
        <property name="x" type="float64">
          <value></value>
        </property>
        <property name="y" type="float64">
          <value></value>
        </property>
        <property name="z" type="float64">
          <value></value>
        </property>
      </property>
      <property name="linear_acceleration_covariance" type="float64[9]">
        <value></value>
      </property>
    </topic>

    <topic name="left_camera_info" type="publish" description="left camera meta information" fileName="CameraInfo">
      <property name="header" type="header" fileName="Header">
        <property name="time" type="time" fileName="Time">
          <property name="sec" type="int32" unit="second">
            <value></value>
          </property>
          <property name="nanosec" type="uint32" unit="nanosecond">
            <value></value>
          </property>
        </property>
        <property name="frame_id" type="string" description="transform frame with which this data is associated">
          <value></value>
        </property>
      </property>
      <property name="height" type="uint32" unit="pixel" description="image height, that is, number of rows">
        <value></value>
      </property>
      <property name="width" type="uint32" unit="pixel" description="image width, that is, number of columns">
        <value></value>
      </property>
      <property name="distortion_model" type="string">
        <value></value>
      </property>
      <property name="d" type="float64[]" description="the distortion parameters, size depending on the distortion model">
        <value></value>
      </property>
      <property name="k" type="float64[9]" description="intrinsic camera matrix for the raw (distorted) images">
        <value></value>
      </property>
      <property name="p" type="float64[12]" description="by convention, this matrix specifies the intrinsic (camera) matrix of the processed (rectified) image">
        <value></value>
      </property>
    </topic>

    <topic name="left_image_raw_color" type="publish" description="color unrectified left image" fileName="Image">
      <property name="header" type="header" fileName="Header">
        <property name="time" type="time" fileName="Time">
          <property name="sec" type="int32" unit="second">
            <value></value>
          </property>
          <property name="nanosec" type="uint32" unit="nanosecond">
            <value></value>
          </property>
        </property>
        <property name="frame_id" type="string" description="transform frame with which this data is associated">
          <value></value>
        </property>
      </property>
      <property name="height" type="uint32" description="image height, that is, number of rows">
        <value></value>
      </property>
      <property name="width" type="uint32" description="image width, that is, number of columns">
        <value></value>
      </property>
      <property name="encoding" type="string" description="encoding of pixels channel meaning, ordering, size">
        <value></value>
      </property>
      <property name="is_bigendian" type="uint8" description="is this data bigendian?">
        <value></value>
      </property>
      <property name="step" type="uint32" description="full row length in bytes">
        <value></value>
      </property>
      <property name="data" type="uint8[]" description="actual matrix data, size is (step * rows)">
        <value></value>
      </property>
    </topic>

    <topic name="left_compressed" type="publish" description=".jpg or .png" fileName="CompressedImage">
      <property name="header" type="header" fileName="Header">
        <property name="time" type="time" fileName="Time">
          <property name="sec" type="int32" unit="second">
            <value></value>
          </property>
          <property name="nanosec" type="uint32" unit="nanosecond">
            <value></value>
          </property>
        </property>
        <property name="frame_id" type="string" description="transform frame with which this data is associated">
          <value></value>
        </property>
      </property>
      <property name="format" type="string" description="specifies the format of the data (jpeg|png)">
        <value></value>
      </property>
      <property name="data" type="uint8[]" description="compressed image buffer">
        <value></value>
      </property>
    </topic>

    <topic name="left_image_mono" type="publish" description="monochrome distorted" fileName="Image">
      <property name="header" type="header" fileName="Header">
        <property name="time" type="time" fileName="Time">
          <property name="sec" type="int32" unit="second">
            <value></value>
          </property>
          <property name="nanosec" type="uint32" unit="nanosecond">
            <value></value>
          </property>
        </property>
        <property name="frame_id" type="string" description="transform frame with which this data is associated">
          <value></value>
        </property>
      </property>
      <property name="height" type="uint32" description="image height, that is, number of rows">
        <value></value>
      </property>
      <property name="width" type="uint32" description="image width, that is, number of columns">
        <value></value>
      </property>
      <property name="encoding" type="string" description="encoding of pixels channel meaning, ordering, size">
        <value></value>
      </property>
      <property name="is_bigendian" type="uint8" description="is this data bigendian?">
        <value></value>
      </property>
      <property name="step" type="uint32" description="full row length in bytes">
        <value></value>
      </property>
      <property name="data" type="uint8[]" description="actual matrix data, size is (step * rows)">
        <value></value>
      </property>
    </topic>

    <topic name="left_image_color" type="publish" description="color distorted" fileName="Image">
      <property name="header" type="header" fileName="Header">
        <property name="time" type="time" fileName="Time">
          <property name="sec" type="int32" unit="second">
            <value></value>
          </property>
          <property name="nanosec" type="uint32" unit="nanosecond">
            <value></value>
          </property>
        </property>
        <property name="frame_id" type="string" description="transform frame with which this data is associated">
          <value></value>
        </property>
      </property>
      <property name="height" type="uint32" description="image height, that is, number of rows">
        <value></value>
      </property>
      <property name="width" type="uint32" description="image width, that is, number of columns">
        <value></value>
      </property>
      <property name="encoding" type="string" description="encoding of pixels channel meaning, ordering, size">
        <value></value>
      </property>
      <property name="is_bigendian" type="uint8" description="is this data bigendian?">
        <value></value>
      </property>
      <property name="step" type="uint32" description="full row length in bytes">
        <value></value>
      </property>
      <property name="data" type="uint8[]" description="actual matrix data, size is (step * rows)">
        <value></value>
      </property>
    </topic>

    <topic name="left_image_rect" type="publish" description="monochrome rectified" fileName="Image">
      <property name="header" type="header" fileName="Header">
        <property name="time" type="time" fileName="Time">
          <property name="sec" type="int32" unit="second">
            <value></value>
          </property>
          <property name="nanosec" type="uint32" unit="nanosecond">
            <value></value>
          </property>
        </property>
        <property name="frame_id" type="string" description="transform frame with which this data is associated">
          <value></value>
        </property>
      </property>
      <property name="height" type="uint32" description="image height, that is, number of rows">
        <value></value>
      </property>
      <property name="width" type="uint32" description="image width, that is, number of columns">
        <value></value>
      </property>
      <property name="encoding" type="string" description="encoding of pixels channel meaning, ordering, size">
        <value></value>
      </property>
      <property name="is_bigendian" type="uint8" description="is this data bigendian?">
        <value></value>
      </property>
      <property name="step" type="uint32" description="full row length in bytes">
        <value></value>
      </property>
      <property name="data" type="uint8[]" description="actual matrix data, size is (step * rows)">
        <value></value>
      </property>
    </topic>

    <topic name="left_image_rect_color" type="publish" description="color rectified" fileName="Image">
      <property name="header" type="header" fileName="Header">
        <property name="time" type="time" fileName="Time">
          <property name="sec" type="int32" unit="second">
            <value></value>
          </property>
          <property name="nanosec" type="uint32" unit="nanosecond">
            <value></value>
          </property>
        </property>
        <property name="frame_id" type="string" description="transform frame with which this data is associated">
          <value></value>
        </property>
      </property>
      <property name="height" type="uint32" description="image height, that is, number of rows">
        <value></value>
      </property>
      <property name="width" type="uint32" description="image width, that is, number of columns">
        <value></value>
      </property>
      <property name="encoding" type="string" description="encoding of pixels channel meaning, ordering, size">
        <value></value>
      </property>
      <property name="is_bigendian" type="uint8" description="is this data bigendian?">
        <value></value>
      </property>
      <property name="step" type="uint32" description="full row length in bytes">
        <value></value>
      </property>
      <property name="data" type="uint8[]" description="actual matrix data, size is (step * rows)">
        <value></value>
      </property>
    </topic>

    <topic name="right_camera_info" type="publish" description="right camera meta information" fileName="CameraInfo">
      <property name="header" type="header" fileName="Header">
        <property name="time" type="time" fileName="Time">
          <property name="sec" type="int32" unit="second">
            <value></value>
          </property>
          <property name="nanosec" type="uint32" unit="nanosecond">
            <value></value>
          </property>
        </property>
        <property name="frame_id" type="string" description="transform frame with which this data is associated">
          <value></value>
        </property>
      </property>
      <property name="height" type="uint32" unit="pixel" description="image height, that is, number of rows">
        <value></value>
      </property>
      <property name="width" type="uint32" unit="pixel" description="image width, that is, number of columns">
        <value></value>
      </property>
      <property name="distortion_model" type="string">
        <value></value>
      </property>
      <property name="d" type="float64[]" description="the distortion parameters, size depending on the distortion model">
        <value></value>
      </property>
      <property name="k" type="float64[9]" description="intrinsic camera matrix for the raw (distorted) images">
        <value></value>
      </property>
      <property name="p" type="float64[12]" description="by convention, this matrix specifies the intrinsic (camera) matrix of the processed (rectified) image">
        <value></value>
      </property>
    </topic>

    <topic name="right_image_raw_color" type="publish" description="color unrectified right image" fileName="Image">
      <property name="header" type="header" fileName="Header">
        <property name="time" type="time" fileName="Time">
          <property name="sec" type="int32" unit="second">
            <value></value>
          </property>
          <property name="nanosec" type="uint32" unit="nanosecond">
            <value></value>
          </property>
        </property>
        <property name="frame_id" type="string" description="transform frame with which this data is associated">
          <value></value>
        </property>
      </property>
      <property name="height" type="uint32" description="image height, that is, number of rows">
        <value></value>
      </property>
      <property name="width" type="uint32" description="image width, that is, number of columns">
        <value></value>
      </property>
      <property name="encoding" type="string" description="encoding of pixels channel meaning, ordering, size">
        <value></value>
      </property>
      <property name="is_bigendian" type="uint8" description="is this data bigendian?">
        <value></value>
      </property>
      <property name="step" type="uint32" description="full row length in bytes">
        <value></value>
      </property>
      <property name="data" type="uint8[]" description="actual matrix data, size is (step * rows)">
        <value></value>
      </property>
    </topic>

    <topic name="right_compressed" type="publish" description=".jpg or .png" fileName="CompressedImage">
      <property name="header" type="header" fileName="Header">
        <property name="time" type="time" fileName="Time">
          <property name="sec" type="int32" unit="second">
            <value></value>
          </property>
          <property name="nanosec" type="uint32" unit="nanosecond">
            <value></value>
          </property>
        </property>
        <property name="frame_id" type="string" description="transform frame with which this data is associated">
          <value></value>
        </property>
      </property>
      <property name="format" type="string" description="specifies the format of the data (jpeg|png)">
        <value></value>
      </property>
      <property name="data" type="uint8[]" description="compressed image buffer">
        <value></value>
      </property>
    </topic>

    <topic name="right_image_mono" type="publish" description="monochrome distorted" fileName="Image">
      <property name="header" type="header" fileName="Header">
        <property name="time" type="time" fileName="Time">
          <property name="sec" type="int32" unit="second">
            <value></value>
          </property>
          <property name="nanosec" type="uint32" unit="nanosecond">
            <value></value>
          </property>
        </property>
        <property name="frame_id" type="string" description="transform frame with which this data is associated">
          <value></value>
        </property>
      </property>
      <property name="height" type="uint32" description="image height, that is, number of rows">
        <value></value>
      </property>
      <property name="width" type="uint32" description="image width, that is, number of columns">
        <value></value>
      </property>
      <property name="encoding" type="string" description="encoding of pixels channel meaning, ordering, size">
        <value></value>
      </property>
      <property name="is_bigendian" type="uint8" description="is this data bigendian?">
        <value></value>
      </property>
      <property name="step" type="uint32" description="full row length in bytes">
        <value></value>
      </property>
      <property name="data" type="uint8[]" description="actual matrix data, size is (step * rows)">
        <value></value>
      </property>
    </topic>

    <topic name="right_image_color" type="publish" description="color distorted" fileName="Image">
      <property name="header" type="header" fileName="Header">
        <property name="time" type="time" fileName="Time">
          <property name="sec" type="int32" unit="second">
            <value></value>
          </property>
          <property name="nanosec" type="uint32" unit="nanosecond">
            <value></value>
          </property>
        </property>
        <property name="frame_id" type="string" description="transform frame with which this data is associated">
          <value></value>
        </property>
      </property>
      <property name="height" type="uint32" description="image height, that is, number of rows">
        <value></value>
      </property>
      <property name="width" type="uint32" description="image width, that is, number of columns">
        <value></value>
      </property>
      <property name="encoding" type="string" description="encoding of pixels channel meaning, ordering, size">
        <value></value>
      </property>
      <property name="is_bigendian" type="uint8" description="is this data bigendian?">
        <value></value>
      </property>
      <property name="step" type="uint32" description="full row length in bytes">
        <value></value>
      </property>
      <property name="data" type="uint8[]" description="actual matrix data, size is (step * rows)">
        <value></value>
      </property>
    </topic>

    <topic name="right_image_rect" type="publish" description="monochrome rectified" fileName="Image">
      <property name="header" type="header" fileName="Header">
        <property name="time" type="time" fileName="Time">
          <property name="sec" type="int32" unit="second">
            <value></value>
          </property>
          <property name="nanosec" type="uint32" unit="nanosecond">
            <value></value>
          </property>
        </property>
        <property name="frame_id" type="string" description="transform frame with which this data is associated">
          <value></value>
        </property>
      </property>
      <property name="height" type="uint32" description="image height, that is, number of rows">
        <value></value>
      </property>
      <property name="width" type="uint32" description="image width, that is, number of columns">
        <value></value>
      </property>
      <property name="encoding" type="string" description="encoding of pixels channel meaning, ordering, size">
        <value></value>
      </property>
      <property name="is_bigendian" type="uint8" description="is this data bigendian?">
        <value></value>
      </property>
      <property name="step" type="uint32" description="full row length in bytes">
        <value></value>
      </property>
      <property name="data" type="uint8[]" description="actual matrix data, size is (step * rows)">
        <value></value>
      </property>
    </topic>

    <topic name="right_image_rect_color" type="publish" description="color rectified" fileName="Image">
      <property name="header" type="header" fileName="Header">
        <property name="time" type="time" fileName="Time">
          <property name="sec" type="int32" unit="second">
            <value></value>
          </property>
          <property name="nanosec" type="uint32" unit="nanosecond">
            <value></value>
          </property>
        </property>
        <property name="frame_id" type="string" description="transform frame with which this data is associated">
          <value></value>
        </property>
      </property>
      <property name="height" type="uint32" description="image height, that is, number of rows">
        <value></value>
      </property>
      <property name="width" type="uint32" description="image width, that is, number of columns">
        <value></value>
      </property>
      <property name="encoding" type="string" description="encoding of pixels channel meaning, ordering, size">
        <value></value>
      </property>
      <property name="is_bigendian" type="uint8" description="is this data bigendian?">
        <value></value>
      </property>
      <property name="step" type="uint32" description="full row length in bytes">
        <value></value>
      </property>
      <property name="data" type="uint8[]" description="actual matrix data, size is (step * rows)">
        <value></value>
      </property>
    </topic>

    <topic name="set_camera_info" type="service" description="set camera calibration" fileName="SetCameraInfo">
      <property name="camera_info" type="cameraInfo" description="the camera info to store" fileName="CameraInfo">
        <property name="header" type="header" fileName="Header">
          <property name="time" type="time" fileName="Time">
            <property name="sec" type="int32" unit="second">
              <value></value>
            </property>
            <property name="nanosec" type="uint32" unit="nanosecond">
              <value></value>
            </property>
          </property>
          <property name="frame_id" type="string" description="transform frame with which this data is associated">
            <value></value>
          </property>
        </property>
        <property name="height" type="uint32" unit="pixel" description="image height, that is, number of rows">
          <value></value>
        </property>
        <property name="width" type="uint32" unit="pixel" description="image width, that is, number of columns">
          <value></value>
        </property>
        <property name="distortion_model" type="string">
          <value></value>
        </property>
        <property name="d" type="float64[]" description="the distortion parameters, size depending on the distortion model">
          <value></value>
        </property>
        <property name="k" type="float64[9]" description="intrinsic camera matrix for the raw (distorted) images">
          <value></value>
        </property>
        <property name="p" type="float64[12]" description="by convention, this matrix specifies the intrinsic (camera) matrix of the processed (rectified) image">
          <value></value>
        </property>
      </property>
      <response>
        <property name="success" type="boolean" description="true if the call succeeded">
          <value></value>
        </property>
        <property name="status_message" type="string" description="used to give details about success">
          <value></value>
        </property>
      </response>
    </topic>

    <topic name="left_set_camera_info" type="service" description="set left camera calibration" fileName="SetCameraInfo">
        <property name="camera_info" type="cameraInfo" description="the camera info to store" fileName="CameraInfo">
          <property name="header" type="header" fileName="Header">
            <property name="time" type="time" fileName="Time">
              <property name="sec" type="int32" unit="second">
                <value></value>
              </property>
              <property name="nanosec" type="uint32" unit="nanosecond">
                <value></value>
              </property>
            </property>
            <property name="frame_id" type="string" description="transform frame with which this data is associated">
              <value></value>
            </property>
          </property>
          <property name="height" type="uint32" unit="pixel" description="image height, that is, number of rows">
            <value></value>
          </property>
          <property name="width" type="uint32" unit="pixel" description="image width, that is, number of columns">
            <value></value>
          </property>
          <property name="distortion_model" type="string">
            <value></value>
          </property>
          <property name="d" type="float64[]" description="the distortion parameters, size depending on the distortion model">
            <value></value>
          </property>
          <property name="k" type="float64[9]" description="intrinsic camera matrix for the raw (distorted) images">
            <value></value>
          </property>
          <property name="p" type="float64[12]" description="by convention, this matrix specifies the intrinsic (camera) matrix of the processed (rectified) image">
            <value></value>
          </property>
        </property>
        <response>
          <property name="success" type="boolean" description="true if the call succeeded">
            <value></value>
          </property>
          <property name="status_message" type="string" description="used to give details about success">
            <value></value>
          </property>
        </response>
      </topic>

    <topic name="right_set_camera_info" type="service" description="set right camera calibration" fileName="SetCameraInfo">
      <property name="camera_info" type="cameraInfo" description="the camera info to store" fileName="CameraInfo">
        <property name="header" type="header" fileName="Header">
          <property name="time" type="time" fileName="Time">
            <property name="sec" type="int32" unit="second">
              <value></value>
            </property>
            <property name="nanosec" type="uint32" unit="nanosecond">
              <value></value>
            </property>
          </property>
          <property name="frame_id" type="string" description="transform frame with which this data is associated">
            <value></value>
          </property>
        </property>
        <property name="height" type="uint32" unit="pixel" description="image height, that is, number of rows">
          <value></value>
        </property>
        <property name="width" type="uint32" unit="pixel" description="image width, that is, number of columns">
          <value></value>
        </property>
        <property name="distortion_model" type="string">
          <value></value>
        </property>
        <property name="d" type="float64[]" description="the distortion parameters, size depending on the distortion model">
          <value></value>
        </property>
        <property name="k" type="float64[9]" description="intrinsic camera matrix for the raw (distorted) images">
          <value></value>
        </property>
        <property name="p" type="float64[12]" description="by convention, this matrix specifies the intrinsic (camera) matrix of the processed (rectified) image">
          <value></value>
        </property>
      </property>
      <response>
        <property name="success" type="boolean" description="true if the call succeeded">
          <value></value>
        </property>
        <property name="status_message" type="string" description="used to give details about success">
          <value></value>
        </property>
      </response>
    </topic>

    <param name="frecuency_rate" type="int" unit="Hz/s" description="Related to audio_raw topic: audio sampling frecuency. Mandatory if audio_raw topic is added.">
      <value></value>
    </param>

    <param name="auto_calibration" type="bool" unit="[0/1]" description="Enable/disable automatic calibration.">
      <value></value>
    </param>

    <param name="light" type="bool" unit="[0/1]" description="If camera include a integrated light, enable/disable the light.">
      <value></value>
    </param>

    <param name="light_brightness" type="float" unit="percentage" description="If camera include a integrated light with the optional to control the brightness, adjust the brightness.">
      <value></value>
    </param>

    <param name="flash" type="bool" unit="[0/1]" description="If camera include a integrated flash, enable/disable flash.">
      <value></value>
    </param>

    <param name="auto_flash" type="bool" unit="Hz/s" description="If camera include a integrated flash, enable/disable flash automatic control.">
      <value></value>
    </param>

  </optional>

</module>

To create a ToF camera, the manufacturer will have to include the following content, apart from the common from all the 3D Cameras (described in HRIMComponent model: 3DCamera).

HRIM component model: 3DCamera - ToF camera
URI XML MODEL ABSTRACTION CLASS
M/O
SHORT DESCRIPTION
/hrim_sensor_3dcamera_<instance_id>/specs sensor/3dcamera/topics/specsTof.xml topic
(Pub)
M Device features.
/hrim_sensor_3dcamera_<instance_id>/depth sensor/3dcamera/topics/image.xml topic
(Pub)
M Depth values.
/hrim_sensor_3dcamera_<instance_id>/confidence sensor/3dcamera/topics/image.xml topic
(Pub)
M Confidence values.
/hrim_sensor_3dcamera_<instance_id>/intensity sensor/3dcamera/topics/cameraInfo.xml topic
(Pub)
O Intensity values.
/hrim_sensor_3dcamera_<instance_id>/distance sensor/3dcamera/topics/distance.xml topic
(Pub)
O Distance to an object.
/hrim_sensor_3dcamera_<instance_id>/set_camera_info sensor/3dcamera/topics/setCameraInfo.xml service O Set camera calibration.
Parameters
PARAMETER NAME DATA TYPE UNIT CLASS
M/O
SHORT DESCRIPTION
time_measurements double s O Related to distance topic
Time between measurements in seconds.
distance_min double m O Related to distance topic
The minimum distance to return in meters.
distance_max double m O Related to distance topic
The maximum distance to return in meters.
to toggle it's complete XML notation:
<?xml version="1.0"?>
<module name="3dcameratof" type="sensor" description="defines the messages to interact with a ToF 3d camera">

    <mandatory>

      {BASE}

      <topic name="specs" type="publish" description="defines the most important characteristic of the camera" fileName="SpecsToFCamera">
        <property name="header" type="header" fileName="Header">
          <property name="time" type="time" fileName="Time">
            <property name="sec" type="int32" unit="second">
              <value></value>
            </property>
            <property name="nanosec" type="uint32" unit="nanosecond">
              <value></value>
            </property>
          </property>
          <property name="frame_id" type="string" description="transform frame with which this data is associated">
            <value></value>
          </property>
        </property>
        <property name="resolution" type="string" unit="pixel" description="example: 752x480, 1280x1024">
          <value></value>
        </property>
        <property name="frame_rate" type="uint16" unit="frames per second" description="maximum possible frame rate">
          <value></value>
        </property>
        <property name="image_formats" type="string" description="example: mono8, rgb1, bayergrbg8">
          <value></value>
        </property>
        <property name="horizontal_fov" type="float32" unit="radian" description="horizontal field of view">
          <value></value>
        </property>
        <property name="vertical_fov" type="float32" unit="radian" description="vertical field of view">
          <value></value>
        </property>
      </topic>

      <topic name="point_cloud" type="publish" description="environment point cloud" fileName="PointCloud">
        <property name="header" type="header" fileName="Header">
          <property name="time" type="time" fileName="Time">
            <property name="sec" type="int32" unit="second">
              <value></value>
            </property>
            <property name="nanosec" type="uint32" unit="nanosecond">
              <value></value>
            </property>
          </property>
          <property name="frame_id" type="string" description="transform frame with which this data is associated">
            <value></value>
          </property>
        </property>
        <property name="height" type="uint32" description="point cloud structure height, if it's unordered height is 1">
          <value></value>
        </property>
        <property name="width" type="uint32" description="point cloud structure width, if it's unordered width is the length of the cloud">
          <value></value>
        </property>
        <property name="fields" type="pointField[]" description="describes the channels and their layout in the binary data blob" fileName="PointField">
          <property name="datatype" type="uint8" unit="enum" enum='{"INT8" : 1 , "UINT8" : 2 , "INT16" : 3 , "UINT16" : 4 , "INT32" : 5 , "UINT32" : 6 , "FLOAT32" : 7 , "FLOAT64" : 8}' description="device classification">
            <value></value>
          </property>
          <property name="name" type="string" description="name of field">
            <value></value>
          </property>
          <property name="offset" type="uint32" description="offset from start of point struct">
            <value></value>
          </property>
          <property name="count" type="uint32" description="how many elements in the field">
            <value></value>
          </property>
        </property>
        <property name="is_bigendian" type="boolean" description="is this data bigendian?">
          <value></value>
        </property>
        <property name="point_step" type="uint32" description="length of a point in bytes">
          <value></value>
        </property>
        <property name="row_step" type="uint32" description="length of a row in bytes">
          <value></value>
        </property>
        <property name="data" type="uint8[]" description="actual point data, size is (row_step * height)">
          <value></value>
        </property>
        <property name="is_dense" type="boolean" description="true if there are no invalid points">
          <value></value>
        </property>
      </topic>

      <topic name="depth" type="publish" description="depth values" fileName="Image">
        <property name="header" type="header" fileName="Header">
          <property name="time" type="time" fileName="Time">
            <property name="sec" type="int32" unit="second">
              <value></value>
            </property>
            <property name="nanosec" type="uint32" unit="nanosecond">
              <value></value>
            </property>
          </property>
          <property name="frame_id" type="string" description="transform frame with which this data is associated">
            <value></value>
          </property>
        </property>
        <property name="height" type="uint32" description="image height, that is, number of rows">
          <value></value>
        </property>
        <property name="width" type="uint32" description="image width, that is, number of columns">
          <value></value>
        </property>
        <property name="encoding" type="string" description="encoding of pixels channel meaning, ordering, size">
          <value></value>
        </property>
        <property name="is_bigendian" type="uint8" description="is this data bigendian?">
          <value></value>
        </property>
        <property name="step" type="uint32" description="full row length in bytes">
          <value></value>
        </property>
        <property name="data" type="uint8[]" description="actual matrix data, size is (step * rows)">
          <value></value>
        </property>
      </topic>

      <topic name="confidence" type="publish" description="confidence values" fileName="Image">
        <property name="header" type="header" fileName="Header">
          <property name="time" type="time" fileName="Time">
            <property name="sec" type="int32" unit="second">
              <value></value>
            </property>
            <property name="nanosec" type="uint32" unit="nanosecond">
              <value></value>
            </property>
          </property>
          <property name="frame_id" type="string" description="transform frame with which this data is associated">
            <value></value>
          </property>
        </property>
        <property name="height" type="uint32" description="image height, that is, number of rows">
          <value></value>
        </property>
        <property name="width" type="uint32" description="image width, that is, number of columns">
          <value></value>
        </property>
        <property name="encoding" type="string" description="encoding of pixels channel meaning, ordering, size">
          <value></value>
        </property>
        <property name="is_bigendian" type="uint8" description="is this data bigendian?">
          <value></value>
        </property>
        <property name="step" type="uint32" description="full row length in bytes">
          <value></value>
        </property>
        <property name="data" type="uint8[]" description="actual matrix data, size is (step * rows)">
          <value></value>
        </property>
      </topic>

      <topic name="intensity" type="publish" description="intensity values" fileName="Image">
        <property name="header" type="header" fileName="Header">
          <property name="time" type="time" fileName="Time">
            <property name="sec" type="int32" unit="second">
              <value></value>
            </property>
            <property name="nanosec" type="uint32" unit="nanosecond">
              <value></value>
            </property>
          </property>
          <property name="frame_id" type="string" description="transform frame with which this data is associated">
            <value></value>
          </property>
        </property>
        <property name="height" type="uint32" description="image height, that is, number of rows">
          <value></value>
        </property>
        <property name="width" type="uint32" description="image width, that is, number of columns">
          <value></value>
        </property>
        <property name="encoding" type="string" description="encoding of pixels channel meaning, ordering, size">
          <value></value>
        </property>
        <property name="is_bigendian" type="uint8" description="is this data bigendian?">
          <value></value>
        </property>
        <property name="step" type="uint32" description="full row length in bytes">
          <value></value>
        </property>
        <property name="data" type="uint8[]" description="actual matrix data, size is (step * rows)">
          <value></value>
        </property>
      </topic>

      <param name="frame_id" type="string" description="Sets the TF frame from which the camera is publishing.">
        <value></value>
      </param>

      <param name="width" type="int" unit="px" description="Resolution: width (width x height)">
        <value></value>
      </param>

      <param name="height" type="int" unit="px" description="Resolution: height (width x height)">
        <value></value>
      </param>

      <param name="frame_rate" type="int" unit="fps" description="Refresh rate.">
        <value></value>
      </param>

      <param name="image_format" type="string" description="Possible values are: 'rgb8', 'rgba8', 'rgb16', 'rgba16', 'bgr8', 'bgra8', 'bgr16', 'bgra16', 'mono8', 'mono16', 'bayerrggb8', 'bayerbggr8', 'bayergbrg8', 'bayergrbg8', 'bayerrggb16', 'bayerbggr16', 'bayergbrg16', 'bayergrbg16'.">
        <value></value>
      </param>

    </mandatory>

    <optional>

      <topic name="audio_raw" type="publish" description="integrated microphone" fileName="Audio">
        <property name="header" type="header" fileName="Header">
          <property name="time" type="time" fileName="Time">
            <property name="sec" type="int32" unit="second">
              <value></value>
            </property>
            <property name="nanosec" type="uint32" unit="nanosecond">
              <value></value>
            </property>
          </property>
          <property name="frame_id" type="string" description="transform frame with which this data is associated">
            <value></value>
          </property>
        </property>
        <property name="frequency" type="uint16" unit="frequency" description="current frequency of the audio interface">
          <value></value>
        </property>
        <property name="data" type="int16[]" description="interlaced data of the audio buffer">
          <value></value>
        </property>
      </topic>

      <topic name="reconfiguration" type="publish" description="dynamic reconfiguration of H-ROS systems" fileName="Reconfiguration">
        <property name="header" type="header" fileName="Header">
          <property name="time" type="time" fileName="Time">
            <property name="sec" type="int32" unit="second">
              <value></value>
            </property>
            <property name="nanosec" type="uint32" unit="nanosecond">
              <value></value>
            </property>
          </property>
          <property name="frame_id" type="string" description="transform frame with which this data is associated">
            <value></value>
          </property>
        </property>
        <property name="orientation" type="quaternion" fileName="Quaternion">
          <property name="x" type="float64">
            <value></value>
          </property>
          <property name="y" type="float64">
            <value></value>
          </property>
          <property name="z" type="float64">
            <value></value>
          </property>
          <property name="w" type="float64">
            <value></value>
          </property>
        </property>
        <property name="orientation_covariance" type="float64[9]">
          <value></value>
        </property>
        <property name="angular_velocity" type="vector3" fileName="Vector3">
          <property name="x" type="float64">
            <value></value>
          </property>
          <property name="y" type="float64">
            <value></value>
          </property>
          <property name="z" type="float64">
            <value></value>
          </property>
        </property>
        <property name="angular_velocity_covariance" type="float64[9]">
          <value></value>
        </property>
        <property name="linear_acceleration" type="vector3" fileName="Vector3">
          <property name="x" type="float64">
            <value></value>
          </property>
          <property name="y" type="float64">
            <value></value>
          </property>
          <property name="z" type="float64">
            <value></value>
          </property>
        </property>
        <property name="linear_acceleration_covariance" type="float64[9]">
          <value></value>
        </property>
      </topic>

      <topic name="distance" type="publish" description="distance from the object" fileName="Distance">
        <property name="header" type="header" fileName="Header">
          <property name="time" type="time" fileName="Time">
            <property name="sec" type="int32" unit="second">
              <value></value>
            </property>
            <property name="nanosec" type="uint32" unit="nanosecond">
              <value></value>
            </property>
          </property>
          <property name="frame_id" type="string" description="transform frame with which this data is associated">
            <value></value>
          </property>
        </property>
        <property name="range_min" type="float32" unit="metre" description="minimum range value">
          <value></value>
        </property>
        <property name="range_max" type="float32" unit="metre" description="maximum range value">
          <value></value>
        </property>
        <property name="time_measurements" type="float32" unit="second" description="time between measurements">
          <value></value>
        </property>
        <property name="distance" type="float32" unit="metre" description="range data">
          <value></value>
        </property>
      </topic>

      <topic name="set_camera_info" type="service" description="set camera calibration" fileName="SetCameraInfo">
        <property name="camera_info" type="cameraInfo" description="the camera info to store" fileName="CameraInfo">
          <property name="header" type="header" fileName="Header">
            <property name="time" type="time" fileName="Time">
              <property name="sec" type="int32" unit="second">
                <value></value>
              </property>
              <property name="nanosec" type="uint32" unit="nanosecond">
                <value></value>
              </property>
            </property>
            <property name="frame_id" type="string" description="transform frame with which this data is associated">
              <value></value>
            </property>
          </property>
          <property name="height" type="uint32" unit="pixel" description="image height, that is, number of rows">
            <value></value>
          </property>
          <property name="width" type="uint32" unit="pixel" description="image width, that is, number of columns">
            <value></value>
          </property>
          <property name="distortion_model" type="string">
            <value></value>
          </property>
          <property name="d" type="float64[]" description="the distortion parameters, size depending on the distortion model">
            <value></value>
          </property>
          <property name="k" type="float64[9]" description="intrinsic camera matrix for the raw (distorted) images">
            <value></value>
          </property>
          <property name="p" type="float64[12]" description="by convention, this matrix specifies the intrinsic (camera) matrix of the processed (rectified) image">
            <value></value>
          </property>
        </property>
        <response>
          <property name="success" type="boolean" description="true if the call succeeded">
            <value></value>
          </property>
          <property name="status_message" type="string" description="used to give details about success">
            <value></value>
          </property>
        </response>
      </topic>

      <param name="frecuency_rate" type="int" unit="Hz/s" description="Related to audio_raw topic: audio sampling frecuency. Mandatory if audio_raw topic is added.">
        <value></value>
      </param>

      <param name="auto_calibration" type="bool" unit="[0/1]" description="Enable/disable automatic calibration.">
        <value></value>
      </param>

      <param name="light" type="bool" unit="[0/1]" description="If camera include a integrated light, enable/disable the light.">
        <value></value>
      </param>

      <param name="light_brightness" type="float" unit="percentage" description="If camera include a integrated light with the optional to control the brightness, adjust the brightness.">
        <value></value>
      </param>

      <param name="flash" type="bool" unit="[0/1]" description="If camera include a integrated flash, enable/disable flash.">
        <value></value>
      </param>

      <param name="auto_flash" type="bool" unit="Hz/s" description="If camera include a integrated flash, enable/disable flash automatic control.">
        <value></value>
      </param>

      <param name="time_measurements" type="double" unit="second" description="time between measurements">
        <value></value>
      </param>

      <param name="distance_min" type="double" unit="metre" description="the minimum distance to return">
        <value></value>
      </param>

      <param name="distance_max" type="double" unit="metre" description="the maximum distance to return">
        <value></value>
      </param>

    </optional>

</module>