Message Types and Definitions

2D LiDAR

ROS type name: sensor_msgs/LaserScan

This message type represents a single scan from a planar laser range-finder or LiDAR. It is commonly named the /scan topic in ROS or similar.

# Single scan from a planar laser range-finder
#
# If you have another ranging device with different behavior (e.g. a sonar
# array), please find or create a different message, since applications
# will make fairly laser-specific assumptions about this data

Header header            # timestamp in the header is the acquisition time of 
                         # the first ray in the scan.
                         #
                         # in frame frame_id, angles are measured around 
                         # the positive Z axis (counterclockwise, if Z is up)
                         # with zero angle being forward along the x axis
                         
float32 angle_min        # start angle of the scan [rad]
float32 angle_max        # end angle of the scan [rad]
float32 angle_increment  # angular distance between measurements [rad]

float32 time_increment   # time between measurements [seconds] - if your scanner
                         # is moving, this will be used in interpolating position
                         # of 3d points
float32 scan_time        # time between scans [seconds]

float32 range_min        # minimum range value [m]
float32 range_max        # maximum range value [m]

float32[] ranges         # range data [m] (Note: values < range_min or > range_max should be discarded)
float32[] intensities    # intensity data [device-specific units].  If your
                         # device does not provide intensities, please leave
                         # the array empty.
{
    "angle_increment": 0.017501922324299812,
    "angle_max": 6.28318977355957,
    "angle_min": 0,
    "header": {
        "stamp": {
            "secs": 657,
            "nsecs": 750000000
        },
        "frame_id": "laser_link",
        "seq": 3285
    },
    "intensities": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    "range_max": 3.5,
    "range_min": 
        0.11999999731779099,
        "ranges": [ 0.7950005531311035, 0.7894418835639954, 0.7684813141822815, 0.761862576007843, 0.7738723158836365, 0.7601327896118164, 0.7441374659538269, 0.7435969710350037, 0.7598412036895752, 0.7460617423057556, 0.7394567728042603, 0.7431136965751648, 0.7527715563774109, 0.7740248441696167, 0.7899294495582581, 0.8003103733062744, 0.8202641606330872, 0.8550518751144409, "inf", "inf", "inf", "inf", "inf", "inf", "inf", "inf", "inf", "inf", "inf", "inf", "inf", 1.7447528839111328, 1.7031441926956177, 1.6829036474227905, 1.6644126176834106, 1.6648837327957153, 1.666967511177063, 1.6816198825836182, 1.7236058712005615, 1.6981703042984009, 1.7901086807250977, 3.250783920288086, 3.2429146766662598, 3.2209506034851074, 3.2264585494995117, 3.158393383026123, 3.0155527591705322, 2.857853889465332, 2.725027084350586, 2.607464075088501, 2.598215341567993, 2.5952160358428955, 2.5902278423309326, 2.575406074523926, 2.5923268795013428, 2.5825014114379883, 2.5889174938201904, 2.593181610107422, 2.5299131870269775, 2.459052085876465, 2.3913180828094482, 2.3365225791931152, 2.2530102729797363, 2.1994032859802246, 2.1605770587921143, 2.1053149700164795, 2.06172251701355, 2.0250561237335205, 1.9743691682815552, 1.9265048503875732, 1.889814853668213, 1.8561712503433228, 1.8404797315597534, 1.8090543746948242, 1.7551158666610718, 1.7381503582000732, 1.7281291484832764, 1.688286542892456, 1.6575020551681519, 1.6378389596939087, 1.6361814737319946, 1.5980931520462036, 1.5790692567825317, 1.5629605054855347, 1.513774037361145, 1.5492085218429565, 1.4939650297164917, 1.4806931018829346, 1.4903874397277832, 1.4444732666015625, 1.450504183769226, 1.4164390563964844, 1.4188967943191528, 1.4033644199371338, 1.3932912349700928, 1.334943413734436, 1.1869573593139648, 1.053850769996643, 0.9579646587371826, 0.8768236041069031, 0.8184201121330261, 0.7869722843170166, 0.7868320941925049, 0.7844973802566528, 0.7784674763679504, 0.7692747116088867, 0.759182870388031, 0.7689201235771179, 0.771082878112793, 0.7671195864677429, 0.7456152439117432, 0.7519006133079529, 0.7564024329185486, 0.7562610507011414, 0.7286983132362366, 0.7468292117118835, 0.7526797652244568, 0.7467729449272156, 0.7610316872596741, 0.7614824175834656, 0.7585018277168274, 0.7652218341827393, 0.7307511568069458, 0.751261830329895, 0.7662934064865112, 0.7496644854545593, 0.7692466974258423, 0.7604299783706665, 0.7624736428260803, 0.7649731040000916, 0.7642573714256287, 0.7820376753807068, 0.7545164823532104, 0.7880922555923462, 0.7967039942741394, 0.7968818545341492, 0.777519166469574, 0.7938107252120972, 0.8110778331756592, 0.8193530440330505, 0.8334575295448303, 0.8189128041267395, 0.820452868938446, 0.8461050987243652, 0.8356667160987854, 0.8377285599708557, 0.8127098083496094, 0.8147003054618835, 0.7920698523521423, 0.7824835181236267, 0.7803969979286194, 0.7735041379928589, 0.783761203289032, 0.7580201625823975, 0.7652801871299744, 0.7752931714057922, 0.7591106295585632, 0.7461691498756409, 0.7363073229789734, 0.73241126537323, 0.7359424829483032, 0.7408806681632996, 0.7373633980751038, 0.7179080247879028, 0.7014530301094055, 0.7107729911804199, 0.7076685428619385, 0.7003396153450012, 0.7307503819465637, 0.6969445943832397, 0.7076882123947144, 0.7177356481552124, 0.7151933908462524, 0.7037973999977112, 0.6922720670700073, 0.7013928890228271, 0.7157320976257324, 0.6925966143608093, 0.6957764625549316, 0.7026306390762329, 0.7024639248847961, 0.6984789371490479, 0.7116872668266296, 0.7141432762145996, 0.7071216702461243, 0.7060350775718689, 0.6971111297607422, 0.7062616348266602, 0.7065064907073975, 0.7363827228546143, 0.7011379599571228, 0.7324410676956177, 0.7349377870559692, 0.7311235666275024, 0.7258230447769165, 0.7425317764282227, 0.7359568476676941, 0.7415457963943481, 0.7447777986526489, 0.7721859812736511, 0.7751196622848511, 0.7573168873786926, 0.7915778756141663, 0.7708859443664551, 0.8036869168281555, 0.7944707870483398, 0.7931545972824097, 0.8233523368835449, 0.8329123854637146, 0.8276852965354919, 0.8362759351730347, 0.8326107859611511, 0.8480841517448425, 0.8844148516654968, 0.8756383657455444, 0.8942609429359436, 0.884156346321106, 0.9140357971191406, 0.9299178123474121, 0.9342712163925171, 0.9459738731384277, 1.0029348134994507, 0.9668092131614685, 1.0036027431488037, 1.0266430377960205, 1.0426498651504517, 1.0614675283432007, 1.1007894277572632, 1.0956932306289673, 1.1383461952209473, 1.1550230979919434, 1.1925500631332397, 1.2204627990722656, 1.2561402320861816, 1.284763216972351, 1.3327322006225586, 1.3506497144699097, 1.3976939916610718, 1.4112821817398071, 1.4165019989013672, 1.4223272800445557, 1.4292879104614258, 1.4278314113616943, 1.4183601140975952, 1.4506230354309082, 1.4358969926834106, 1.4593167304992676, 1.4309780597686768, 1.4327895641326904, 1.46189284324646, 1.4417619705200195, 1.4511510133743286, 1.475312352180481, 1.5107073783874512, 1.646065592765808, 1.789926528930664, 1.9508910179138184, 2.0870275497436523, 2.1152961254119873, 2.1159849166870117, 2.11689829826355, 2.1445400714874268, 2.1543829441070557, 2.1770620346069336, 2.201639413833618, 2.2200160026550293, 2.2281997203826904, 2.2673146724700928, 2.2852118015289307, 2.305720329284668, 2.3519654273986816, 2.3684468269348145, 2.4035680294036865, 2.427304744720459, 2.477572441101074, 2.4953560829162598, 2.5255117416381836, 2.5663318634033203, 2.612203598022461, 2.6305861473083496, 0.8388868570327759, 0.7777251601219177, 0.7829399704933167, 0.743518590927124, 0.7333574295043945, 0.7084512114524841, 0.7118614912033081, 0.7088571786880493, 0.6924558281898499, 0.7140622138977051, 0.7096748948097229, 0.7139534950256348, 0.7324971556663513, 0.7187739610671997, 0.7270496487617493, 0.7227256298065186, 0.755743145942688, 0.7579031586647034, 0.7777964472770691, 0.8051527738571167, 3.481182336807251, 3.4742095470428467, 3.468630790710449, "inf", "inf", "inf", "inf", 1.7641273736953735, 1.7254213094711304, 1.7256498336791992, 1.722413182258606, 1.7036885023117065, 1.7254127264022827, 1.7202057838439941, 1.761865258216858, 1.7965549230575562, 2.8018150329589844, 2.793292999267578, 2.802414894104004, 2.8366787433624268, "inf", "inf", "inf", "inf", "inf", "inf", "inf", "inf", "inf", "inf", "inf", "inf", "inf", "inf", "inf", "inf", 2.86452579498291, 2.8054697513580322, 2.7987325191497803, 2.7906806468963623, 2.838015079498291, 1.80756413936615, 1.7865313291549683, 1.7427916526794434, 1.741509199142456, 1.7158632278442383, 1.7311015129089355, 1.744484782218933, 1.7596591711044312, 1.8121733665466309, "inf", "inf", "inf", "inf", "inf", 3.2458860874176025, 3.182781934738159, 3.2032737731933594, 0.8198113441467285, 0.7954549193382263],
    "scan_time": 0,
    "time_increment": 0
}

