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-hk/n/290907.html
微信掃一掃
支付寶掃一掃