畅谈机器人弹钢琴
时间:2022-07-05 04:34:32 来源:科普之家 作者:中国人工智能学会 栏目:前沿 阅读:82
一、背景
当前工业机器人已经在生产制造中成为了不可替代的角色,然而服务机器人的发展相对较慢,尤其仿人机器人的服务功能大多处于实验室阶段[1]。现今服务机器人也成为了研究热点,尤其此次疫情更凸显了对医护服务类机器人的需求。人们希望机器人不再是一个冰冷没有感情的机器,也可以成为服务和陪伴人类的伙伴。
服务机器人满足了人们的基本生活要求的同时,为了加强和人们的情感交互,发展出可以演奏乐器的机器人,可以使人们保持一个健康的精神状态。钢琴被誉为乐器之王,其演奏出的乐曲婉转多变,演奏技巧也相应的要求较高,于是对钢琴弹奏机器人的机械结构、控制逻辑要求也相当复杂,吸引了对弹奏钢琴机器人的研究。
二、弹钢琴机器人的发展过程
钢琴拥有强大的演奏能力,相应地带来了复杂的结构与演奏技巧,它包含了数量极大的按键与很宽的音域,含有36个黑键和52个白键,共88个按键。于是如何在乐曲规定的节奏模式中准确的敲击到每个按键成为了钢琴机器人弹奏的最大难点。
在钢琴演奏机器人研究的初级阶段,采用了最基础的一一映射想法,即每个机器按键对应到一个琴键上[2],完成对钢琴所有按键的覆盖,每个机器驱动装置独立控制,再按乐谱循序对机械装置进行驱动,进行乐曲的弹奏。装置如下图所示:
这种结构基本实现了“弹响钢琴”的基本要求,但是由于每个琴键均对应一独立的机械驱动结构,复用率低,带来了极高的成本但是性价比极低,同时体积庞大,远不及人们对其的现实需求。所以需要考虑对其进行改进,研发出一种更轻量级、复用度更高的结构,于是考虑采用一种可移动的演奏装置,使弹奏的机械结构可以沿琴键移动,将之前的“重复结构执行重复动作”转变为“单一结构执行重复动作”,达到对弹奏结构的复用。用一个具有一自由度的手指弹奏单个的音符,通过一个固定在钢琴凳上的平行钢轨结构,使用一个线性电机驱动手指可以沿钢琴左右移动,达到单手指弹奏不同音符的目的。
这便是钢琴弹奏机器人第二阶段的发展。但是这种机器人单音的演奏方式抛弃了钢琴最具魅力的音乐元素——即多个音同时弹奏的和弦与由弹奏力度大小决定的轻重音色的变化。若要达成与人类音乐家相当的弹奏水平,则需要在该模型的基础上再次进行改进。为了模拟出人类演奏钢琴时的效果,近几年对钢琴演奏机器人开始向拟人化发展,学习人类弹奏钢琴时的运动模式设计机械结构,向着仿人手方向发展;同时向人类弹奏钢琴时双手的运动逻辑进行学习,发展更加拟人化的机器人模型。
三、研究现状
弹钢琴机器人主要有机器手机械设计、控制算法、乐谱识别与解析等几部分组成,接下来对这几个主要部分的国内外研究现状进行介绍总结。
1、机器手的机械设计
1.1 基于伺服电机的一种机械设计
考虑到钢琴的复杂性,[2]对该模型进行简化,只要求机械手能够弹奏白键即可,减少了对机械手自由度的要求。该设计中以单个,手指的机械结构作为最基本的单元,每个手指有一个自由度,它提供了按压下琴键最基本的动力。该模型中的驱动装置安装在手掌上,提供了更大的空间,可以选取体积更大的驱动电机,同时减小了手指的负载,加强了手指的灵活性以及轻质量便于进行快速反应。综合电机尺寸与效率,选取伺服电机作为驱动核心安装在手掌上。通过计算得到弹动琴键所需的压力为0.6N,所需的力矩为0.6kg-cm,综合考量最终确定使用HS-55伺服电机。采用5个电机安装在手掌上的方式,手指设计固定20度的弯曲度,减小手指与钢琴接触时的接触面积,同时结构更相似于人类的手型结构。最终的模型可以使手指在0.5s内完成60度的旋转,有着较好的效果。
1.2 基于圆柱形线性电机的设计
选择PM线性电机完成对手掌的驱动,选择圆柱形线性电机作为手指的驱动装置[1]。选取圆柱形线性电机,可以通过调整电机的电压改变驱动压力,达到可以准确控制弹奏力度的目的,更加接近人类演奏时对力度的准确把控。同时收集实际所需的弹奏压力计算出驱动手指所需的电磁力,使它在接触琴键时将该力传递到琴键上。最终在实际弹奏时,根据所需的力调节驱动电机的驱动电压,达到符合乐谱要求的压力和速度。
1.3 基于钢线连接驱动的设计
[3]设计仿人手的双手+五指结构,将手指的自由度增加到两个,一个自由度支持手指垂直方向抬起放下,另一个自由度支持手指左右旋转一定的角度,达到手掌位置不移动但是同一手指可触碰到多个琴键的效果。Stepping motor通过动力驱动使手指旋转达到目标琴键的位置,photointerrupter用来检测控制手指的初始位置,steel string连接到指尖末端,为主要的动力传动装置,pneumatic cylinder用来通过拉紧或放松钢弦控制手指抬起和放下的动作完成对琴键的敲击。所有用来驱动手指的电机都被安装在手掌上来减轻整体的重量,两只机械手被安放在同一水平导轨上,通过高动力的LMXIE线性电机完成对两机械手的左右移动,最大移动速度可达5m/s。
1.4 基于气动阀驱动的设计
[4]将手指结构分为三部分:上关节、中关节与下关节,采用圆柱形的手指外形,具有拟人化特征的同时增加了手指的强度。每个机械手指键用连接销、滚动轴承嵌套配合,利用扭簧实现弯曲后的复位,由阀线连接三个指节。在驱动装置方面采用气动阀方式驱动机械手。空气压缩机向外输出高压气体,通过调压阀来调节气体压力。输出的压力通过五个二位五通电磁换向阀送给双作用气缸。二位五通换向阀在初始位置时,一端进气,一端排气,以实现气缸活塞杆的伸出,此时,闸线状态自由,机械手处于伸开状态。当二位五通电磁换向阀换向时,排气端变为进气,进气端变为排气可以实现气缸活塞杆的收缩,此时,闸线状态紧绷,拉动机械手指节,机械手指处于弯曲状态。五个二位五通电磁换向阀独立工作,分别驱动五个气缸工作,从而使五个手指独立工作,互不影响。
1.5 拟人型柔软骨架机械手设计
[5]提出了一个可观测的环境状态模型,将物理配置、环境状况和驱动状况均集中到该可观测模型中。该状态模型在状态驱动被应用在物理配置上时发挥作用,模型代表了系统和环境之间的相互作用。其中还有一个系统的二级相互作用,即关节作用(joint interaction),它依赖于状态模型对关节空间的限制,基于一种被动的输出行为,引起系统初始物理配置的变化。同时,关节驱动依赖于不同的物理配置,这样可以使一个状态模型成功的同时将另一个状态显现和融入。灵巧手整体的完整结构由3D打印技术实现,按与人手相当的尺寸进行实物打印,手结构关节的三个部分均采用刚性材料和刚性结构(类似于人的韧带),手指的结构采取柔性结构,连接在UR5机器手臂上,与周围的钢琴与机械臂等环境组成状态模型。
2、 机械手的控制算法
2.1 节奏手势(beatgesture)控制算法
[6]的核心思想是通过对人类身体部位打出节拍的识别,控制机器人跟随期望的节拍、速度以及力度进行弹奏,核心是对人类“节奏手势”运动中的周期性进行提取,转化为弹琴的速度和力度。用特殊的颜色对人做出节奏的身体部位进行标记,通过机器人的视觉系统捕捉该光影,沿xy两个方向进行分析捕捉,将每个方向上模式化为sin函数。采取两种不同的方案进行周期追踪:
(1) 基于像素的计算方法,通过每个像素上的强度变化来进行计算。
(2) 基于图像的计算方法,通过对时滞帧进行差分之后估计周期。
在实际的操作中,在二维空间中处理节奏手势,身体任何部位只要做出的动作足够突出能被世界系统识别,就可以用来表达节奏手势。为了给使用者更自由的表达感受,使用非模式化的规则,在图像序列中定位移动对象,提取出一个与控制节奏周期相当的主导周期,用两张光影图和一个逻辑“与”操作对三张连续拍摄的图片进行处理,用每秒13帧的速度对中心进行处理计算。
为了减少环境带来的嘈杂影响,对重心轨迹和归一化中心距的轨迹进行快速傅里叶变换(FFT)找到峰值,通过峰值的平均值计算得到频率的估计值,将该频率传递给弹奏装置,以达到跟随控制者要求弹奏的目的。对于音调的控制,通过MIDI乐谱来读取需要弹奏的音符并进行处理,在该种方法中,每一个音节都会是一个截然不同动作轨迹,每个音符对应的姿势被视觉系统观察到后,机器手会开始迭代学习控制,进行训练。训练阶段结束后,这些音符将会被用在以后的音乐演奏中。
2.2 4bit序列控制算法
[2]主要通过一个4位的bit序列对机械手上的电机进行控制,电机的旋转速度即机械手的移动速度取决于两个序列之间的时间间隔,该间隔由两个序列间的一个等待计时器来固定。算法的主体是一个for循环过程,平台进行初始化完成后。乐谱被初始化为一个数组,音乐弹奏过程将会开始,系统进入for循环直至演奏结束。在循环中,下一个需弹奏的目标位置会与当前位置进行比较,计算所需移动的步数。由于运动方向包含左右两个方向,故通过两个IF语句完成。到达目标之后,控制权移交给控制手指运动的循环,进行手指的弹奏运动。
2.3 基于增益控制开关控制器(gain switched controller)的控制算法
[1]设计分层控制的结构,由主控单元、目标控制单元、物理控制单元三个层次组成。主控系统由PC实现,不断地执行闭环循环控制,负责进行调度和目标控制器发送操作指令,不进行实际的机械控制操作。目标控制器要实现两手和十个手指闭环控制,同时完成信号处理、控制、匹配,所以由FPGA框架实现,达成迅速同时完成多操作要求。手指控制算法的关键在于找到一个合适的控制增益,通过对比模拟的函数与现实中的系统得到一个转移函数,调整其中的参数,使它的效果更符合实际的系统,再通过求极点位置的方法求出速度循环的特征多项式。再由根轨迹法得出不同阻尼率下对应的控制增值,完成算法的设计。
2.4 基于PWM信号的控制算法
[3]通过编码器发送16位的控制脉冲控制机械手的位置与移动。3bit定义手指的8个不同的取向,1bit定义指尖的状态(抬起或放下),用1bit定义手的类型(左手还是右手)。在整体的弹奏流程中,右手负责弹奏旋律,左手负责弹奏伴奏。在第一阶段中首先根据乐谱人工对节奏和音符进行分析,找到最小的节拍型,之后根据音符和旋律以及伴奏的范围确定左右手的移动序列,存至音乐信息文件中。之后系统从数据文件中读取移动信息序列,按事先确定的最小节奏型为时间间隔隔,向机械手发送PWM信号指令,进行弹奏。
2.5 基于动作映射的控制方法
[7]通过视觉识别方式捕捉人类手的运动,通过一个端到端的方式控制机器人灵巧手做出与捕捉到的人手相同的动作,基于新型神经网络TeachNet实现这种端到端的遥控方式。在仿人手上通过前馈型神经网络对每个自由度进行训练,对数据和机器人动作间的映射进行学习,根据对人类抓取姿势的分类,设计了一种基于视觉识别的CNN,将人类手的姿势与机器人手的姿势作为神经网络的输入进行学习。对于训练集中人手与机器人灵巧手的映射关系采取关节位置、方向双重进行映射,对人手上的21个关节进行标记,同时对机械手上的关节也进行标记进行匹配映射,通过视觉观察到手势与关节的标记,再控制灵巧手进行动作变化。该算法中神经网络训练的核心在于大量的对应匹配数据集,模型中收集了包含400K仿真机械手与人手的图像对,并且对其中机器人关节的角度与位置进行调整得到更好的匹配结果,实现了较好的效果。
3、乐谱识别与解析
当前阶段对于弹钢琴机器人的研究主要聚焦于机械结构与控制算法的设计,对于输入的乐谱大多数采用直接解析编码好的文件MIDI[1]作为输入数据,另一部分采用人工预先对乐谱进行处理[4]的方法,识别与解析方法都尚处于较初级的状态。
四、待研究方向
1、机械手结构方面
目前弹钢琴灵巧手的设计多集中于一自由度和两自由度,距离人类真正的手掌与手指结构仍有一定的差距,在未来的研究设计中可以考虑提高手指的自由度,以更接近人手的结构来获得机械手更高的灵活度与更快的反馈速度,更好的完成弹奏钢琴的任务。
2、控制算法方面
当前大多数的控制算法采用“移动到目标位置后复位到初始位置,再进行下一个移动操作”的策略,进行了许多不必要的操作成本。可以探索一个更优的移动控制规划算法,使得机械手不必回到初始位置再进行下一个操作,在演奏途中根据当前位置进行动态规划,使得总的移动操作数尽可能少,来增加演奏的流畅性与速度。
3、乐谱解析方面
现有的弹钢琴机器人架构多采用人类输入解析好的乐谱,再由机器人按解析好的乐谱进行弹奏任务的“被解析、被学习“方式,不像现实中人类弹奏钢琴时自己通过观察乐谱学习再进行弹奏过程规划的流程。在未来的研究中可以考虑机器人通过弹奏学习一体化,可以将音乐乐谱光学特征识别技术应用于乐谱的翻译工作中,由机器人对五线谱进行自我识别与翻译,生成演奏数据供后续使用,同时也可以从互联网上下载乐谱进行识别,增加音乐资源的来源并且减少人类的工作,实现机器人的更加智能化。
参考文献
[1] Yen-Fang Li, and Chun-Wei Huang,“Force Control for the Fingers of the Piano Playing Robot——A Gain Switched Approach”, in IEEE PEDS 2015, 2015.
[2] Dan Zhang, Jianhe Lei, BeizhiLi, Daniel Lau, and Craig Cameron, “Design and Analysis of a Piano PlayingRobot”.
[3] Jen-Chang Lin, Hsing-Hsin Huang,Yen-Fang Li, Jen-Chao Tai, and Li-Wei Liu, “Electronic Piano Playing Robot”, in2010 International Symposium on Computer, Communication, Control andAutomation, 2010. [4] WANG Shu-yang, CHENG Ting-hai,CAI Yun, and LIU Hong-liang, “Development of control system for piano playhumanold robot hand”, 2015.
[5] J.A.E.Hughes, P.Maiolino, andF.lida, “An anthropomorphic soft skeleton has exploiting conditional models forpiano playing”, in SCIENCE ROBOTICS RESEARCH ARTICLE, 2018.
[6] Kwang-Hyun Park, Sung-HoonJeong, and Z.Zenn bien, “BEAT GESTURE RECOGNITON AND FINGER MOTION CONTROL FORPIANO PLAYING ROBOT”. [7] Shuang Li, Xiaojian Ma, HongzhuoLiang, Michael Gorner, Philipp Ruppel, Bin Fang, Fuchun Sun, and Jianwei Zhang,“Vision-based Teleoperation of Shadow Dexterous Hand using End-to-End DeepNeural Network”. [8] Jen-Chang Lin, Hsin-Cheng Li,Kuo-Cheng Huang, and Shu-Wei Lin, “Design of Piano-playing Robotic Hand”, in InternationalJournal of Robotics and Automation, 2014. [9] Zhao Yue, “A Robot Playing thePiano”, in China Academic Journal Electronic Publishing House, 2016.
本文链接:https://www.bjjcc.cn/kepu/16731.html,文章来源:科普之家,作者:中国人工智能学会,版权归作者所有,如需转载请注明来源和作者,否则将追究法律责任!
上一篇:基于类脑感知与认知的复杂影像解译
下一篇:火箭为什么能飞上天