【zeal|开发日记】用 Dueros打造钢铁侠
z****i · z****i 发布于2017-11-12 22:03 浏览:2916 回复:5

最新进度 

    1、Python-sdk 成功唤醒

    2、GPIO接口拆分

    3、替换唤醒词语jarvis 

    4、眼灯胸灯驱动开发完成

    5、外观模型制作完成

    6、基础自定义技能设置


下一步计划


    1、眼胸灯安装到身体

    2、自定义技能部署


感受

    原声GPIO库与Python-sdk兼容问题还是没有解决很纠结,只能先进行其他工作。加上近期工作比较繁忙,更新进度比较慢。







前言

        每个男孩看了钢铁侠电影以后相信都会有一个梦想,什么时候拥有自己的钢铁侠!虽然是科幻电影,但是科技的进步越来越将这个变成可能。

靠论坛里前辈的教程(大鱼叔叔的日志),又经过一天一夜的努力,自己也成功唤醒这里python-sdk。现在开始记录钢铁侠开发历程

    

一、成功唤醒


替换唤醒词,使用 jarvis(钢铁侠智能管家的名字) 唤醒 ,该唤醒唤醒率很高。 这里有个技巧:在snowboy有唤醒词排行,jarvis 这个唤醒词有很多训练预料,也可以根据自己喜欢选择热门唤醒词语, 如果是自己训练唤醒词语建议使用火狐浏览器,否则会出现无法录音的情况。


TIM截图20171112223041.png

自定义唤醒词语唤醒视频

http://v.youku.com/v_show/id_XMzE1MzQ0ODIyOA==.html?spm=a2hzp.8244740.0.0



二、刚钢铁侠胸灯和眼灯的对接,

首先将开发板与树莓派分离,参考的是这个帖子,胸灯和眼灯硬件可以到淘宝购买,将胸灯眼灯对接到GPIO串口上去,我的眼灯使用的是 pin17和pin10,胸灯使用的是pin4和pin8。

分享灯的驱动代码

#!/usr/bin/python  
# -*- coding: UTF-8 -*-  
  
import RPi.GPIO as GPIO 
import threading  
import time


#线程类              
class  gpioThread(threading.Thread):   #继承父类threading.Thread
    def __init__(self, threadID, name, counter,pin,lightType):  
        threading.Thread.__init__(self)  
        self.threadID = threadID  
        self.name = name  
        self.counter = counter
        self.pin = pin
        self.lightType = lightType
        GPIO.setmode(GPIO.BOARD)
        GPIO.setup(self.pin,GPIO.OUT)
        if self.lightType==1:
            pwm = GPIO.PWM(self.pin,80)
            pwm.start(0)
            self.pwm = pwm 

    def run(self):                  #把要执行的代码写到run函数里面 线程在创建后会直接运行run函数  
        print "Starting " + self.name  
        if self.lightType==0:
            self.light()
        elif self.lightType==1:
            self.beat()
        print "Exiting " + self.name
    #常量模式
    def light(self):
        GPIO.output(self.pin,GPIO.LOW);
    #心跳模式
    def beat(self):
        
        while True:
            for i in xrange(100, 0, 1):
                    self.pwm.ChangeDutyCycle(i)
                    print i
                    time.sleep(.03)  

    #眼灯   
def eyeOn():
        eyeThread = gpioThread(1,"eyeLed",1,8,0)
        eyeThread.start()
        return 8;
def eyeOff(pin):
        GPIO.cleanup(pin)  
    #胸灯
def chestOn():
        chestThread = gpioThread(2,"chestLed",2,10,1)
        chestThread.start()
        return 10;
def chestOff(pin):
        GPIO.cleanup(pin)

#测试
epin = eyeOn()
cpin = chestOn()
time.sleep(5)
eyeOff(epin)
time.sleep(10)
chestOff(cpin)

测试视频

http://v.youku.com/v_show/id_XMzE2MDk0NTYwOA==.html?spm=a2hzp.8244740.0.0


存在问题:

由于刚刚接触 python,测试的时候发现灯关闭了以后线程还在跑,还不知道如何结束线程。此脚本用python2.7 led.py 指令可以顺利跑起来,但是和dueros结合的时引用GPIO库的时候出现问题,具体看下面这个贴:http://dueros.baidu.com/didp/forum/topic/show?topicId=245577

有兴趣可以一起帮忙看看哈。


三、关于钢铁侠外观设计

2017.11 上漆中的钢铁侠


1510801086540023724.jpg

2017.12 钢铁侠模型组装上漆完成

微信图片_20171207123059.jpgTIM截图20171207123643.png


四、基础自定义技能设置

    

详见这个帖子描述

https://developer.dueros.baidu.com/didp/forum/topic/show?topicId=247668&pageNo=1&replyId=15453

    


点赞  ( 0 )
收藏
评论(5)
共5条回复 最后由D****童回复于2017-11-22 15:36
#2z****i回复于2017-11-16 11:07:22

mark

0
#3忧****乐回复于2017-11-16 12:11:27

太赞了 这个

1
#4D****童回复于2017-11-22 15:36:41

太酷了!!!

加精支持!

0
#5未****者回复于2018-03-07 17:17:48

666

0
#6未****者回复于2018-03-07 17:18:23

请问你这个钢铁侠装备哪里买的,组装的么?不是钢的吧?塑料的?

0
TOP