手把手教你打造智能语音机器人(3)-用语音控制机器人

增加语音控制模块

我们先在 DuerOS-Python-Client/sdk/interface 目录下新建模块 wifirobots.py

此模块提供智能机器人的基本操作,包括前进后退、手臂动作等等。

实现定义好 GPIO 引脚,并接好线路。在接口不够的情况下,可使用面包板。

class robots(object):

    def __init__(self,dueros, player):
        '''
        类初始化
        :param dueros:DuerOS核心模块实例
        :param player: 播放器实例(平台相关)
        '''
        self.namespace = 'ai.dueros.device_interface.thirdparty.robot.xiaobai'
        self.dueros = dueros
        self.token = ''
        self.state = 'IDLE'

        self.player = player
        self.player.add_callback('eos', self.__playback_finished)
        self.player.add_callback('error', self.__playback_failed)

        print '....WIFIROBOTS START!!!...'

        #######################################
        #############信号引脚定义##############
        #######################################
        GPIO.setmode(GPIO.BOARD)

        ########电机驱动接口定义#################
        ENA = 29  # //L298使能A
        ENB = 31  # //L298使能B
        IN1 = 7  # //电机接口1
        IN2 = 16  # //电机接口2
        IN3 = 13  # //电机接口3
        IN4 = 15  # //电机接口4

        ########舵机接口定义#################
        S_Hand_L = 18
        S_Hand_R = 22
        S_Ear_L = 37
        S_Ear_R = 36

        ########超声波接口定义#################
        ECHO = 32  # 超声波接收脚位
        TRIG = 31  # 超声波发射脚位

        #######################################
        #########管脚类型设置及初始化##########
        #######################################
        GPIO.setwarnings(False)

        #########电机初始化为LOW##########
        GPIO.setup(ENA, GPIO.OUT, initial=GPIO.LOW)
        ENA_pwm = GPIO.PWM(ENA, 1000)
        ENA_pwm.start(0)
        ENA_pwm.ChangeDutyCycle(100)
        GPIO.setup(IN1, GPIO.OUT, initial=GPIO.LOW)
        GPIO.setup(IN2, GPIO.OUT, initial=GPIO.LOW)
        GPIO.setup(ENB, GPIO.OUT, initial=GPIO.LOW)
        ENB_pwm = GPIO.PWM(ENB, 1000)
        ENB_pwm.start(0)
        ENB_pwm.ChangeDutyCycle(100)
        GPIO.setup(IN3, GPIO.OUT, initial=GPIO.LOW)
        GPIO.setup(IN4, GPIO.OUT, initial=GPIO.LOW)

        #########舵机初始化##########
        GPIO.setup(S_Hand_L, GPIO.OUT)
        GPIO.setup(S_Hand_R, GPIO.OUT)
        GPIO.setup(S_Ear_L, GPIO.OUT)
        GPIO.setup(S_Ear_R, GPIO.OUT)

        ##########超声波模块管脚类型设置#########
        GPIO.setup(TRIG, GPIO.OUT, initial=GPIO.LOW)  # 超声波模块发射端管脚设置trig
        GPIO.setup(ECHO, GPIO.IN, pull_up_down=GPIO.PUD_UP)  # 超声波模块接收端管脚设置echo


    ##########机器人方向控制###########################
    def Motor_Forward(self):
        print 'motor forward'
        GPIO.output(self.ENA, True)
        GPIO.output(self.ENB, True)
        GPIO.output(self.IN1, True)
        GPIO.output(self.IN2, False)
        GPIO.output(self.IN3, True)
        GPIO.output(self.IN4, False)

        shutil.copy("/home/pi/DuerOS-Python-Client/app/resources/forward.mp3",
                    "/home/pi/DuerOS-Python-Client/temp.mp3")
        print "语音反馈"
        self.player.play('file://{}'.format('/home/pi/DuerOS-Python-Client/temp.mp3'))
        os.remove("temp.mp3")

        # time.sleep(2)
        # GPIO.output(LED1,False)#LED1亮
        # GPIO.output(LED2,False)#LED1亮

    def Motor_Backward(self):
        print 'motor_backward'
        GPIO.output(self.ENA, True)
        GPIO.output(self.ENB, True)
        GPIO.output(self.IN1, False)
        GPIO.output(self.IN2, True)
        GPIO.output(self.IN3, False)
        GPIO.output(self.IN4, True)
        shutil.copy("/home/pi/DuerOS-Python-Client/app/resources/backward.mp3",
                    "/home/pi/DuerOS-Python-Client/temp.mp3")
        print "语音反馈"
        self.player.play('file://{}'.format('/home/pi/DuerOS-Python-Client/temp.mp3'))
        os.remove("temp.mp3")


        # time.sleep(2)
        # GPIO.output(LED1,True)#LED1灭
        # GPIO.output(LED2,False)#LED2亮

左转、右转等操作的代码与前进、后台操作类似。代码可参考 Github

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ai语音机器人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值