开发了一个纯粹为了比赛的机器人功能
2017-09-30 09:50
246 查看
原本在开始工作之前,我想得是开发一个机器人应用(Skill),可以让HEXA能陪我外出散步,无论我想慢走或者是跑步,它都能跟上我的步伐。而当我停下的时候,HEXA也会停下来,它能根据我跑步的颠簸来调整他移动的快慢。
但没想到我做出的功能展示给我的同事后,他们觉得这个功能可以用于HEXA之间的赛跑——没有人类什么事了!可惜,我以及我们公司只有一台HEXA,所以为了验证这个skill的实用性,我会尽快把它上传到Skill Store。希望有其他人来挑战我。
好了,回归正题,来说说我怎么开发的。
首先我按照官网的说明运行起来了“hello world”。通过这个skill我了解到skill的内部结构:两个文件夹(remote/robot),还有一个json文件(manifest.json)。我对golang和js都不是很熟,但是很快就找到了MIND SDK的hexabody库里面的WalkContinuously。
“`
“`
我研究了一下它,发现真正掌握它还得边尝试边摸索,后边会说到具体问题。
我google到了js的一个库(library)(deviceMotion),它可以用来获取到手机的摇摆速度(shake speed)。我把其中相关的代码搬到了remote文件夹下面的html里面,并且在里面添加了一个简单的html page(一个开始按钮,一个定时器,一个label用来展示摇晃手机的速度)。接下来使用MIND SDK里面的(sendData/OnRecvString)方法实现了js和golang的交互,传递一个speed value给WalkContinuously function,speed
value的大小会控制hexa行走速度的快慢。
在这个过程中我遇到了一些困难,比如说官网并没有给WalkContinuously/sendData/sendJSON提供参数(parameter)说明和示例,导致我无从得知机器人的最大速度值和其他两个方法的使用场景。还有在执行mind build命令的时候,无法正常执行,我是通过重启docker才得以恢复正常。
不过最终结果还挺有意思的,你只需要甩甩手机,HEXA就会开始向前爬。你甩得越迅速,HEXA爬得越快。可以想像如果我有两台HEXA,我会和同事竞赛,看谁控制的HEXA会跑赢。而我之前期待的带着HEXA去森林散步则遇到了困难,因为除非我选了一条没有“陷阱”的直线在走,否则HEXA自己会选择一条它的路。我得不时回头看着它摔进树坑,翻下路基,我变成了机器人保姆(自愿的)。
但没想到我做出的功能展示给我的同事后,他们觉得这个功能可以用于HEXA之间的赛跑——没有人类什么事了!可惜,我以及我们公司只有一台HEXA,所以为了验证这个skill的实用性,我会尽快把它上传到Skill Store。希望有其他人来挑战我。
好了,回归正题,来说说我怎么开发的。
首先我按照官网的说明运行起来了“hello world”。通过这个skill我了解到skill的内部结构:两个文件夹(remote/robot),还有一个json文件(manifest.json)。我对golang和js都不是很熟,但是很快就找到了MIND SDK的hexabody库里面的WalkContinuously。
“`
func WalkContinuously(direction, speed float64) error
“`
我研究了一下它,发现真正掌握它还得边尝试边摸索,后边会说到具体问题。
我google到了js的一个库(library)(deviceMotion),它可以用来获取到手机的摇摆速度(shake speed)。我把其中相关的代码搬到了remote文件夹下面的html里面,并且在里面添加了一个简单的html page(一个开始按钮,一个定时器,一个label用来展示摇晃手机的速度)。接下来使用MIND SDK里面的(sendData/OnRecvString)方法实现了js和golang的交互,传递一个speed value给WalkContinuously function,speed
value的大小会控制hexa行走速度的快慢。
在这个过程中我遇到了一些困难,比如说官网并没有给WalkContinuously/sendData/sendJSON提供参数(parameter)说明和示例,导致我无从得知机器人的最大速度值和其他两个方法的使用场景。还有在执行mind build命令的时候,无法正常执行,我是通过重启docker才得以恢复正常。
不过最终结果还挺有意思的,你只需要甩甩手机,HEXA就会开始向前爬。你甩得越迅速,HEXA爬得越快。可以想像如果我有两台HEXA,我会和同事竞赛,看谁控制的HEXA会跑赢。而我之前期待的带着HEXA去森林散步则遇到了困难,因为除非我选了一条没有“陷阱”的直线在走,否则HEXA自己会选择一条它的路。我得不时回头看着它摔进树坑,翻下路基,我变成了机器人保姆(自愿的)。
相关文章推荐
- spring,springMVC的优点和区别 spring 是是一个开源框架,是为了解决企业应用程序开发,功能如下 ◆目的:解决企业应用开发的复杂性 ◆功能:使用基本的JavaBean代替EJB,并
- (转)【Android游戏开发十六】Android Gesture之【触摸屏手势识别】操作!利用触摸屏手势实现一个简单切换图片的功能!
- 【Android游戏开发十六】Android Gesture之【触摸屏手势识别】操作!利用触摸屏手势实现一个简单切换图片的功能!
- 使用ionic2开发一个登录功能
- netty实战--开发一个简单的聊天功能
- 编程游戏:划拳机器人比赛-{ 咱们园子是否应该设立一个算法挑战/编程竞赛的平台? }
- 1 开发一个注重性能的JDBC应用程序不是一件容易的事. 当你的代码运行很慢的时候JDBC驱动程序并不会抛出异常告诉你。 本系列的性能提示将为改善JDBC应用程序的性能介绍一些基本的指导原则,这其中的原则已经被许多现有的JDBC应用程序编译运行并验证过。 这些指导原则包括: 正确的使用数据库MetaData方法 只获取需要的数据 选用最佳性能的功能 管理连
- 【AU China 讲座视频下载】 50分钟开发一个Revit实用功能
- 【iOS开发新手上路】教你一步一步创建一个功能齐全的UITableViewController(上)
- Android开发中的一个小功能 清空搜索框的文字
- java web开发一个帐号同一时间只能一个人登录的功能
- 的微信公众号开发 图灵机器人接口允许调用自己的微通道成为一个智能机器人
- 一个增删改查功能开发小结
- 除了移动开发,一个好平台还需要具备什么功能?
- 在Android的UI开发中,有时为了界面美观而需要使用虚线。在这里我自己实现一个画虚线的控件。
- ASP.NET快速开发框架,简单美观的UI,丰富的功能,给开发一个加速度
- 开发好一个软件功能模块不是光有激情、有干劲、有技术就可以得到成功的
- 【Android游戏开发十六】Android Gesture之【触摸屏手势识别】操作!利用触摸屏手势实现一个简单切换图片的功能!
- Android开发中的一个小功能 清空搜索框的文字
- 稳扎稳打Silverlight(18) - 2.0视频之详解MediaElement, 开发一个简易版的全功能播放器