可编程全地形机器人 HEXA 在正式面向用户时,曾发起“ HEXA 人类导师计划”,得到不少用户的购买申请,随着体验的深入,不少用户开发出了许多有趣实用的机器人应用,我们将陆续把这些应用的代码分享出来,感兴趣的伙伴们可以尝试体验。今天分享的是用户 RiverLLZ 开发的火情警报的机器人应用( Skill )—— Fire Marshall Rob
我在入手 HEXA 之前,曾玩过 Arduino 套件。所以在拿到 HEXA 之后很自然就想把两样”混搭”一下。在 Arduino 套件里我有一个火焰传感器,是之前在网上买的,非常便宜。要是能把它装在 HEXA 上,这就是个救火队长机器人了。
这个传感器是 3pin 的,介绍里写它能探测看到 80cm 以内的火焰。3 个针脚分别是 3.3V 电压和模拟地,以及一个 GPIO 接口。根据 HEXA 的开发文档介绍:https://documentation.vincross.com/Introduction/hardware.html#hardware-interfaces ,HEXA 的硬件接口可以很方便接上。检测原理是,当传感器的红外元件检测到火焰时,就会将 HEXA GPIO 接口的电压拉低。
gpio, _ = gpio.High(2); // I connect the sensor to GPIO pin 2
if !gpio {
// detected fire, do something
}
运行这个 skill 时,HEXA 的头部会持续转动,检测周边环境。当它检测到火焰时,会对着火焰的方向拍张照片,而刚刚拍摄的火场照片会自动通过 Base64 编码的方式传到与机器人连接的手机的相册里。然后在完成了报警任务后,HEXA 会自动转过头向着相反的方向逃跑(挺贵的,心疼)。以下是调用的核心函数。
gpio2, _ = gpio.High(2); // initialize
// detected
if !gpio2 {
time.Sleep(800 * time.Millisecond)
// take photo
log.Info.Println("DETECTED")
buf := new(bytes.Buffer)
log.Info.Println("JPEG")
jpeg.Encode(buf, media.SnapshotYCbCr(), nil)
log.Info.Println("BASE64")
str := base64.StdEncoding.EncodeToString(buf.Bytes())
log.Info.Println("SENDING")
framework.SendString(str)
log.Info.Println("Sent:", str[:20], len(str))
// turn back and leave
hexabody.MoveHead(hexabody.Direction()-180, 100)
hexabody.WalkContinuously(0, WALK_SPEED)
time.Sleep(Waiting * time.Millisecond)
} else {
hexabody.StopWalkingContinuously()
hexabody.MoveHead(hexabody.Direction()-60, MOVE_HEAD_DURATION)
}
现在这个 skill 更像个理想形态的功能,它展示了 HEXA 怎么检测和应对火情的。它还需要更多改进,无论是硬件方面还是编程方面,也许有一天 HEXA 真的能够成为保护人类生命的火场英雄呢?!
简单介绍一下 HEXA,它是一个可以灵活适应多种场景的全地形可编程机器人,集成了各种必要的传感器,并搭载强大易用的机器人软件操作系统( MIND OS )。作为一个机器人开发平台,官方提供了完整的开发工具,喜欢机器人或者想要做机器人开发的朋友,可以直接跳过底层的硬件电路和结构力学,用 HEXA 直接上手来学习和开发机器人应用。对于 HEXA 开发感兴趣的朋友可以加入交流群,QQ 群:455783546 ;微信群可以扫下面二维码:
最后打一个硬广:双十一期间,HEXA 工程机正在低价发售,可以直接优惠 1111 元,另外现货发售。活动时间到 11 月 11 日,近期想要入手的话是一个合适的机会。
购买地址:Vincross 官网