Gazebo DataPacksΒΆ

The JSON implementation always uses JsonDataPack to exchange data with TFs. This datapack can contain arbitrary data in a JSON object. The gRPC implementation uses Protobuf DataPacks. Below are listed the protobuf message definitions used by the Gazebo engine:

syntax = "proto3";

package Gazebo;

/*
 * Data coming from gazebo camera datapack
 */
message Camera
{
    uint32 imageWidth  = 1;
    uint32 imageHeight = 2;
    uint32 imageDepth  = 3;
    bytes  imageData   = 4;
}

/*
 * Data coming from gazebo link datapack
 */
message Link
{
    repeated float position        = 1;
    repeated float rotation        = 2;
    repeated float linearVelocity  = 3;
    repeated float angularVelocity = 4;
}

/*
 * Data coming from gazebo model datapack
 */
message Model
{
    repeated float position        = 1;
    repeated float rotation        = 2;
    repeated float linearVelocity  = 3;
    repeated float angularVelocity = 4;
}

/*
 * Data coming from gazebo joint datapack
 */
message Joint
{
    float position = 1;
    float velocity = 2;
    float effort   = 3;
}

// EOF

For each of these definitions, a datapack Python class is generated, see here for more details. Concretely, these datapack types are generated:

  • GazeboCameraDataPack: contains a camera image

  • GazeboJointDataPack: contains a single joint state information

  • GazeboLinkDataPack: contains a single link state information

  • GazeboModelDataPack: contains a single model state information

In the case of the JSON implementation, even if JsonDataPack, the content of the datapacks data will be the same, but stored as a JSON object. This content is summarized below for each datapack type.

The GazeboCameraDataPack consists of the following attributes: ============ ============================================= ================================================================== ========================== Attribute Description Python Type C type ============ ============================================= ================================================================== ========================== image_height Camera Image height uint32 uint32 image_width Camera Image width uint32 uint32 image_depth Camera Image depth. Number of bytes per pixel uint8 uint32 image_data Camera Image data. 1-D array of pixel data numpy.array(image_height * image_width * image_depth, numpy.uint8) std::vector<unsigned char> ============ ============================================= ================================================================== ==========================

The GazeboJointDataPack consists of the following attributes: ========= =============================== =========== ====== Attribute Description Python Type C type ========= =============================== =========== ====== position Joint angle position (in rad) float float velocity Joint angle velocity (in rad/s) float float effort Joint angle effort (in N) float float ========= =============================== =========== ======

The GazeboLinkDataPack consists of the following attributes: ========= =========================== ============================= =================== Attribute Description Python Type C type ========= =========================== ============================= =================== pos Link Position numpy.array(3, numpy.float32) std::array<float,3> rot Link Rotation as quaternion numpy.array(4, numpy.float32) std::array<float,4> lin_vel Link Linear Velocity numpy.array(3, numpy.float32) std::array<float,3> ang_vel Link Angular Velocity numpy.array(3, numpy.float32) std::array<float,3> ========= =========================== ============================= ===================

Each of this attributes can be accessed under their respective names from the data attribute of each DataPack type.