How ros-industrial/abb_libegm works
abb_libegm is a C++ library for exchanging ABB Externally Guided Motion (EGM) references with robot controllers over UDP. The principal flow is controller feedback into a UDP server, through a base or specialized interface, and back as a reference reply. Users can instead supply outputs through the controller interface or enqueue trajectories for interpolation. The graph also includes shared data/math and logging layers. The README and excerpts establish the main workflow; some protocol-schema and internal implementation links are not shown, so uncertain relationships are omitted.
Main entry points: egm_base_interface.cpp Base interface · egm_trajectory_interface.cpp Trajectory interface · egm_udp_server.cpp UDP server · egm_controller_interface.cpp Controller interface
Components 13
UDP transport
- UDP server
src/egm_udp_server.cpp
EGM interfaces
- Base interface
src/egm_base_interface.cpp - Controller interface
src/egm_controller_interface.cpp - Trajectory interface
src/egm_trajectory_interface.cpp
Motion support
- Shared types
src/egm_common.cpp - Motion math
src/egm_common_auxiliary.cpp - Interpolator
src/egm_interpolator.cpp - EGM logger
src/egm_logger.cpp
Protocol data
- EGM messages
proto/egm.proto - Wrapper messages
proto/egm_wrapper.proto - Trajectory messages
proto/egm_wrapper_trajectory.proto
Other components
- ABB controller
- Library user
Connections 10
- ABB controller → UDP server: sends feedback
README.md - UDP server → Base interface: dispatches messages
README.md - Base interface → UDP server: returns replies
README.md - Base interface → Motion math: uses motion math
src/egm_base_interface.cpp - Base interface → EGM logger: configures logging
src/egm_base_interface.cpp - Library user → Controller interface: supplies outputs
README.md - Library user → Trajectory interface: queues trajectories
README.md - Trajectory interface → Interpolator: updates interpolation
src/egm_trajectory_interface.cpp - Controller interface → Base interface: inherits behavior
- Trajectory interface → Base interface: inherits behavior