hybridgroup.gobot/platforms/mavlink
Adrian Zankich 8e1d9e3a1d Add mavlink docs 2014-09-26 19:31:05 -07:00
..
common Add mavlink docs 2014-09-26 19:31:05 -07:00
README.md Update README.md 2014-09-26 16:56:18 -07:00
mavlink_adaptor.go Initial mavlink support 2014-08-03 18:21:00 -07:00
mavlink_adaptor_test.go Enable mavlink tests 2014-08-04 12:06:54 -07:00
mavlink_driver.go Fix issue with reading from 3dr radio 2014-08-03 18:21:00 -07:00
mavlink_driver_test.go Enable mavlink tests 2014-08-04 12:06:54 -07:00

README.md

mavlink

Gobot (http://gobot.io/) is a framework for robotics and physical computing using Go

This repository contains the Gobot adaptor and driver for the MAVlink Communication Protocol.

For more information about Gobot, check out the github repo at https://github.com/hybridgroup/gobot

Installing

go get github.com/hybridgroup/gobot && go install github.com/hybridgroup/gobot/platforms/mavlink

Using

package main

import (
	"fmt"

	"github.com/hybridgroup/gobot"
	"github.com/hybridgroup/gobot/platforms/mavlink"
	common "github.com/hybridgroup/gobot/platforms/mavlink/common"
)

func main() {
	gbot := gobot.NewGobot()

	adaptor := mavlink.NewMavlinkAdaptor("iris", "/dev/ttyACM0")
	iris := mavlink.NewMavlinkDriver(adaptor, "iris")

	work := func() {
		gobot.Once(iris.Event("packet"), func(data interface{}) {
			packet := data.(*common.MAVLinkPacket)

			dataStream := common.NewRequestDataStream(100,
				packet.SystemID,
				packet.ComponentID,
				4,
				1,
			)
			iris.SendPacket(common.CraftMAVLinkPacket(packet.SystemID,
				packet.ComponentID,
				dataStream,
			))
		})

		gobot.On(iris.Event("message"), func(data interface{}) {
			if data.(common.MAVLinkMessage).Id() == 30 {
				message := data.(*common.Attitude)
				fmt.Println("Attitude")
				fmt.Println("TIME_BOOT_MS", message.TIME_BOOT_MS)
				fmt.Println("ROLL", message.ROLL)
				fmt.Println("PITCH", message.PITCH)
				fmt.Println("YAW", message.YAW)
				fmt.Println("ROLLSPEED", message.ROLLSPEED)
				fmt.Println("PITCHSPEED", message.PITCHSPEED)
				fmt.Println("YAWSPEED", message.YAWSPEED)
				fmt.Println("")
			}
		})
	}

	robot := gobot.NewRobot("mavBot",
		[]gobot.Connection{adaptor},
		[]gobot.Device{iris},
		work,
	)

	gbot.AddRobot(robot)

	gbot.Start()
}