1. 引言
随着科学技术的不断发展,智能机器人已逐渐渗透到各个领域,包括体育运动和智能设备。其中,羽毛球机器人成为一个典型的例子。羽毛球运动员可以利用机器人模拟不同比赛场景、从而提高训练效率;现有的羽毛球机器人在球场上的自由度有限,往往采用固定路线和有限的移动方式,无法满足运动爱好者的需求 [1] 。
羽毛球机器人研究在国外开展的比较早,日本大阪大学工程科学学院在1994年由WanTanabe团队研究出了一种羽毛球机器人,该机器人主要由机械臂、旋转台、摄像机及末端夹紧羽毛球拍的机构组成 [2] 。欧洲比利时技术中心在2011年发布出了“捷达”羽毛球机器人,该款机器人主要由直线导轨、两个线性电机及羽毛球执行机构组成;2016年成都电子科技大学研究的羽毛球机器人Robomintoner采用了在机械运动底盘上放置了滑轨式挥拍支架的方式,由滑轨式挥拍支架夹住两个羽毛球拍,进行羽毛球的接发球 [3] 。
本文主要针对羽毛球机器人腿部运动展开研究、以Solidwords为建模软件,以Blender为仿真软件,在Blender中模拟羽毛球机器人打球时的起步、交叉步以及并步的运动,验证了结构设计及运动算法的可行性。
2. 双足羽毛球机器人模型建立
2.1. 建模
人体进行运动时,涉及到的关节相互之间有着复杂的相互作用关系,总数可达几百个。然而,在设计机器人时,其每条腿或臂一般只包括6个或更少的关节,这相对于人体的多达几百个关节数量来说显得非常有限。因此需要简化人体运动时的自由度,将人体多余的上半身关节删除,脚部如脚趾与脚掌合并。并建立人体的模型与机器人模型间的对应关系 [4] 。
双足羽毛球机器人使用了很多零部件,并通过螺钉和螺纹连接在一起。这些零部件的存在会对运动映射过程中关节的绑定产生影响,所以需要对双足羽毛球机器人进行简化处理。这个简化过程是在SolidWorks软件中完成的,将固定件和驱动件进行合并,使得简化后的模型与双足羽毛球机器人具有相同的自由度。同时,简化后的骨骼长度也和双足羽毛球机器人对应部位的几何长度相等,从而保证了运动学特性的一致性 [5] 。在简化过程中,主要去除了紧固件和较为复杂的形状,整个模型采用了层次结构来反映双足羽毛球机器人关节间的相互耦合关系 [6] 。
在SolidWorks中建立好双足羽毛球机器人简化模型后,为了能更好的在Blender中进行后续如骨骼绑定、权重绘制等操作将装配好的双足羽毛球机器人的姿势进行调整,尽可能的让其左右对称,如图1所示。
![](//html.hanspub.org/file/64-2571575x7_hanspub.png?20240528090030284)
Figure 1. Finite element model of swing arm
图1. 双足羽毛球机器人模型
2.2. Blender中建立骨骼
将双足羽毛球机器人简化模型放到Blender中建立对应的骨骼关系,其中在子父级关系设置中,以中间三角状的结构为root根节点,顺着骨骼向下依次设置子级,双足羽毛球机器人简化模型的另一边腿也如此设置,如表1所示。层次骨骼模型是一种将人体关节以树形结构组织起来的模型,其中父节点的运动变化会影响到下层节点的运动。在层次骨骼模型中,只有根节点具有平移和旋转的运动自由度,而其他节点仅具有旋转的运动自由度 [7] 。此外,骨骼关节点的数量可以根据实际需求进行灵活调整,没有固定的限制,如在人类运动模型中脚部存在三个层次的骨骼如后脚掌、前脚掌及脚趾,而在双足羽毛球机器人简化模型中只有脚部这一个层次,删去多余的关节点。
![](Images/Table_Tmp.jpg)
Table 1. Bipedal robot skeletal hierarchy
表1. 双足机器人骨骼层次表
使用层次骨骼模型可以描述人体骨骼结构,其中节点的旋转会影响整个树形结构的运动。同时,节点的旋转是相对于父节点坐标系进行的,而节点的平移也会改变其子节点的位置。而其他节点的旋转则是在以其父节点为坐标原点的相对坐标系下进行的。如图2所示,在本简化模型中保持偏移量选项完成骨骼父子级的设置,胯部Zu1.L下有子集左大腿Zu2.L,当Zu2.L转动时,不会影响到Zu1.L,但会带动子集Zu3.L及其子集Zu4.L运动 [8] 。
![](//html.hanspub.org/file/64-2571575x8_hanspub.png?20240528090030284)
Figure 2. Schematic diagram of the bone setup
图2. 骨骼设置示意图
通过计算骨骼旋转矩阵,根据所设计的各个杆件长度可以得出各个关节点的绝对坐标位置。例如,在图中所示的节点中,它们各自的绝对坐标位置可以用以下方式表示:
(1)
其中
表示右脚在基坐标系下的绝对坐标,
表示右脚相对于以父节点右膝为原点的相对坐标系下的相对坐标。Ri代表子节点相对于父节点坐标系的旋转矩阵 [9] 。
2.3. 运动重定向以及运动处理
Mixamo提供了许多3D人物模型和动画,如图3所示。通过Mixamo库可以节省再去捕捉运动数据的步骤,而且数据库中的动作相比于人体捕捉更加准确,不会产生噪点。利用Blender的插件Auto Rig Pro,自动生成骨骼结构并创建控制器。这样可以简化骨骼设置的过程,能够快速创建可动画的角色。
从Mixamo库中挑选出起动步、并步、交叉步的步伐动画的.fbx文件并导入到Blender中作为源运动对象,每个动画都为60帧,无蒙皮,体态、脚步宽度、手臂摆动空间都为默认值。运用Auto Rig Pro插件将所双足羽毛球机器人的控制器与源运动对象的骨骼相对应,这里以交叉步为例,如图4所示。
![](//html.hanspub.org/file/64-2571575x13_hanspub.png?20240528090030284)
Figure 4. Blender under-cross-motion skeleton with simplified model
图4. Blender下交叉运动骨架与简化模型
选取源骨架和目标骨架,源骨架为源运动,目标骨架为双足羽毛球机器人简化模型的控制器,使源骨架和目标骨架的各个骨骼一一对应。重新定义起手式的目是使目标骨架的开始动作与源骨架的动作保持一致,并定义好起手式完成运动的映射。
对于骨骼数量相同而骨骼长度不同的两个对象进行重定向,如果直接进行动作的映射,对于目标运动对象,则很有可能会出现脚的部分穿过地面,或者原本应该接触地面的地方出现腾空的现象;在对骨骼数量不同的对象进行运动重定向时,需要进行骨骼关联和初始姿态对齐。如果直接使用原对象的运动数据来控制目标对象,则可能会发生失真现象。这是因为两个对象具有不同的骨骼结构,导致它们在骨骼关联和初始姿态对齐方面存在差异,从而使得原始运动数据无法直接复用。如图5所示,在进行并步运动重映射第44帧时,原运动对象此时右脚为支撑脚,左脚抬起,目标运动对象此时右脚的末端效应器已经接触地面,而目标对象右脚是处于悬空状态。像这种情况就是出现失真帧数的情况,需要人工手动调整,使得脚和地面接触。同时运用Blender自带的IK求解器求解双足羽毛球机器人简化模型的各个关节的角度 [10] 。
在双足羽毛球机器人完成三个步伐的运动重定向后,由于双足羽毛球机器人在步伐移动中存在有骨骼比例不协调,自由度不匹配的问题,需要对关节位置和匹配骨骼旋转进行处理和调整。在实验中,将骨骼按比例缩小,并对骨骼的旋转加以限制,如对于脚部多余的脚趾骨的自由度进行删除,可以通过提取人类动作的关键点,将这些点应用于双足羽毛球机器人上,以实现同步复制人类动作。在完成这个过程后,需要对得到的动作数据进行预处理,以适应机器人的环境和特征。将个别不符合机器人运动规律及与原运动动作相差太大的帧数进行预处理,使得前后帧数动作能够更平顺,在Blender中使用曲线编辑器中进行调整,获得最终运动序列。
这个三个步伐进行重定向时的基本参数如表2所示。为了避免在Blender环境中双足羽毛球机器人与人形角色在运动时产生重叠,需要重新定位和调整其初始根位置和旋转值。这意味着将初始根位置和旋转值与整个机器人的位置和旋转值对齐,因此将导入的人形角色在以双足羽毛球简化模型双脚中央的原点,往右平移一段距离,将简化模型靠近原点有助于后续解算。而末端关节对应双足羽毛球机器人的Zu4.L与Zu4.R,即左右脚。
![](Images/Table_Tmp.jpg)
Table 2. Redirect the parameter table
表2. 重定向参数表
最后由Blender软件导出BVH文件。BVH (BioVision Hierarchy)文件是一种用于记录动作捕捉数据的文件格式,其中包含了骨架信息和每一帧的运动数据 [11] 。通过递归方式定义各个关节之间的位置和旋转分量,形成一个完整的骨架结构。BVH文件头部包含了诸如HIERARCHY和ROOT等关键词,以定义根关节和骨架段的数量及相关信息。每一个骨架段都包含了若干相关数据,并且这些数据需要通过递归方式定义它的子关节 [12] 。ROOT为根关节关键词,后面跟着根关节的名字。一个BVH文件可以包含任意数量的骨架段。每一个Segment都包含了偏移量OFFSET、CHANNEL信息和JOINT/END SITE等关键词。CHANNEL用于定义channel的数目和类型,以及旋转次序。BVH文件的MOTION部分定义了动作捕捉数据的帧数、采样频率以及每一帧对应的运动数据。对于子关节而言,其平移信息储存在OFFSET中,而旋转信息则来源于MOTION部分。而对于根节点来说,其平移总量由OFFSET和MOTION中定义的平移量之和确定。
3. 运动数据分析与解算
3.1. 运动数据分析
在使用Blender获取运动数据后,需要将映射到双足羽毛球机器人模型上的数据转换为适合机械控制使用的运动数据。其中的主要问题在于BVH数据文件中的关节角度是以每一帧“子关节”局部坐标系相对于其“父关节”局部坐标系的欧拉角表示的,而在机器人运动控制中所使用的关节角度则是以笛卡尔坐标系为基准,表示关节围绕其自身局部坐标系旋转的角度。
为了将从BVH文件中提取出的人体运动数据应用于双足羽毛球机器人,让双足羽毛球机器人模型能够运动,需要将从BVH文件中获取的数据转换成适合该机器人模型的格式,并且将其与双足羽毛球机器人的关节结构进行匹配。简化模型与双足羽毛球机器人具有相同的自由度数和关节结构,并且骨骼长度也与仿人机器人实体对应部位几何长度相等。因此,可以利用简化模型关节节点的绝对空间坐标来匹配双足羽毛球机器人模型的运动数据。具体而言,可以使用欧拉角变换方法,将BVH文件中的数据读取出欧拉角变换解,再转换为简化模型各关节节点的绝对空间坐标;然后通过逆运动学方法计算出双足羽毛球机器人各关节所需的角度,从而得到匹配的数据,流程如图6所示。
![](//html.hanspub.org/file/64-2571575x15_hanspub.png?20240528090030284)
Figure 6. BVH data stream calculation process
图6. BVH数据流解算流程
3.2. 运动数据解算
将导出的三个步伐的BVH文件通过MATLAB读取,将读取的数据存储在一个包含各个节点信息的结构体中。并通过逆运动学求解出起动步、交叉步、并步的各个关节的俯仰角、翻滚角角度,将所得出的角度进行二阶多项式平滑处理,能有效降低不规则和噪声数据带来的影响,最终获得了各个步伐关节角随时间变化的图。
如图7~9所示是双足羽毛球机器人在交叉步情况下,各个关节角度随时间变换的角度图,可以看出在Blender环境下左踝部的俯仰角度的幅值比右踝部大,翻滚角则相似,左右髋部的翻滚角基本相似。左右膝关节的角度则是左膝相对于右膝平移了0.4 s,符合交叉步步伐角度变化规律。
![](//html.hanspub.org/file/64-2571575x16_hanspub.png?20240528090030284)
Figure 7. Cross step: The angle of pitch and roll angle of the left and right ankles
图7. 交叉步左右踝部俯仰角及翻滚角角度
![](//html.hanspub.org/file/64-2571575x17_hanspub.png?20240528090030284)
Figure 8. Cross step left and right hip pitch angle and roll angle
图8. 交叉步左右髋部俯仰角及翻滚角角度
![](//html.hanspub.org/file/64-2571575x18_hanspub.png?20240528090030284)
Figure 9. Cross step left and right knee pitch angle
图9. 交叉步左右膝俯仰角角度
双足羽毛球机器人起动步各个关节角度如图10、图11所示。可以看出起动步时,左侧腿部的在俯仰角上的规律相似,在0.64 s左右发生了变化,由递增变为了递减,是因为双足羽毛球机器人与地面的接触点发生了变化,由单腿支撑相转换成了左脚与右脚与地面接触线的连线面积,重心也开始由在左脚单腿时的ZMP逐渐往中心靠拢。右腿部在0.4 s及0.64 s左右发生了突变,在0.4 s左右时,双足羽毛球机器人的重心已完成从一开始位于两腿中央切换成左腿支撑相,右腿开始向后摆,此时髋关节的俯仰角开始快速减小,带动整个腿摆动。在0.64 s左右时,右脚与地面接触,双足机器人的重心开始逐渐往两腿中心偏移。左髋部与左踝部的俯仰角角度变化曲线基本相似,右髋部翻滚角在双足羽毛球机器人右脚接触地面后与左髋部翻滚角的曲线也相似,使得整个机器人能够将整体胯部和重心平移到中心。
![](//html.hanspub.org/file/64-2571575x19_hanspub.png?20240528090030284)
Figure 10. The pitch angle of the left and right legs of the starting step
图10. 起动步左右腿俯仰角度
![](//html.hanspub.org/file/64-2571575x20_hanspub.png?20240528090030284)
Figure 11. The angle of each joint of the starting step
图11. 起动步各关节角度
双足羽毛球机器人并步各个关节角度变换如图12、图13所示,可以发现在双足羽毛球并步时左右踝部、髋部的翻滚角度相似、这样可以使得胯部的平台尽量没有X轴(前进方向)偏转,且左右脚的翻滚角曲线呈现对称,符合并步时先左脚支撑伸出右脚落地后转换右脚支撑的步态,同时因为并步右脚(前进脚)的幅度大于左脚前进的幅度,在曲线图上则表现为左右腿角度的幅度不同。
![](//html.hanspub.org/file/64-2571575x21_hanspub.png?20240528090030284)
Figure 12. Step side by side with the left and right leg pitch angles
图12. 并步左右腿俯仰角度
4. 结论
本文设计了双足羽毛球机器人的详细模型并进行简化,简化后的模型的尺寸、运动方式不变,导入到Blender软件中并进行了运动重定向,将已有人体的三种步伐的运动数据映射到双足羽毛球机器人上,将得到的各个节点的欧拉角数据通过矩阵转换为绝对坐标,并运用逆运动学得到双足羽毛球机器人的各个关节的角度值。将所得到的角度值随时间的序列通过二阶多项式平滑处理获得双足羽毛球机器人进行三种步伐运动的曲线。完成了双足羽毛球机器人的主要运动动作,将人类在打羽毛球场景下起动步、并步、交叉步的数据重定向到机器人上,实现在无重力环境下的机器人三种步伐动作,得到双足羽毛球机器人各关节角度变化的帧数据,验证了结构设计及运动算法的可行性。