Transformations

ROS type name: tf/tfMessage

Transformations (also known as transforms) represent the spatial relations between frames on a robot. Frames are useful for knowing the relative position of data sources including maps, robot position, and LiDAR. For example, LiDAR data might be reported with respect to a LiDAR mount. To render this data in 3D alongside the map and robot, transforms are required.

The Freedom Robotics platform parses transformations in a buffer and uses the top of the tree as the world frame in the 3D view. The top of the tree in most cases is the map frame, but other organizations are possible as well. Data like LiDAR, paths, maps, etc. must be associated with a frame that is connected to the top of the tree through a series of transformations.

Frames are represented as gray boxes and transformations as red arrows. Each transformation expresses the location between two frames.Frames are represented as gray boxes and transformations as red arrows. Each transformation expresses the location between two frames.

Frames are represented as gray boxes and transformations as red arrows. Each transformation expresses the location between two frames.

Transformations can also be thought of as edges between frames in a graph. It is best to think of them this way - a frame has a name and exists somewhere in space relative to another frame.

To drive this point home, there is no single "transformation" for the robot: there is a frame for the bottom of the robot called base_link that exists relative to other frames. Transformations express these relations. To avoid confusion, always make sure you use two frames in a sentence when referring to a transformation (e.g. "this is the transform from A to B").

