Sure! The compression techniques are primarily derived from the original repository at GitHub - dheera/rosboard: ROS node that turns your robot into a web server to visualize ROS topics, which applies different compression methods depending on the data type.

For image topics and occupancy grids:

  • Everything is converted to uint8.
  • If the image exceeds certain dimensions, it is subsampled.
  • For image topics, it is sent as a JPG-compressed image. For occupancy grid topics, it is sent as a PNG-compressed image to avoid losing information.

For laser scan and PointCloud2 topics:

  • The data is converted to uint16 to save space.
  • For PointCloud topics:
    • If there are more than approximately 65k points, it is subsampled to 65k.
    • The point clouds are trimmed to only send xyz fields.