V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
Vincross
V2EX  ›  奇思妙想

一只满地乱爬的机器人成了逗猫神器

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

    别人家的爸爸为两岁的儿子用 HEXA 机器人开发了一个巡航功能。这本来是个拉仇恨的暖心故事,但最终爸爸还是在儿子惊人的破坏力面前屈服了。所以我们就意外收获了一个逗猫神器。


    我为 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

    7 条回复    2018-03-05 16:10:56 +08:00
    gamecreating
        1
    gamecreating  
       2017-05-11 16:53:04 +08:00
    这个不错 机器人在哪里买的啊 好想要一个 给儿子玩
    tabris17
        2
    tabris17  
       2017-05-11 16:54:38 +08:00
    哪里买?
    gamecreating
        3
    gamecreating  
       2017-05-11 17:07:33 +08:00
    maple
        4
    maple  
       2017-05-12 00:51:37 +08:00 via iPhone
    不不看脸的话对你家的猫感兴趣
    jyf
        5
    jyf  
       2017-05-12 15:01:16 +08:00
    比较贵吧 我刚从淘宝上买了个四脚的 300 多 不过没有主控板 加上主控 大概 350 样子
    simoncos
        6
    simoncos  
       2017-05-30 11:09:51 +08:00
    好像很好玩
    graetdk
        7
    graetdk  
       2018-03-05 16:10:56 +08:00
    真的有点贵,一两千我就马上买了,6000 多还是有点贵了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3284 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 12:57 · PVG 20:57 · LAX 04:57 · JFK 07:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.