This example message is a list of these transformations and the example communicates where one frame is with respect to another. e.g. where the base_footprint is with respect to the base_link where these frame names call out specific portions of the robot.

geometry_msgs/TransformStamped[] transforms
  # This expresses a transform from coordinate frame header.frame_id
  # to the coordinate frame child_frame_id
  std_msgs/Header header
    uint32 seq
    time stamp
    string frame_id
  string child_frame_id
  geometry_msgs/Transform transform
    geometry_msgs/Vector3 translation
      float64 x
      float64 y
      float64 z
    geometry_msgs/Quaternion rotation
      float64 x
      float64 y
      float64 z
      float64 w
{
    "transforms": [
        {
            "header": {
                "stamp": {
                    "secs": 0,
                    "nsecs": 102000000
                },
                "frame_id": "base_footprint",
                "seq": 0
            },
            "transform": {
                "translation": {
                    "y": 0,
                    "x": 0,
                    "z": 0
                },
                "rotation": {
                    "y": 0,
                    "x": 0,
                    "z": 0,
                    "w": 1
                }
            },
            "child_frame_id": "base_link"
        },
        {
            "header": {
                "stamp": {
                    "secs": 0,
                    "nsecs": 102000000
                },
                "frame_id": "base_link",
                "seq": 0
            },
            "transform": {
                "translation": {
                    "y": -0.011,
                    "x": 0.073,
                    "z": 0.084
                },
                "rotation": {
                    "y": 0,
                    "x": 0,
                    "z": 0,
                    "w": 1
                }
            },
            "child_frame_id": "camera_link"
        }
    ]
}

