Node Level Data Link Communication

Contact person:
Modern robotic systems come with a variety of decentralized sensor- and controlelektronics which frequently need to communicate with one another. The NDLCom protocol allows to exchange small packets of data between microcontrollers, FPGAs and a computer. Each participant is connected to one of its neighbours via a point-to-point connection and has to forward incoming messages according to the receiver address in the packet header. Implementations to receive, forward and decode messages exist in C/C++ and VHDL. The visualization, logging and exporting of received data is accomplished in a graphical user interfaces.
Keywords: Serial communication, OSI-Layer, Embedded, C, VHDL, Qt, CSV-Export
Status: active
Operating system: Linux, Embedded, FPGA
Programming languages: C, C++,Qt4, VHDL
Ownership: This software was developed by the DFKI as well as by the Robotics Research Group and the University of Bremen and is being further developed under this responsibility. For questions and suggestions, please refer to the contact persons.

Software description

Composition of a package (Source: DFKI GmbH)
Typical session of the Qt4 Gui (Source: DFKI GmbH)

Modern robotic systems are equipped with an increasing number of small decentralized computing devices. These are for example used to read sensors distributed across the system or for high-frequency control of motors. Connecting all these nodes in a packet based point-to-point network allows for flexible data transmission between all participants. NDLCom (Node Level Data Link Communication) defines a simple packet format for data exchange using serial interfaces, which needs fewer resources compared to traditional network technologies like IP. This allows microcontrollers or FPGAs with limited capabilities to communicate in a network.

The protocol uses HDLC-like frame marker to segment the serial data stream into packets. The header of each packet consists of 4 byte: One byte for sender and receiver respectively allow for up to 254 different addresses plus the additional "broadcast" address. The next byte is a packet-counter to enable detection of lost packages. The payload with a maximum capacity of 255 bytes is following the specification of the packet length. At the end, each packet is guarded by a 16Bit checksum to detect transmission errors. It is not supported to restore lost or damages packages, and each participant in the network has to be reachable by a unique path, circles are not permitted.

A graphical user interface written in Qt4 allows connection of a regular Linux computer to a NDLCom network. The software is able to create multiple connections in parallel via USB, TCP and UDP. Different components exist to receive and send packets, analyze the data over time, and store the data stream in a binary or CSV format for later usage. Different specialized widgets are present to provide interfaces for additiONal properties of devices. There are implementations of NDLCom for C/C++ and VHDL, applied to architectures like Spartan3/6, STM32 and AVR.


Application Field: Space Robotics
Related Projects: iStruct
Intelligent Structures for Mobile Robots (05.2010- 08.2013)
Behaviors for Mobile Manipulation (05.2012- 07.2016)
Learning Intelligent Motions for Kinematically Complex Robots for Exploration in Space (05.2012- 04.2016)
Related Robots: Sherpa
Expandable Rover for Planetary Applications
Mobile Dual-Arm-Manipulation
last updated 16.11.2023