GPS

HRIM defines a GPS as
A device that calculates geographical location by satellites.

So, apart from the common requirements (ID, Status, Power, Specs and Simulation, detailed in HRIM component model section), all GPS will contain a topic referring to publishing a position.

HRIM component model: GPS
URI XML MODEL ABSTRACTION CLASS
M/O
SHORT DESCRIPTION
/hrim_sensor_gps_<instance_id>/id generic/id.xml topic
(Pub)
M Component identification.
/hrim_sensor_gps_<instance_id>/status generic/status.xml topic
(Pub)
M How the module is working.
/hrim_sensor_gps_<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_gps_<instance_id>/specs_comm generic/specs_comm.xml topic
(Pub)
M Published the capabilities in term of communicaction that the component offers.
/hrim_sensor_gps_<instance_id>/state_comm generic/state_comm.xml topic
(Pub)
M Published the resources that the component is using at the moment.
/hrim_sensor_gps_<instance_id>/module_3d generic/module_3d.xml topic
(Pub)
M Ask for the 3D model of the HRIM component.
/hrim_sensor_gps_<instance_id>/module_urdf generic/module_urdf.xml topic
(Pub)
M Ask for the information of the HRIM component's 3D model.
/hrim_sensor_gps_<instance_id>/specs sensor/gps/topics/specs.xml topic
(Pub)
M Device features.
/hrim_sensor_gps_<instance_id>/position sensor/gps/topics/position.xml topic
(Pub)
M Robot position.
/hrim_sensor_gps_<instance_id>/state sensor/gps/topics/state.xml topic
(Pub)
M Notify the state, Navigation Satellite fix.
/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 Rangefinder is publishing.
satellite_min uint s M Minimum number of connected satellites to navigate autonomusly.

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

The XML notation would look like:

<?xml version="1.0"?>
<module name="gps" type="sensor" description="defines the messages to interact with a gps">
  <mandatory>

    {BASE}

    <topic name="specs" type="publish" description="device features" fileName="SpecsGPS">
      <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="channels" type="uint8" description="ammount of channels">
        <value></value>
      </property>
      <property name="frecuency" type="string" description="L1 or L2">
        <value></value>
      </property>
      <property name="min_update_rate" type="int32" unit="hertz" description="minimum update rate in Hertz">
        <value></value>
      </property>
      <property name="max_update_rate" type="int32" unit="hertz" description="maximum update rate in Hertz">
        <value></value>
      </property>
      <property name="max_altitude" type="float32" unit="metre" description="operational limit, maximum altitude in meters">
        <value></value>
      </property>
      <property name="max_velocity" type="int32" unit="metres per second" description="operational limit, maximum velocity in meters per second">
        <value></value>
      </property>
      <property name="gps_accuracy" type="float32" unit="metre" description="horizontal position accurary in meters">
        <value></value>
      </property>
      <property name="sbas_system" type="string[]" description="list of supported Satellite Based Augmentation System">
        <value></value>
      </property>
      <property name="sbas_accuracy" type="float32" unit="metre" description="accuracy with SBAS in meters">
        <value></value>
      </property>
    </topic>

    <topic name="position" type="publish" description="robot position" fileName="Position">
      <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="latitude" type="float64" unit="degree" description="positive is north of equator; negative is south">
        <value></value>
      </property>
      <property name="longitude" type="float64" unit="degree" description="positive is east of prime meridian; negative is west">
        <value></value>
      </property>
      <property name="altitude" type="float64" unit="metres" description="positive is above the WGS 84 ellipsoid (empty value if no altitude is available)">
        <value></value>
      </property>
      <property name="position_covariance" type="float64[9]" unit="metres squared" description="defined relative to a tangential plane through the reported position. The components are East, North, and Up (ENU), in row-major order">
        <value></value>
      </property>
      <property name="position_covariance_type" type="uint8" unit="enum" enum='{"COVARIANCE_TYPE_UNKNOWN" : 0, "COVARIANCE_TYPE_APPROXIMATED" : 1, "COVARIANCE_TYPE_DIAGONAL_KNOWN" : 2, "COVARIANCE_TYPE_KNOWN" : 3}'>
        <value></value>
      </property>
    </topic>

    <topic name="state" type="publish" description="notify the state, navigation satellite fix" fileName="StateGPS">
      <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="status" type="int8" unit="enum" enum='{"STATUS_NO_FIX" : -1, "STATUS_FIX" : 0, "STATUS_SBAS_FIX" : 1, "STATUS_GBAS_FIX" : 2}'>
        <value></value>
      </property>
      <property name="service" type="uint16" unit="enum" enum='{"SERVICE_GPS" : 1, "SERVICE_GLONASS" : 2, "SERVICE_COMPASS" : 4, "SERVICE_GALILEO" : 8}'>
        <value></value>
      </property>
    </topic>

    <param name="frame_id" type="string" description="tf frame from which the range_finder is publishing">
      <value></value>
    </param>

    <param name="satellite_min" type="uint" unit="second" description="minimum number of connected satellites to navigate autonomusly">
      <value></value>
    </param>

  </mandatory>
  <optional>

    <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>

  </optional>
</module>