mavlink

package
v0.0.0-...-1595f01 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 18, 2014 License: Apache-2.0 Imports: 6 Imported by: 0

README

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()
}

Documentation

Overview

Package mavlink contains the Gobot adaptor and driver for the MAVlink Communication Protocol.

Installing:

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

Example:

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()
}

For further information refer to mavlink README: https://github.com/hybridgroup/gobot/blob/master/platforms/mavlink/README.md

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type MavlinkAdaptor

type MavlinkAdaptor struct {
	gobot.Adaptor
	// contains filtered or unexported fields
}

func NewMavlinkAdaptor

func NewMavlinkAdaptor(name string, port string) *MavlinkAdaptor

NewMavLinkAdaptor creates a new mavlink adaptor with specified name and port

func (*MavlinkAdaptor) Connect

func (m *MavlinkAdaptor) Connect() bool

Connect returns true if connection to device is successful

func (*MavlinkAdaptor) Finalize

func (m *MavlinkAdaptor) Finalize() bool

Finalize returns true if connection to devices is closed successfully

type MavlinkDriver

type MavlinkDriver struct {
	gobot.Driver
}

func NewMavlinkDriver

func NewMavlinkDriver(a *MavlinkAdaptor, name string) *MavlinkDriver

NewMavlinkDriver creates a new mavlink driver with specified name.

It add the following events:

"packet" - triggered when a new packet is read
"message" - triggered when a new valid message is processed

func (*MavlinkDriver) Halt

func (m *MavlinkDriver) Halt() bool

Halt returns true if device is halted successfully

func (*MavlinkDriver) SendPacket

func (m *MavlinkDriver) SendPacket(packet *common.MAVLinkPacket)

SendPacket sends a packet to mavlink device

func (*MavlinkDriver) Start

func (m *MavlinkDriver) Start() bool

Start begins process to read mavlink packets every m.Interval and process them

type MavlinkInterface

type MavlinkInterface interface {
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL