别人家的爸爸为两岁的儿子用 HEXA 机器人开发了一个巡航功能。这本来是个拉仇恨的暖心故事,但最终爸爸还是在儿子惊人的破坏力面前屈服了。所以我们就意外收获了一个逗猫神器。
by @Andy.W
好不容易攒了三个月的钱,终于搞到了一个 HEXA。我对这个 6 只脚的机械生物充满了兴趣,想用他来做点有意思的事(在我心里他是个小男孩)。我决定让他跟我儿子开个玩笑,让我儿子追着他跑,却永远抓不到他。
要做点这一点,倒可以利用他的测距传感器来发现周围的物体,然后远远避开。不过,首先我得让我的 HEXA 足够聪明。
说干就干,我先以一个使用了测距传感器的 example 为模板,使用 MIND SDK 提供的 API, 实时检测 HEXA 前面的物体,一旦距离小于 0.5 米,就通知 HEXA 扭头就走。
首先,我要在 OnStart()里把各种 drivers 初始化起来
func (d *myskill) OnStart() {
// Use this method to do something when this skill is starting.
hexabody.Start()
distance.Start()
if !distance.Available() {
log.Error.Println("Distance sensor is not available")
}
hexabody.Stand()
go d.Walk()
d.count++
}
然后我在 Walk()里控制 HEXA 怎么走
func (d *myskill) Walk() {
log.Debug.Println("robot start to walk...")
go d.Detect()
//
for {
select {
case <-d.stop:
return
case walk_d := <-d.direction:
cur_d := hexabody.Direction()
if MOVE_LEFT == walk_d {
log.Info.Println("Move LEFT")
new_d := cur_d -90
//
err := hexabody.MoveHead(new_d,MOVE_HEAD_DURATION)
if nil != err {
log.Info.Println(err)
}else {
time.Sleep(MOVE_HEAD_DURATION)
}
}
default:
//
hexabody.WalkContinuously(0, WALK_SPEED)
time.Sleep(MOVE_HEAD_DURATION)
}
}
log.Debug.Println("robot stop walk")
}
效果就是这样啦。 考虑到我儿子( 2 岁)目前的破坏力,以防万一我还是用我家猫来做测试。
———————————————————————————————————————————————————— 这个帖子的内容来自 Vincross (也就是我们自己)的开发者论坛。原贴是英文的,我们觉得很有意思,所以把帖子翻译成中文。原贴链接就不贴了,怕犯规。开发使用的是 Golang 语言。 特别说明:Vincross 拥有使用这个帖子的转载和宣传的权力。受限于论坛贴图规则,特别挣得作者许可做了张图传到工作人员个人微博上以便显示,该功能以及视频的所有权属于原作者 @Andy.W
1
gamecreating 2017-05-11 16:53:04 +08:00
这个不错 机器人在哪里买的啊 好想要一个 给儿子玩
|
2
tabris17 2017-05-11 16:54:38 +08:00
哪里买?
|
3
gamecreating 2017-05-11 17:07:33 +08:00
|
4
maple 2017-05-12 00:51:37 +08:00 via iPhone
不不看脸的话对你家的猫感兴趣
|
5
jyf 2017-05-12 15:01:16 +08:00
比较贵吧 我刚从淘宝上买了个四脚的 300 多 不过没有主控板 加上主控 大概 350 样子
|
6
simoncos 2017-05-30 11:09:51 +08:00
好像很好玩
|
7
graetdk 2018-03-05 16:10:56 +08:00
真的有点贵,一两千我就马上买了,6000 多还是有点贵了
|