For the reliability and future strength of a data standard, it is essential that its serialization concept is watertight. When it comes to serialization, NDS relies on zserio. But why actually? What are the advantages of this format for NDS? Fabian Klebert, CEO at Klebert Engineering and NDS Technical Lead, has summarized the most important serialization aspects for NDS.
Let’s start with a classification: Serialization is vital for NDS to efficiently store, transmit, and exchange map data between different systems. It enables interoperability, improves performance, and ensures data integrity, all of which are essential for effective navigation and automated driving systems used in automotive applications.
NDS provides a standardized format for navigation map data that can be utilized by various car manufacturers, suppliers, and navigation systems. Serialization allows the map data to be represented in a consistent and machine-readable format, making it easier for different systems to understand and process the information. Standardizing the serialization format is necessary to achieve interoperability, enabling seamless exchange and usage of map data across different platforms.
Serialization mechanisms are techniques or methods used to convert data into a format that can be stored, transmitted, or shared across different systems or platforms. These mechanisms allow data objects or structures to be converted into a serialized form, which can be reconstructed back into their original form at a later time. In general, a distinction is made between textual serialization and binary serialization. The zserio serialization framework as well as Protocol Buffers (Protobuf) refer to binary serialization.
zserio is an open-source, high-performance serialization framework and interface definition language. It is designed to generate efficient code for various programming languages based on the defined data structures. Zserio generates highly optimized serialization and deserialization code, which allows for efficient storage and transmission of data. This is particularly useful when dealing with large datasets or when performance is a critical factor.
Furthermore, zserio can generate code for multiple programming languages, including C++, Java, and Python, amongst others. This enables interoperability between systems and platforms written in different languages. Zserio is designed to handle complex data structures and large-scale projects. It supports features such as packages, imports, and dependencies, which facilitate the organization and management of data definitions.
In direct comparison, the serialization framework Protobuf offers similar advantages to zserio. So why did NDS choose zserio and not Protobuf? First, when NDS.Classic was developed, there was no Open Source Protobuf available since it only started in 2008. So it actually came too late. Back then NDS decided on DataScript and Relational DataScript (RDS). After a reevaluation in 2018, when NDS.Live started, the choice fell on zserio. Key Performance Indicators included zserio’s features. Its code is usable in functional safe systems. In addition, aspects such as data size, encoding as well as decoding speed and user experience play an important role.
You can watch Fabian’s complete presentation here: https://youtu.be/BmoSp_UXDp8
Find out more about NDS.Live in the NDS.Live Developer Portal.
For more detailed information and documentation about Zserio, you can visit the official Zserio website at https://zserio.org/ or on Github at: https://github.com/ndsev/zserio.
Back to news →