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/n/290907.html
微信扫一扫
支付宝扫一扫