Relocalization

ROS type name: geometry_msgs/PoseWithCovarianceStamped

To relocalize a robot, you need to provide a guess of its actual location. This guess is a 3D pose (position and orientation). Because the guess is imperfect, it also includes covariance. In the example message below, x and y have a variance of 0.51 meters while theta about z (the angle of a mobile robot) is 0.6 radians. This can then be used by your robot algorithm to interpret the accuracy of the newly localized position.

std_msgs/Header header
  # Standard metadata for higher-level stamped data types.
  # This is generally used to communicate timestamped data 
  # in a particular coordinate frame.
  uint32 seq
  time stamp
  string frame_id
# A pose in free space with uncertainty.
geometry_msgs/PoseWithCovariance pose
    # A representation of pose in free space, composed of position and orientation. 
  geometry_msgs/Pose pose
    geometry_msgs/Point position
      float64 x
      float64 y
      float64 z
    geometry_msgs/Quaternion orientation
      float64 x
      float64 y
      float64 z
      float64 w
  # Row-major representation of the 6x6 covariance matrix
  # The orientation parameters use a fixed-axis representation.
  # In order, the parameters are:
  # (x, y, z, rotation about X axis, rotation about Y axis, rotation about Z axis)
  float64[36] covariance
{
    "header": {
        "stamp": {
            "secs": 0,
            "nsecs": 0
        },
        "frame_id": "map",
        "seq": 0
    },
    "pose": {
        "pose": {
            "position": {
                "y": 2.00910298882,
                "x": 0.599190399465,
                "z": -0.0049999999999
            },
            "orientation": {
                "y": 0,
                "x": 0,
                "z": 0.954572300951,
                "w": -0.297979399049
            }
        },
        "covariance": [
            0.51, 0, 0, 0, 0, 0,
            0, 0.51, 0, 0, 0, 0,
            0, 0   , 0, 0, 0, 0,
            0, 0   , 0, 0, 0, 0,
            0, 0   , 0, 0, 0, 0,
            0, 0   , 0, 0, 0, 0.6
        ]
    }
}

Navigation Goal

ROS type name geometry_msgs/Pose

A navigation goal is represented as a pose on a map expressed in the pose injection frame on a specified topic. When you press "MANUAL" while navigating to a goal, the system will send in a zero velocity command on your "command velocity" topic and a blank goal on "/move_base/cancel".

Odometry

ROS type name: nav_msgs/Odometry

# This represents an estimate of a position and velocity in free space.  
# The pose in this message should be specified in the coordinate frame given by header.frame_id.
# The twist in this message should be specified in the coordinate frame given by the child_frame_id
std_msgs/Header header
  uint32 seq
  time stamp
  string frame_id
