V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
Vincross
V2EX  ›  Go 编程语言

如何利用手机内置平衡仪来控制机器人行走方向

  •  
  •   Vincross · 2017-05-10 11:33:00 +08:00 · 1318 次点击
    这是一个创建于 2756 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Hello,大家 这个帖子的内容来自 Vincross (也就是我们自己)的开发者论坛。内容是一个拥有 HEXA 机器人的开发者开发的一个小应用,他使用手机的平衡仪控制 HEXA 行走的方向,例如把手机向着某个方向倾斜,机器人就会朝着那个方向爬过去(见 GIF 图)。原贴是英文的,我们觉得很有意思,所以把帖子翻译成中文。原贴链接就不贴了,怕犯规。 开发使用的是 Golang 语言。 特别说明:Vincross 拥有使用这个帖子的转载和宣传的权力。


    标题:Yet Another Controller

    by @za4AI

    在 HEXA 自带的手机 App 预装应用中,可以在一个类似 PS4 手柄的拨杆界面来遥控 HEXA 行动,能看到实时传回的画面。 我经常玩的一款无人机叫 AirDrone,在它的手机 App 中可以通过倾斜手机来控制无人机的飞行方向,那个功能真的很酷(有真实的操控感),所以自从我收到 HEXA 以来,我就想把那个功能移植过来。

    开发步骤

    1、拿到 HEXA,首先查阅了 Vincross 官方文档 MIND SDK,作为一个前端开发者,我对 Golang 不是很熟,然而我很快的运行一个 Hello World 项目,并使 HEXA 动了起来!太棒了~ Skill 项目的代码分为两个部分,Robot 端可以开发机器人的实体功能基于 MIND Driver,Remote 部分通过网页端发送数据与 Robot 交互。

    2、Mind 系统提供了丰富的 API,其中 hexabody 可以操控机器人的身体,对我开发的 Skill 尤为重要,通过这些函数可以操纵 HEXA 的头部旋转和六支的动作,包括行走、站立、放松、获取方向、设计动作等等。 hexabody.WalkContinuously 函数可以让 HEXA 按照指定的方向和速度不停地行走, 设置第一个参数为 0,HEXA 会随头部的转动自动改变行走方向。再通过 hexabody.MoveHead 函数指定头部方向,便可以根据参数自由行走。

    `hexabody.MoveHead(dir, 1)
    hexabody.WalkContinuously(0, speed)`
    

    3、网页端 MIND Remote 提供 JS SDK 基于 websocket 向 Robot 端发送数据,借用 html5 的 API (deviceorientation) 实时获取手机设备加速度,按照这个思路即可使用手机重力感应控制 HEXA 机器人。当然我需要对加速度数据进行计算使得变成服务端可读的参数,并针对操控性进行优化。

    window.addEventListener("deviceorientation", function(event){
        setMeter(-event.gamma, event.beta)
        computeDir(-event.gamma, event.beta)
        computeSpeed(-event.gamma, event.beta)
    })
    

    遇到问题

    但在开发过程当中我无法真正知道机器人的地理方向,因为 HEXA 头部的旋转角度是相对于身体旋转的,所以我猜 HEXA 机器人的前方是机器人身体的固定方向。 为此我专门请教了 MIND 的系统的开发者,他们给了我大致相同的回答。如果技术团队能在 MIND 文档标注一下 HEXA 的方向、角度原点,可以帮助开发者解决更多问题。

    (题外话,最后 @za4AI 提到的问题,我们已经修改了文档。)

    1 条回复    2017-05-10 14:10:41 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1343 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 23:37 · PVG 07:37 · LAX 15:37 · JFK 18:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.