Mavlink library (2.0 and 1.0) for the Go programming language
gomavlib is a library that implements the Mavlink protocol (2.0 and 1.0) in the Go programming language. It can interact with Mavlink-capable devices through a serial port, UDP, TCP or a custom transport, and it can be used to power UGVs, UAVs, ground stations, monitoring systems or routers.
Mavlink is a lightweight and transport-independent protocol that is mostly used to communicate with unmanned ground vehicles (UGV) and unmanned aerial vehicles (UAV, drones, quadcopters, multirotors). It is supported by the most popular open-source flight controllers (Ardupilot and PX4).
This library powers the mavp2p router.
Features:
dialects/
), custom dialects or no dialects at all. In case of custom dialects, a dialect generator is available in order to convert XML definitions into their Go representation.Install Go ≥ 1.20.
Create an empty folder, open a terminal in it and initialize the Go modules system:
go mod init main
Download one of the example files and place it in the folder:
Compile and run
go run name-of-the-go-file.go
Click to open the API Documentation
Standard dialects are provided in the pkg/dialects/
folder, but it's also possible to use custom dialects, that can be converted into Go files by running:
go install github.com/bluenviron/gomavlib/v3/cmd/dialect-import@latest
dialect-import my_dialect.xml
If you want to hack the library and test the results, unit tests can be launched with:
make test
name | area |
---|---|
main website | protocol |
packet format | protocol |
common dialect | dialects |
Golang project layout | project layout |
Related projects
Other Go libraries
Other non-Go libraries