Gobot——全能編程開發工程師

Gobot是一套Go語言編寫的開源機器人開發框架,也被認作是大家心目中的「全能編程開發工程師」。因為它幾乎可以驅動所有硬體設備,使開發者能夠快速地開發出自己的機器人項目。

一、Gobo貼圖

Gobo貼圖:Gobo,是美國帶內燃機車車輛所採用的制動器,在舞台上,gobo代表的是一種傳統的投影圖像,通常可以為一些藝術舞台增添顏色,那麼gobot如何貼上這樣的gobo貼圖?

首先,我們需要將gobo貼圖轉化為黑白圖片,然後使用Gobot的Display驅動函數進行顯示。

package main

import (
    "github.com/hybridgroup/gobot/platforms/raspi"
    "github.com/hybridgroup/gobot/platforms/gpio"
    "github.com/hybridgroup/gobot/platforms/i2c"
    "image"
    _ "image/jpeg"
    _ "image/png"
    "os"
    "time"
)

func main() {
    r := raspi.NewRaspiAdaptor()
    lcd := i2c.NewGroveLcdDriver(r)
    camera := gpio.NewCameraDriver(r, "camera")
    camera.Start()
    time.Sleep(2 * time.Second)
    fd, _ := os.Create("/tmp/gobot.jpg")
    camera.Capture(fd)
    fd.Close()
    time.Sleep(2 * time.Second)
    file, _ := os.Open("/tmp/gobot.jpg")
    img, _, _ := image.Decode(file)
    file.Close()
    g := gpio.NewGroveLedDriver(r, "led", "7")
    g.Start()
    lcd.Start()
    lcd.Clear()
    lcd.Home()
    if gpio.ConvertImageToAscii(img, true) == "" {
        return
    }
    gpio.DisplayImage(img, lcd)
    g.On()
    time.Sleep(5 * time.Second)
    g.Off()
}

代碼說明:

該示例代碼使用了RaspiAdaptor、GroveLcdDriver、CameraDriver、GroveLedDriver等Gobot的包,這裡為一個完整的開發環境,同時使用 image.Decode() 函數將圖像轉化為標準的image.Image對象,然後使用gpio.ConvertImageToAscii()函數將圖像轉化為字元畫,並在屏幕上顯示。

二、Gobo投影機

Gobo投影機:Gobo投影機是一種專門用來投射gobo圖案的投影儀。如何使用Gobot控制Gobo投影機呢?

我們需要使用到Gobot的Firmata協議(固件)和標準庫代碼。首先使用Arduino IDE或者PlatformIO將Firmata固件燒入Uno控制板中。接著,我們需要使用標準庫代碼進行通信。

package main

import (
    "fmt"
    "github.com/tarm/serial"
)

func main() {
    c := &serial.Config{Name: "/dev/ttyACM0", Baud: 57600}
    s, _ := serial.OpenPort(c)
    buf := []byte{'s', '\n'}
    s.Write(buf)
    buf = []byte{'H', '\n'}
    s.Write(buf)
    buf = []byte{'V', '\n'}
    s.Write(buf)
    buf = []byte{'n', '\n'}
    s.Write(buf)
    buf = make([]byte, 60)
    s.Read(buf)
    fmt.Println(string(buf))
}

代碼說明:

該示例代碼使用標準庫serial進行與硬體設備的通信,通過位元組流控制、讀取和反饋Controller的狀態,進而控制Gobo投影機。其中,’s’表示開始,’H’和’V’分別表示水平和垂直移動,’n’表示結束控制。

三、Gobo同福

Gobo同福:Gobo同福是一款國產的抗菌抑菌特殊材料。如何在Gobot中使用Gobo同福呢?

可將Gobo同福做成一個小碟,放進Gobot機器人手臂的末端,然後使用關節控制機械臂運動。示例代碼如下所示:

package main

import "github.com/hybridgroup/gobot/platforms/ardrone"

func main() {
    ardroneAdaptor := ardrone.NewAdaptor()
    drone := ardrone.NewDriver(ardroneAdaptor)

    drone.On(ardrone.SignalTakeoff, func(data interface{}) {
        drone.Hover()
        drone.Forward(10)
        drone.Gobo()
        drone.Backward(10)
        drone.Land()
    })

    drone.Start()
}

代碼說明:

該示例代碼使用了ArdroneAdaptor和ArdroneDriver,使用Gobot中的Gobo()函數控制機器人運行。機器人起飛後向前飛行,使用Gobo進行抗菌抑菌,完成後向後退回原地並降落。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/290907.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-24 13:14
下一篇 2024-12-24 13:14

相關推薦

發表回復

登錄後才能評論