Заставление Sphero BB8 вращаться по кругу с помощью библиотеки gobot приводит к сообщениям об ошибках - PullRequest
0 голосов
/ 12 декабря 2018

Я недавно обнаружил потрясающую библиотеку гоботов , которая также взаимодействует с BB8 от Sphero.Я пытаюсь заставить робота двигаться по кругу, и, хотя BB8 ведет себя как положено, я получаю сообщения об ошибках в консоли.

Вот функция, которую я использую, чтобы заставить BB8 двигаться по кругу:

func circles(driver *bb8.BB8Driver, steps float64) {
    rotateBy := math.Floor(360.0 / steps)
    currentAngle := 5.0
    directionInterval := 300

    for i := 0; i < int(steps); i++ {
        gobot.After(time.Millisecond*time.Duration(directionInterval), func() {
            driver.Roll(80, uint16(int(currentAngle)%360))
            currentAngle+=rotateBy
            directionInterval+=directionInterval
        })
    }
    gobot.After(time.Millisecond*time.Duration(directionInterval+500), func() {
        driver.Halt()
    })
}

И это рабочая программа:

package main

import (
    "math"
    "os"

    "gobot.io/x/gobot"
    "gobot.io/x/gobot/platforms/ble"
    "gobot.io/x/gobot/platforms/sphero/bb8"
)

func main() {
    bleAdaptor := ble.NewClientAdaptor(os.Args[1])
    bb := bb8.NewDriver(bleAdaptor)
    work := func() {
        circles2(bb, 50)
    }

    robot := gobot.NewRobot("bb",
        []gobot.Connection{bleAdaptor},
        []gobot.Device{bb},
        work,
    )

    robot.Start()
}

Когда я запускаю это, робот делает то, что я хочу.Тем не менее, я неоднократно получаю одно и то же сообщение об ошибке в консоли, в котором говорится, что цикл for перегружает очередь сообщений:

ERR att client req: невозможно поставить в очередь входящее уведомление.программа 34 [выполняется]: время выполнения / debug.Stack (0x0, 0x0, 0x0) /usr/lib/go-1.7/src/runtime/debug/stack.go:24 + 0x84 github.com/mgutz/logxi/v1.(* HappyDevFormatter) .getLevelContext (0x1056a7e0, 0x3, 0x106418a0, 0x0, 0x0, 0x0, 0x0, 0x1056a794, 0x5) /path/to/dir/bb8/src/github.com/go/ble/ble/uxclient.go: 551 + 0x930, созданный github.com/go-ble/ble/linux/gatt.NewClient /path/to/dir/bb8/src/github.com/go-ble/ble/linux/gatt/client.go: 25 + 0x124

Мне интересно, есть ли лучший подход, позволяющий избежать сообщений об ошибках, поскольку мои знания о Go все еще довольно ограничены.Любые предложения и комментарии приветствуются!

...