MakerLab创客实验室 — Let's Make something.
现在注册
已注册用户请 登入
Vincross large avatar
MakerLab创客实验室  ›  机器人想法

这个机器人应用,可以让机器人变成火警情报员

By Vincross at 11 天前 , 44 次浏览

可编程全地形机器人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官网

输入图片说明

目前尚无回复