可编程全地形机器人HEXA在正式面向用户时,曾发起“HEXA人类导师计划”,得到不少用户的购买申请,随着体验的深入,不少用户开发出了许多有趣实用的机器人应用,我们将陆续把这些应用的代码分享出来,感兴趣的伙伴们可以尝试体验。今天分享的是用户RiverLLZ开发的火情警报的机器人应用(Skill)——Fire Marshall Rob
我在入手HEXA之前,曾玩过Arduino套件。所以在拿到HEXA之后很自然就想把两样”混搭”一下。在Arduino套件里我有一个火焰传感器,是之前在网上买的,非常便宜。要是能把它装在HEXA上,这就是个救火队长机器人了。
这个传感器是3pin的,介绍里写它能探测看到80cm以内的火焰。3个针脚分别是3.3V电压和模拟地,以及一个GPIO接口。根据HEXA的开发文档介绍: ,HEXA的硬件接口可以很方便接上。检测原理是,当传感器的红外元件检测到火焰时,就会将HEXA GPIO接口的电压拉低。
gpio, _ = gpio.High(2); // I connect the sensor to GPIO pin 2if !gpio { // detected fire, do something}
运行这个skill时,HEXA的头部会持续转动,检测周边环境。当它检测到火焰时,会对着火焰的方向拍张照片,而刚刚拍摄的火场照片会自动通过Base64编码的方式传到与机器人连接的手机的相册里。然后在完成了报警任务后,HEXA会自动转过头向着相反的方向逃跑(挺贵的,心疼)。以下是调用的核心函数。
gpio2, _ = gpio.High(2); // initialize// detectedif !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日,近期想要入手的话是一个合适的机会。
购买地址: