【项目回顾】基于Yanshee的AI服务型机器人(一)

本项目基于河海大学与深圳优必选公司合作的训练营,使用Yanshee机器人实现包括联网控制、触摸传感互动、环境监测播报及面部识别等功能。团队通过UDP广播实现机器人指令统一发送,利用触摸传感器完成人机握手与语音反馈,温湿度传感器实时播报环境信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1月20日-1月25日
我参加了河海大学和深圳优必选公司联合举办的训练营
作为机器人领域的龙头企业,优必选公司的产品Alpha曾经登陆过春晚进行表演,这次活动中他们的机器人产品Yanshee也非常厉害
在训练营的末尾,我们小组用了一天半的时间做了一个小型的项目,当作我们的结营汇报,以下为项目内容。

此次项目实现了以下几个功能:

  1. 多个机器人相互间的联网
  2. 通过UDP网络广播实现统一发出指令
  3. 通过触摸传感器(Touch Sensor)进行人机握手操作以及动作、语音反馈
  4. 通过温湿度传感器(Temperature & Humidity Sensor)进行实时的温湿度播报
  5. 通过网络爬虫程序获得当前城市当日的天气预报并通过语音播报
  6. 通过红外传感器(Infrared Sensor)进行避障巡逻
  7. 通过红外传感器(Infrared Sensor)进行遇障绕路行走
  8. 通过摄像头的抓拍进行人脸识别、跟踪
  9. 进行预设好的语音交互
  10. 拍照识别摄像头内人脸个数,与先前录入的人脸进行匹配,相似的返回姓名
  11. 分析拍摄的照片中人脸的情绪,并根据不同的情绪元素做出不同的反馈
  12. 集体跳舞(千手观音与卡路里)

本文将介绍前四个功能的实现

1-2:机器人的联网与UDP广播

import RobotApi
import socket
#----------initicialize----------
RobotApi.ubtRobotInitialize()
ret=RobotApi.ubtRobotConnect("SDK","1","127.0.0.1")
if (0!=ret):
    print("Can not connect to robot ****")
    exit(1)


#----------broadcast-------------
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET,socket.SO_BROADCAST,1)
server_addr=('',8080)
s.bind(server_addr)
data,client_addr=s.recvfrom(65535)

首先导入socket模块和Yanshee机器人自带的RobotApi模块,
用RobotApi.ubtRobotInitialize()对机器人进行初始化,
用RobotApi.ubtRobotConnect()连接到机器人,其中这里的127.0.0.1为创造一个本地回环,也可以输入机器人当前的IP地址
ubtRobotConnect()的介绍
之后就进入了广播的部分,通过这里的程序实现对子网下8080端口的获取,并接受信息

3:通过触摸传感器进行人机握手操作以及动作、语音反馈

import RobotApi
from time import sleep

def handshake():
    data,client_addr=s.recvfrom(65535)
    print(data)
    if data=="hand":
        print(1)
        servoAngle=RobotApi.UBTEDU_ROBOTSERVO_T()
        servoAngle.SERVO5_ANGLE=15
        servoAngle.SERVO6_ANGLE=80
        servoAngle.SERVO4_ANGLE=170
        RobotApi.ubtSetRobotServo(servoAngle,20)
        RobotApi.ubtVoiceTTS(0,"hello,nice to meet you")
        while True:
            time.sleep(1)
            RobotApi.ubtSearchExtendSensor()
            sensorValue=RobotApi.UBTEDU_ROBOTTOUCH_SENSOR_T()
            RobotApi.ubtSearchExtendSensor()
            ret=RobotApi.ubtReadSensorValue("touch",sensorValue,4)
            if(ret!=0):
                print("read sensor error")
                RobotApi.ubtSearchExtendSensor()
            if(sensorValue.iValue!=0):
                print("value : %d\n"%sensorValue.iValue)
                servoAngle=RobotApi.UBTEDU_ROBOTSERVO_T()
                servoAngle.SERVO1_ANGLE=90
                servoAngle.SERVO2_ANGLE=139
                servoAngle.SERVO3_ANGLE=164
                servoAngle.SERVO4_ANGLE=89
                servoAngle.SERVO5_ANGLE=39
                servoAngle.SERVO6_ANGLE=15
                servoAngle.SERVO7_ANGLE=90
                servoAngle.SERVO8_ANGLE=59
                servoAngle.SERVO9_ANGLE=74
                servoAngle.SERVO10_ANGLE=109
                servoAngle.SERVO11_ANGLE=89
                servoAngle.SERVO12_ANGLE=89
                servoAngle.SERVO13_ANGLE=119
                servoAngle.SERVO14_ANGLE=105
                servoAngle.SERVO15_ANGLE=69
                servoAngle.SERVO16_ANGLE=89
                servoAngle.SERVO17_ANGLE=90
                RobotApi.ubtSetRobotServo(servoAngle,20)
                RobotApi.ubtVoiceTTS(0,"thank u")
                time.sleep(1)
                break

这里首先让机器人伸出手并问候

        servoAngle=RobotApi.UBTEDU_ROBOTSERVO_T()
        servoAngle.SERVO5_ANGLE=15
        servoAngle.SERVO6_ANGLE=80
        servoAngle.SERVO4_ANGLE=170
        RobotApi.ubtSetRobotServo(servoAngle,20)
        RobotApi.ubtVoiceTTS(0,"hello,nice to meet you")

ubtGetRobotServo的介绍
再通过触摸传感器进行读数,若是感受到触摸,就返回原始位置

4:通过温湿度传感器进行实时的温湿度播报

import RobotApi
from time import sleep

def temp_humi():
    data,client_addr=s.recvfrom(65535)
    print(data)
    if data=="tem":
        sensorValue=RobotApi.UBTEDU_ROBOTENV_SENSOR_T()
        ret=-1
        while (ret!=0):
            ret=RobotApi.ubtReadSensorValue("environment",sensorValue,12)
            if (ret!=0):
                print("read sensor error!\n")
                time.sleep(1)
                RobotApi.ubtSearchExtendSensor()
        print("TemValue:%d\n"%sensorValue.iTempValue)
        print("HumValue:%d\n"%sensorValue.iHumiValue)
        RobotApi.ubtVoiceTTS(0,"wendo %d"%sensorValue.iTempValue)
        RobotApi.ubtVoiceTTS(0,"shido %d"%sensorValue.iHumiValue)

若接受到的信息是‘tem’,即声明进入读取传感器数据的部分(RobotApi.UBTEDU_ROBOTENV_SENSOR_T())
并打印出来并用文字转语音(ubtVoiceTTS)用声音信息读出
ubtReadSensorValue的介绍
ubtVoiceTTS的介绍
功能5-8:【项目回顾】基于Yanshee的AI服务型机器人(二)

功能9-12:【项目回顾】基于Yanshee的AI服务型机器人(三)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值