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