string child_frame_id
geometry_msgs/PoseWithCovariance pose
    # This represents a pose in free space with uncertainty.
  geometry_msgs/Pose pose
    geometry_msgs/Point position
      float64 x
      float64 y
      float64 z
    geometry_msgs/Quaternion orientation
      float64 x
      float64 y
      float64 z
      float64 w
  # Row-major representation of the 6x6 covariance matrix
  # The orientation parameters use a fixed-axis representation.
  # In order, the parameters are:
  # (x, y, z, rotation about X axis, rotation about Y axis, rotation about Z axis)
  float64[36] covariance
geometry_msgs/TwistWithCovariance twist
# This expresses velocity broken into its angular and linear pieces in free space with uncertainty.
  geometry_msgs/Twist twist
    geometry_msgs/Vector3 linear
      float64 x
      float64 y
      float64 z
    geometry_msgs/Vector3 angular
      float64 x
      float64 y
      float64 z
  # Row-major representation of the 6x6 covariance matrix
  # The orientation parameters use a fixed-axis representation.
  # In order, the parameters are:
  # (x, y, z, rotation about X axis, rotation about Y axis, rotation about Z axis)
  float64[36] covariance
{
    "child_frame_id": "base_footprint",
    "header": {
        "stamp": {
            "secs": 657,
            "nsecs": 634000000
        },
        "frame_id": "odom",
        "seq": 19725
    },
    "pose": {
        "pose": {
            "position": {
                "y": 0.5796118782213237,
                "x": 1.789684999061749,
                "z": 0.008991409022354275
            },
            "orientation": {
                "y": 0.0004444874174162124,
                "x": 0.0015310623167277472,
                "z": -0.9606003417698319,
                "w": 0.27792884281916563
            }
        },
        "covariance": [
            0.00001, 0, 0, 0, 0, 0,
            0, 0.00001, 0, 0, 0, 0,
            0, 0, 1000000000000, 0, 0, 0,
            0, 0, 0, 1000000000000, 0, 0,
            0, 0, 0, 0, 1000000000000, 0,
            0, 0, 0, 0, 0, 0.001
        ]
    },
    "twist": {
        "twist": {
            "linear": {
                "y": 1.9841616479284418e-7,
                "x": -0.0000013723977956448537,
                "z": 0
            },
            "angular": {
                "y": 0,
                "x": 0,
                "z": 0.000006303564112996392
            }
        },
        "covariance": [
            0, 0, 0, 0, 0, 0,
            0, 0, 0, 0, 0, 0,
            0, 0, 0, 0, 0, 0,
            0, 0, 0, 0, 0, 0,
            0, 0, 0, 0, 0, 0,
            0, 0, 0, 0, 0, 0
        ]
    }
}

GPS Location

ROS type name: sensor_msgs/NavSatFix

# Navigation Satellite fix for any Global Navigation Satellite System
# Specified using the WGS 84 reference ellipsoid
Header header
    # sequence ID: unusued. default 0 is fine.
  uint32 seq
  # stamp specifies the ROS time for this measurement (the
  #        corresponding satellite time may be reported using the
  #        sensor_msgs/TimeReference message).
  #
  time stamp
  # frame_id is the frame of reference reported by the satellite
  #        receiver, usually the location of the antenna.  This is a
  #        Euclidean frame relative to the vehicle, not a reference
  #        ellipsoid.
  string frame_id

# satellite fix status information
NavSatStatus status
  # Navigation Satellite fix status for any Global Navigation Satellite System

  # Whether to output an augmented fix is determined by both the fix
  # type and the last time differential corrections were received.  A
  # fix is valid when status >= STATUS_FIX.
  int8 STATUS_NO_FIX =  -1        # unable to fix position
  int8 STATUS_FIX =      0        # unaugmented fix
  int8 STATUS_SBAS_FIX = 1        # with satellite-based augmentation
  int8 STATUS_GBAS_FIX = 2        # with ground-based augmentation

  int8 status

  # Bits defining which Global Navigation Satellite System signals were
  # used by the receiver.
  uint16 SERVICE_GPS =     1
  uint16 SERVICE_GLONASS = 2
  uint16 SERVICE_COMPASS = 4      # includes BeiDou.
  uint16 SERVICE_GALILEO = 8

  uint16 service

