本文已在【飞桨PaddlePaddle】公众号平台发布,详情请戳链接:项目开源!基于PaddleDetection打造实时人体姿态检测的多关节控制皮影机器人
皮影戏是一种以兽皮或纸板做成的人物剪影以表演故事的民间戏剧,皮影一般由头、躯干(上下两部分)、2条腿(每条腿从膝盖分两节)、2只胳膊(大臂和小臂2部分)、2只手组成。皮影模型的肢体结构与人体结构基本一致,其模型控制点位置与人体关节点分布具有极大的重合性。皮影戏的动作表演控制与人关节活动控制肢体动作也具有着极大的相似性,而目前基于深度学习的人体骨架识别技术可以获取图像中人体的关节位置。
因此,我们可以基于算法,通过人体关节位置变动解析人体肢体动作,再控制对应皮影模型的关节,使之完成肢体动作表演,从而可以实现一种新的皮影戏表演方式。
团队介绍
我们的团队为一个4人的开发小组,包括上位机深度学习,下位机嵌入式,机械结构三部分的人员。
队长介绍:谢泽源,深度学习领域爱好者,主要学习方向为计算机视觉,国家级大学生创新创业项目主持人,获得了“全国智能车大赛”“计算机设计大赛”等比赛的国家级奖项。
项目功能与特色
拟人表演
本项目用到目前深度学习较为主流的人体关键点检测模型,其能够非常精确的提取出头部、肩膀、手脚等16个人体关键点,关键点坐标预处理后传输到stm32主控板解析,将数据转化为舵机控制信号,最后实现皮影机器人模仿人体动作的模拟表演。
拟人结构
本项目开创性的提出类人体关节的皮影机器人结构。通过设计皮影机器人按人体关节模型进行控制关节排布,将皮影模型的每个控制关键点与机器人的旋转舵机一一映射,形成了类人体的机械结构。改变了传统皮影复杂的多杆一手操作方式,实现皮影的多关节控制,简化了皮影的控制方式,也简化了控制算法,使皮影舞台戏动作表演丰富。
自动表演
采用stm32单片机作为皮影机器人硬件控制底层,能够接受上位机发生的信息,并解析成皮影机器人的运动控制信息驱动其肢体运动表演。因此可以通过上位机程序编写好皮影戏的动作编排,实现皮影机器人的自主表演。
图像处理模型
想要获取人体姿态,首先需要适合的模型。考虑到实际使用时所面临的各种需求,包括:检测速度快、关键点提取精准、整体程序足够小、对于设备的性能要求尽可能的低等等。我们查阅了目前较为主流的各种人体检测模型,因此选取了百度飞桨的PP-TinyPose模型,基于飞桨框架模型部署起来非常的方便,该模型在Jetson AGX Xavier上跑出了10帧的识别速度,这个效果已经达到了我们需求的帧率。
PP-TinyPose是PaddleDetection针对移动端设备优化的实时姿态检测模型,可流畅地在移动端设备上执行多人姿态估计任务。借助PaddleDetection自研的优秀轻量级检测模型PP-PicoDet,我们同时提供了特色的轻量级垂类行人检测模型。
识别效果图
机械结构
拟人体结构
对于皮影机器人的结构设计,我们不同于以往的用机械臂操作皮影的结构设计,而是采用骨架识别人体骨骼关键点和皮影控制点相适应的拟人机械结构。将皮影的控制结构与人体骨骼关键点一一相对应,并按人体的关节位置排列方式分布,形成了类人体的机械结构。这种机械结构改变了传统需要复杂多变手势操作皮影表演的方式,大大简化了皮影戏的控制算法,使皮影戏自动化和智能化操控成为了可能。
机器人模型图
多关节控制设计
对于皮影机器人的支点控制,我们采用了多关节控制设计。不同于传统手工操作的皮影戏只能同时实现皮影模型3个点的控制,本项目能够实现皮影机器人背板上的2个肩关节、2个髋关节的控制,同时设计了肢体装置,拓展了对皮影模型肘关节、膝关节的控制。而根据皮影模型的需要,可以实现人体所有肢体关节的舵机控制,增加了皮影机器人的关节控制自由度。
肢体装置图
关节旋转驱动控制设计
对于皮影模型动作的驱动方式,我们使用可以360°旋转的舵机作为关节控制。舵机与皮影控制关节通过传动直杆连接,采用连杆杠式的连接方式、回转型的控制方式,舵机轴转动部与活动关节一一对应安装。舵机旋转便可以直接带动皮影模型关节的旋转,同时带动皮影模型肢体关节的旋转,即舵机角度直接决定皮影模型的姿态,这种关节控制的方式大大简化了皮影机器的运动模型,可以实现更多的复杂动作。
水平移动设计
皮影机器人底部安装了滑块,滑块安装在导轨上,通过控制导轨上的滑块左右运动可以实现皮影机器人的水平左右移动,进而满足皮影戏表演的舞台需要。
水平移动导轨
技术方案
本项目涉及上位机皮影机器人的数据处理、皮影机械结构的设计以及下位机硬件电路模块的搭建。应用人工智能技术、机器人结构技术、嵌入式技术来实现皮影机器人的智能化与自动化。
系统通过摄像头模块向Jetson AGX Xavier(上位机)导入实时视频流(hls)或本地视频(MP4)流后,使用OpenCV模块,通过VideoCapture函数指定视频流的数据源,将每一帧图像分别输入到终端,使用PP-TinyPose的深度学习卷积神经网络框架对摄像头获取的人体图像信息进行人体关键点检测。在获取各个关节点的旋转信息后,Jetson AGX Xavier使用串口模块将旋转指令发送给下位机stm32单片机进行数据处理,然后驱动皮影机器人关节舵机、底盘直流电机运动,从而实现皮影机器人模仿人的姿态运动。
系统流程图
最终效果
快速开始**
项目链接
https://aistudio.baidu.com/aistudio/projectdetail/4429519?sUid=701846&shared=1&ts=1668736153862
环境配置
项目的上位机环境为飞桨环境,具备飞桨开发环境皆可运行该项目。
启动服务
下载文件目录
命令行运行
python python/det_keypoint_unite_infer.py --det_model_dir=picodet_v2_s_192_pedestrian --keypoint_model_dir=tinypose_128x96 --video_file=test01.mp4 --device
出现以下内容即启动成功
作品总结
我们从最初有皮影机器人的想法,到分工合作分别搭建机器人组件与算法、机械结构设计、再到软硬件相结合的调试改进,最后成功搭建出一个能投入到实际应用中的皮影机器人,我们付出了汗水也收获了成功的喜悦。
回首望去,我们已实现了:
- 配置了由舵机与亚克力板为主的皮影硬件模型;
- 利用rtmp等传输协议,通过云端传送的视频流远程进行数据分析;
- 在角度转化中,使用三角函数、向量计算等对人体关键点坐标进行转化;
- 关于人体关键点检测,我们选择了OpenPose、MediaPipe、PP-TinyPose等网络模型对人体关键点特征进行提取。
经过这次项目开发,我们认识到要想实现一个机器人是需要软硬件的相互配合,需要考虑诸多因素,实现许多功能才能满足人们的需求。这也说明了机器人领域是一个复杂多变、影响因素众多但值得人们进行探索的领域。目前我国机器人领域发展迅猛、需求巨大,值得引起我们的关注。在之后的开发中,我们会不断完善该项目,使其能更好地运用到实际生活中,从而大大改善人们的生活。
关注【飞桨PaddlePaddle】公众号 获取更多技术内容~