This packages provides a Go interface to Dynamixel servos. It's tested against [AX-12] ax and [XL-320] xl servos (because I am a cheapskate), but should work with other models.
package main
import (
"log"
"github.com/jacobsa/go-serial/serial"
"github.com/adammck/dynamixel/network"
"github.com/adammck/dynamixel/servo/ax"
)
func main() {
options := serial.OpenOptions{
PortName: "/dev/tty.usbserial-A9ITPZVR",
BaudRate: 1000000,
DataBits: 8,
StopBits: 1,
MinimumReadSize: 0,
InterCharacterTimeout: 100,
}
serial, err := serial.Open(options)
if err != nil {
log.Fatalf("error opening serial port: %v\n", err)
}
network := network.New(serial)
servo, err := ax.New(network, 1)
if err != nil {
log.Fatalf("error initializing servo: %v\n", err)
}
err = servo.Ping()
if err != nil {
log.Fatalf("error pinging servo: %v\n", err)
}
err = servo.SetGoalPosition(512)
if err != nil {
log.Fatalf("error setting goal position: %v\n", err)
}
}
More examples can be found in the examples examples directory of this repo.
The docs can be found at [godoc.org] docs, as usual.
The API is based on the Dynamixel [v1 protocol] proto docs.
[MIT] license, obv.
[Adam Mckaig] adammck made this just for you.