A pure Go library for building ROS 1 client nodes, enabling lightweight cross-platform robotics and data streaming applications.
goroslib is a pure Go client library for the Robot Operating System (ROS 1), enabling developers to build nodes that communicate via topics, services, actions, and parameters. It provides a lightweight, dependency-free alternative to the official C++/Python libraries, allowing cross-compilation to various operating systems without a complex buildchain. The library solves the problem of creating portable, standalone ROS nodes with minimal runtime dependencies.
Go developers building or integrating with ROS 1 systems, particularly those needing to deploy nodes across multiple platforms (Linux, Windows, macOS) or in resource-constrained environments. It also suits developers maintaining legacy ROS 1 applications who want a modern, maintainable client library.
Developers choose goroslib over alternatives because it offers a pure Go implementation with no external dependencies, compiles to standalone binaries, and supports full cross-compilation. Unlike the official libraries, it avoids gigabytes of dependencies and complex buildchains, and unlike the unmaintained rosgo, it supports UDP, actions, simulated clocks, and provides import tools for existing ROS message definitions.
ROS client library for the Go programming language
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Compiles to a single executable with no external runtime dependencies, simplifying deployment across any Go-supported platform as highlighted in the pure Go implementation.
Leverages Go's native toolchain to cross-compile for Linux, Windows, and macOS with simple environment variables (GOOS/GOARCH), avoiding complex buildchains mentioned in the comparison.
Allows defining custom ROS messages, services, and actions directly as Go structs without compiling .msg files, integrating seamlessly with Go codebases as demonstrated in the examples.
Provides command-line tools like msg-import and package-import to convert existing ROS .msg, .srv, and .action files into Go code, easing migration from other ROS libraries.
The library is no longer maintained since ROS 1 reached end-of-life in May 2025, and the project explicitly states it won't be updated for ROS 2 due to significant required effort.
Only supports ROS 1, which is now end-of-life, preventing use in modern ROS 2-based systems and missing out on newer features, protocols, and community focus.
The README references a FEATURES document listing missing features, indicating that not all ROS 1 functionalities may be fully implemented or battle-tested compared to official libraries.