准备
需要:
1,(优必选)yanshee机器人+Yanshee 开发者说明
2,手机-联网简单操控 / HDMI线与显示器和键鼠标-图形化开发环境 / 笔记本(VNC-内置图形化开发环境/PyCharm等平台)。
3,PyCharm + 一定的Python基础
(本篇为个人学习小结,只介绍手机联网 + 笔记本PyCharm连接使用)
PyCharm的配置
1,获取SDK–YanAPI.py
(多种途径可获得)
Yanshee 官网介绍:将机器人本体系统/usr/lib/python3.5路径下的YanAPI.py文件拷贝到PC端相应Python开发软件依赖库的路径下
1-1,自己获取:(已经获取的跳到下一步)
下载VNC,安装
创立新连接
输入IP,连接树莓派(yanshee)
双击选中你要连接的
输入用户名和密码,用户名:pi,密码:raspberry,然后点击ok,如下图所示:
最后
2,新建Python项目,将YanAPI.py
放在项目目录下
3,安装需要用到的三个包
# cmd控制台打开项目包目录下下载以下三个基础包
# pip3 install nest_asyncio
# pip3 install requests
# pip install opencv-python
安装时`opencv-python`指的是cv2,引用`import cv2`物体与颜色识别。
在 Yanshee 机器人上还需要引入 PiCamera 模块,可以实现与 CV2 联动采集并处理图像。
安装成功后,可以看到最下行Successfully
注意网络
最后可以在lib
文件目录下看到:
4-1,获取yanshee的ip
4,新建连接测试代码
import YanAPI
import requests
import cv2
# 初始化(第一步)
YanAPI.yan_api_init("获取yanshee的ip")
# 输出验证
print("Hello") # 证明项目编译器没问题正常运行
print(YanAPI.get_robot_mode()) # 随便拿的代码看输出说明连接yanshee没问题
运行如下说明连接成功
接着就可以开始参照文档开始操控yanshee了!
先手后腿(注意不要让机器人摔了)
import math
import YanAPI
import time
YanAPI.yan_api_init('ip') # 第一步初始化,确保IP正确
# 想要看执行详情print打印输出
print(YanAPI.get_robot_language())
YanAPI.get_robot_language()
print(YanAPI.get_button_led_color_value())
# YanAPI.set_robot_led(type:button, color:red, mode:on)
YanAPI.set_robot_led('button', 'red', 'on')
# 音量调节
print(YanAPI.get_robot_volume()) # 查看当前音量
YanAPI.set_robot_volume(80) # 调节设置音量
# 语言播报-先调声音再播报
YanAPI.sync_do_tts("Hi,Nice to meet you!", True)
# 时间戳转正常时间
timeArray = YanAPI.get_current_motion_play_state()['data']['timestamp']
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(timeArray)))
# 动作
YanAPI.sync_do_motion_gait(1, 0, 3, 3, True) # 谨慎使用防摔
print(YanAPI.get_motion_gait_state())
YanAPI.exit_motion_gait() # 停止所有动作
# 舵机角度
# 查询指定多个舵机角度
List = ["NeckLR", "RightShoulderRoll"]
print(YanAPI.get_servos_angles(List))
# # 转动一个或多个舵机
Dict = {
"RightShoulderRoll": {"angle": 90, "isNeedBessel": True, "runtime": 1000},
"LeftShoulderFlex": {"angle": 90, "isNeedBessel": False, "runtime": 800},
"RightKneeFlex": {"angle": 90, "isNeedBessel": True, "runtime": 1500},
"NeckLR": {"angle": 165, "isNeedBessel": False, "runtime": 200}
}
YanAPI.set_servos_angles({"NeckLR": 90}, 200) # 单个({name:int},时间)
YanAPI.set_servos_angles(Dict, 200) # 多个(字典名,时间)
# 设置分层动作舵机角度值(一次可以设置一个或者多个舵机角度值)
YanAPI.set_servos_angles_layers(Dict)
print(YanAPI.set_servos_angles_layers(Dict))
# 视觉-人脸识别
# types = ["recognition", "tracking", "gender", "age", "mask" ,"glass"] # 其他模式看文档
res1 = YanAPI.sync_do_face_recognition("gender")
res2 = YanAPI.sync_do_face_recognition("glass")
print(res1, res2)
# 识别手势
res = YanAPI.sync_do_gesture_recognition()
print(res)
技巧积累
1,说明书(Yanshee 开发者说明)从头大概点到尾每个都点点,把握有哪些说明。有些后续遇到的问题官方都有写,比如用VNC连接后的屏幕调整。
2,API 文件理解有误,搜别人编写或操作的视频可以快速把握,或者其实教程里也有。