hybridgroup.gobot/platforms/mavlink
Adrian Zankich fd24e6a9fe Update docs 2014-10-28 14:52:59 -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
doc.go Update docs 2014-10-28 14:52:59 -07:00
mavlink_adaptor.go Improving godocs and adding doc.go to mavlink package 2014-10-22 09:58:06 -05:00
mavlink_adaptor_test.go Enable mavlink tests 2014-08-04 12:06:54 -07:00
mavlink_driver.go Improving godocs and adding doc.go to mavlink package 2014-10-22 09:58:06 -05: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()
}