# Latitude [degrees]. Positive is north of equator; negative is south.
float64 latitude

# Longitude [degrees]. Positive is east of prime meridian; negative is west.
float64 longitude

# Altitude [m]. Positive is above the WGS 84 ellipsoid
# (quiet NaN if no altitude is available).
float64 altitude

# Position covariance [m^2] defined relative to a tangential plane
# through the reported position. The components are East, North, and
# Up (ENU), in row-major order.
#
# Beware: this coordinate system exhibits singularities at the poles.

float64[9] position_covariance

# If the covariance of the fix is known, fill it in completely. If the
# GPS receiver provides the variance of each measurement, put them
# along the diagonal. If only Dilution of Precision is available,
# estimate an approximate covariance from that.

uint8 COVARIANCE_TYPE_UNKNOWN = 0
uint8 COVARIANCE_TYPE_APPROXIMATED = 1
uint8 COVARIANCE_TYPE_DIAGONAL_KNOWN = 2
uint8 COVARIANCE_TYPE_KNOWN = 3

uint8 position_covariance_type
{
    "altitude": 0,
    "header": {
        "stamp": {
            "secs": 0,
            "nsecs": 0
        },
        "frame_id": "",
        "seq": 8791
    },
    "latitude": 37.78714,
    "longitude": -122.39199,
    "position_covariance": [
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0
    ],
    "position_covariance_type": 0,
    "status": {
        "status": 1,
        "service": 0
    }
}

Map (Occupancy Grid)

ROS type name: nav_msgs/OccupancyGrid

The Freedom Robotics platform views 2D maps as occupancy grids. Occupancy grids are like a greyscale image of the surroundings. They are a 2D grid map, in which each pixel (or cell) represents the probability of occupancy. Compressed images can be used to minimize transport overhead.

std_msgs/Header header
  # sequence ID: consecutively increasing ID, 0 default is fine.
  uint32 seq
  # Two-integer timestamp that is expressed as:
  # stamp.sec: seconds (stamp_secs) since epoch 
  # (in Python the variable is called 'secs')
  # stamp.nsec: nanoseconds since stamp_secs
  # (in Python the variable is called 'nsecs')
  # time-handling sugar is provided by the client library
  time stamp
  # Transformation frame this data is associated with
  string frame_id
# MetaData for the map: this hold basic information about the 
# characterists of the OccupancyGrid
nav_msgs/MapMetaData info
  # The time at which the map was loaded
  time map_load_time
  # The map resolution [m/cell]
  float32 resolution
  # Map width [cells]
  uint32 width
  # Map height [cells]
  uint32 height
  # The origin of the map [m, m, rad].  This is the real-world pose of the
  # cell (0,0) in the map.
  geometry_msgs/Pose origin
    # A representation of pose in free space, composed of position and orientation. 
    geometry_msgs/Point position
      float64 x
      float64 y
      float64 z
    geometry_msgs/Quaternion orientation
      float64 x
      float64 y
      float64 z
      float64 w
# The map data, in row-major order, starting with (0,0).  Occupancy
# probabilities are in the range [0,100].  Unknown is -1.
int8[] data
{
    "data": [],
    "data.__compressed.jpeg": "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",
    "header": {
        "stamp": {
            "secs": 0,
            "nsecs": 514000000
        },
        "frame_id": "map",
        "seq": 0
    },
    "info": {
        "origin": {
            "position": {
                "y": -10,
                "x": -10,
                "z": 0
            },
            "orientation": {
                "y": 0,
                "x": 0,
                "z": 0,
                "w": 1
            }
        },
        "width": 384,
        "map_load_time": {
            "secs": 0,
            "nsecs": 514000000
        },
        "resolution": 0.05000000074505806,
        "height": 384
    }
}