Golang Go语言中如何利用手机内置平衡仪来控制机器人行走方向
Hello,大家 这个帖子的内容来自 Vincross (也就是我们自己)的开发者论坛。内容是一个拥有 HEXA 机器人的开发者开发的一个小应用,他使用手机的平衡仪控制 HEXA 行走的方向,例如把手机向着某个方向倾斜,机器人就会朝着那个方向爬过去(见 GIF 图)。原贴是英文的,我们觉得很有意思,所以把帖子翻译成中文。原贴链接就不贴了,怕犯规。 开发使用的是 Golang 语言。 特别说明:Vincross 拥有使用这个帖子的转载和宣传的权力。
标题:Yet Another Controller
by [@za4AI](/user/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](/user/za4AI) 提到的问题,我们已经修改了文档。)
Golang Go语言中如何利用手机内置平衡仪来控制机器人行走方向
更多关于Golang Go语言中如何利用手机内置平衡仪来控制机器人行走方向的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
效果是这样的:
https://forum.vincross.com/uploads/default/original/1X/12bb7b1e61be3cdc276e762c3851a8fedb1ad6e0.gif
更多关于Golang Go语言中如何利用手机内置平衡仪来控制机器人行走方向的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
在Golang(Go语言)中利用手机内置平衡仪(通常指加速度计和陀螺仪)来控制机器人行走方向,可以通过以下几个步骤实现:
-
获取传感器数据:首先,你需要在手机上编写一个应用(可以使用原生开发如Android的Java/Kotlin或iOS的Swift/Objective-C,或者使用跨平台框架如Flutter/Dart),该应用能够读取手机内置的加速度计和陀螺仪数据。
-
数据传输:通过蓝牙、Wi-Fi或特定通信协议(如MQTT等),将手机应用获取到的传感器数据实时传输到机器人控制板。
-
数据解析:在机器人控制板上的Go程序中,接收并解析这些数据。这通常涉及解码从手机发送的二进制或文本数据。
-
方向控制逻辑:根据接收到的传感器数据(如倾斜角度、角速度等),在Go程序中编写逻辑来决定机器人的行走方向。例如,如果手机向前倾斜,可以控制机器人前进;如果向左倾斜,则控制机器人左转。
-
执行控制命令:最后,将控制命令发送到机器人的执行机构(如电机),以实现相应的行走方向调整。
整个过程中,需要注意数据同步、错误处理以及通信效率等问题,确保控制命令的实时性和准确性。此外,根据具体机器人和传感器的型号,可能还需要进行特定的校准和配置工作。