目录
- 前言
- 参赛所需
- 参赛团队
- 项目过程
- AprilTag视觉定位
- walk
- dance
- 比赛流程
- 取得成绩
- 项目小结
前言
这里是果力成,今天分享的是关于"优必选"杯2021年中国机器人技能大赛,记录项目过程中遇到的问题和小伙伴们一起奋斗的经历,算是赛后总结了.
参赛所需
- 工具: 树莓派 YanShee机器人
- 语言: python Linux
YanShee官网
YanShee是优必选教育面向高中和大学生开发的一款开源人形机器人教学平台。优必选yanshee机器人采用Raspberry Pi+STM32开放式硬件平台架构,配套多种开源传感器包,提供专业开源学习软件,支持BLockly、Python、Java、C/C++等多种编程语言学习及多种AI应用的学习和开发。
此次我们所参与的比赛也是来自主办方提供的机器人 |
参赛团队
团队成员:两名指导老师以及三名学生。比赛前期去参加学院技能展示月活动,从避障迷宫小车,F165-U室内编队无人机,激光切割机等有趣的东西上学习,顺便玩一玩。
项目过程
- 机器学习
此次大赛有很多分支项目,而我们参加的正是机器学习项目.机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能。 - 项目开发
运用开发指南,python语言编写程序对YanShee机器人进行调试,在树莓派内执行,达到机器人
行走
转向
AprilTag视觉定位
物体识别
语音对话
肢体动作模仿
等功能. - 开发工具: MobaXterm或者Xshell; VNC viewer; filezilla;
PyCharm.
下面贴出机器人调试的部分相关代码 |
AprilTag视觉定位
import YanAPI
import time
YanAPI.start_aprilTag_recognition(tags=[{'id': 1, 'size': 0.06}])
while True:
ret = YanAPI.get_aprilTag_recognition_status()
if ret['data']['AprilTagStatus'] == []:
print('no find tags')
time.sleep(1)
else:
result = ret['data']['AprilTagStatus'][0]
if result['position-z'] <= 0.20:
break
print(result['position-x'] < -0.06)
if result['position-x'] < -0.06: # Tag在机器人右侧
YanAPI.sync_play_motion(name='walk', direction='left', speed='slow', repeat=2)
# put_motions("walk", "right", "slow", 2)
time.sleep(1)
elif result['position-x'] > 0.06:
YanAPI.sync_play_motion(name='walk', direction='right', speed='slow', repeat=2)
# put_motions("walk", "left", "slow", 2)
time.sleep(1)
else:
YanAPI.sync_play_motion(name='walk', direction='forward', speed='normal',repeat=1)
YanAPI.sync_play_motion(name="reset")
这里的AprilTag标识追踪,我们要达到的目的是让机器人在摄像头检测到标识后向前行走,到设定的距离后停止.在次过程中,因为机器人本身调试过多后关节处的舵机有时会产生误差,导致走偏,所以我们在这个问题上陷了许久,机器人都来回换了三个.所幸后续也解决了.
walk
import YanAPI
import time
def tt():
ip_addr = "192.168.43.185"
YanAPI.yan_api_init(ip_addr)
res = YanAPI.start_play_motion(name="walk",direction="forward",speed="normal",repeat=3)
time.sleep(10)
print(res)
YanAPI.sync_play_motion(name="reset") #做一个其他的motion可以打断walk
res1=YanAPI.sync_do_color_recognition()
time.sleep(5)
print(res1)
color_dict={"no color detected":"没有检测到颜色","green":"绿","red":"红","blue":"蓝","yellow":"黄"}
result=res1["data"]["color"][0]["name"]
for key in color_dict:
if(key==result):
color_res1=color_dict[key]
print("\n识别到颜色为:"+color_res1+"色")
if __name__ == '__main__':
tt()
dance
def m():
ip_addr = "192.168.43.148"
YanAPI.yan_api_init(ip_addr)
res=YanAPI.start_play_motion(name="LittleApple")
print(res)
time.sleep()
print(m)
res=YanAPI.start_play_motion(name="Stop")
print(res)
if __name__ == '__main__':
m()
比赛流程
- 机器人走出启动区右转,进行物体识别
- 机器人后退左转回到主路线,进行标识识别追踪前进到指定位置
- 机器人转向摆正到指定区域,进行肢体动作模仿
取得成绩
最终比赛结果也是比较不错,在与全国许多高校竞争中获得了比赛的冠军.老师还请我们整了一顿大餐,不亦乐乎~
项目小结
学习参赛很累,那段时间自由支配的时间确实很少,但也从中收货到了很多东西,这值得十分开心的.画上圆满句号
"追求的后面没有句号,人生也永远没有太晚的开始,只要你听从内心的召唤,勇于迈出第一步,人生的风景就永远是新奇的,美妙的." |