hybridgroup.gobot/platforms/mavlink
Adrian Zankich b2097b2b02 Update mavlink package error handling 2014-11-19 16:03:50 -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 mavlink package error handling 2014-11-19 16:03:50 -08:00
mavlink_adaptor_test.go Update mavlink package error handling 2014-11-19 16:03:50 -08:00
mavlink_driver.go Update mavlink package error handling 2014-11-19 16:03:50 -08:00
mavlink_driver_test.go Update mavlink package error handling 2014-11-19 16:03:50 -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()
}