hybridgroup.gobot/platforms/mavlink
Adrian Zankich abc1f0b201 Update platforms to support the new Driver and Adaptor interfaces 2014-11-16 12:25:48 -08: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
doc.go Update docs 2014-10-28 14:52:59 -07:00
mavlink_adaptor.go Update platforms to support the new Driver and Adaptor interfaces 2014-11-16 12:25:48 -08:00
mavlink_adaptor_test.go Update platforms to support the new Driver and Adaptor interfaces 2014-11-16 12:25:48 -08:00
mavlink_driver.go Update platforms to support the new Driver and Adaptor interfaces 2014-11-16 12:25:48 -08:00
mavlink_driver_test.go Update platforms to support the new Driver and Adaptor interfaces 2014-11-16 12:25:48 -08: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()
}