Giter Site home page Giter Site logo

sam-xl / message_serialization Goto Github PK

View Code? Open in Web Editor NEW

This project forked from swri-robotics/message_serialization

0.0 1.0 0.0 37 KB

A utility for serializing C++ structures (specifically ROS messages) into YAML and binary formatted files

License: Apache License 2.0

CMake 2.40% C++ 90.45% Python 7.14%

message_serialization's Introduction

message_serialization

license - Apache 2.0

A header-only utility for serializing C++ structures (specifically ROS messages) into YAML-formatted and binary-formatted files that can be loaded to/from disk

Usage

// Serialization headers
#include <message_serialization/serialize.h>
#include <message_serialization/binary_serialization.h>

// Datatype-specific serialization header
#include <message_serialization/geometry_msgs_serialization.h>

int main(int argc, char** argv)
{
  // Create a structure to serialize
  geometry_msgs::PoseStamped ps;
  ps.header.frame = "world";
  ps.header.stamp = ros::Time::now();
  ...

  const std::string filename = "/path/to/save/dir/file.yaml";

  // YAML Serialization
  // Serialize the message
  if(!message_serialization::serialize(filename, ps))
    return -1;

  // De-serialize the message
  geometry_msgs::Pose new_ps;
  if(!message_serialization::deserialize(filename, new_ps))
    return -1;
    
  // Binary serialization (ROS messages only)
  // Serialize the message
  if(!message_serialization::serializeToBinary(filename, ps))
    return -1;

  // De-serialize the message
  if(!message_serialization::deserializeFromBinary(filename, new_ps))
    return -1;
    
  return 0;
}

Customization

Any custom C++ structure can be serialized to YAML with this library, provided that a specific template structure for the custom datatype be specialized in the YAML namespace:

struct CustomStruct;

namespace YAML
{
  template<>
  struct convert<CustomStruct>
  {
    static Node encode(const CustomStruct& rhs);
    static bool decode(const Node& node, CustomStruct& rhs);
  };
}

See the implementations in the include directory for examples on how to implement this structure for a custom data type.

message_serialization's People

Contributors

drchrislewis avatar marip8 avatar smith-doug avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.