胡 存,刘敬猛,陈伟海
(北京航空航天大学自动化科学与电气工程学院,北京 100191)
Virtools是一款优秀的虚拟现实软件,广泛应用于车辆模拟驾驶、虚拟手术、虚拟漫游、虚拟实验、三维游戏等众多领域[1],但在仿生六足机器人的仿真研究中还鲜有相关论文发表。而实际上,若将Virtools应用于仿生六足机器人的仿真研究中,不仅能模拟仿真单个机器人的运动状况,而且能更好地模拟机器人与机器人、机器人与周边环境的相互作用。但这种应用的难点之一,也是关键点之一在于对舵机的控制模拟。在仿生六足机器人的设计制作中,通常采用舵机(servo)作为其关节。仿生六足机器人的各种步态,是通过舵机在控制器的作用下,带动与之相连的肢节按相应时序旋转至指定角度位置实现的[2]。
如图1所示,舵机由舵盘、外壳、直流电机、减速齿轮系、控制电路板、反馈装置等组成[3]。其一般控制原理如图2所示。
目标位置信号(通常为一定占空比的PWM波)通过信号线传至控制电路板,电机在控制电路发出的驱动信号作用下开始旋转,该旋转运动通过减速齿轮系减速之后由输出轴的输出端输出,同时由安装于输出轴另一端的位置反馈电位器输出位置反馈电压信号,馈送至控制电路板。当输出轴达到目标位置之后,输出轴停止转动并保持在目标位置,直至新的目标位置信号传入控制电路板[4]。
图1 舵机的一般结构图
图2 舵机的一般控制原理图
在对仿生六足机器人的运动学仿真中,由于只需要对运动进行仿真,因此可以将对舵机的控制简化为对舵机体与舵机轴的相对旋转运动的控制,即只需要模拟出符合目标位置等要求的相对旋转运动,而不用考虑舵机真实的控制过程。
Virtools软件本身并不具备三维建模能力,所需模型由第三方软件创建并导入。为了在必要时能方便地加工成实物样机,本文选择Solidworks+3Ds Max的建模方法,首先利用Solidworks建好舵机体、舵机轴以及仿生六足机器人其他部件的基础三维模型,然后生成.stl格式文件并导入3Ds Max中进行模型优化、烘焙贴图和重置变换,之后再导出为Virtools可调用的.nmo格式文件[5]。六足机器人与舵机三维模型如图3所示。
图3 六足机器人与舵机三维模型
本文所述舵机是应用场合对仿生六足机器人的运动模拟,应置于有重力、摩擦力等力学效果的物理环境之中;因此,对舵机的仿真应置于Virtools Physics Pack之中[6]。要实现这一点,首先要对模型进行物理化。物理化的关键在于合理的参数选择,不合理的参数可能使仿真结果偏离实际,严重时甚至导致引擎崩溃。在众多参数中,较为重要的是Mass(质量)的设置。根据Virtools技术手册可知,作为运动链“根物体”的物体质量不能设置得太小。换句话说,不能简单的按实际质量进行设置,必须根据仿真效果综合考虑。
在Virtools中,物理化之后的模型将不能使用Rotate、Translate等基础3D变换行为模块对其进行运动控制。因此,须建立一个虚拟帧,利用基础3D变换行为模块控制虚拟帧的旋转运动,再利用Physics Pack中运动控制行为模块使舵机轴跟随该虚拟帧的运动。虚拟帧所作旋转运动的速度、位置等参数便是舵机旋转运动的速度、位置参数。
2.3.1 舵机运动控制流程
舵机的运动控制流程如图4所示。
要实现舵机的运动控制,必须采用Virtools消息控制机制[7],当舵机接收到系统发送的指令后,通过Switch On Message进行指令匹配以触发相应流程[8]。当接收到的是锁死指令时,将判断当前舵机状态,若处于解锁位置,则触发Set Physics Constraint行为模块,在舵机轴与舵机体间设置完全约束,锁死舵机,并置状态参数d=1。当接收到的是旋转指令时,首先提取旋转指令附带的运动参数——目标位置a,并将目标位置a与当前位置b进行比较,若a≠b,则判断当前舵机状态。若处于锁死位置,则利用Destroy Physics Constraint破坏全约束,使舵机解锁,并置状态参数为0,之后在舵机体与舵机轴之间利用行为模块Set Physics Hinge添加铰链连接;若处于解锁位置,则直接在舵机体与舵机轴之间添加铰链连接。舵机解锁之后,一方面触发Rotate行为模块使虚拟帧旋转到目标位置,另一方面触发Motion Controller行为模块使舵机轴跟随虚拟帧的旋转运动。当舵机轴运动到目标位置时,触发Set Physics Constraint行为模块,在舵机轴与舵机体之间设置完全约束,锁死舵机,并置状态参数d=1。
图4 舵机的控制流程
2.3.2 Torque Factor参数设置
舵机轴在跟随虚拟帧作旋转运动时,必须合理设置Motion Controller行为模块的参数,特别是Torque Factor。该参数如果设置得太小,舵机轴将不能达到虚拟帧所在目标位置;若过大,则运动加速度会很大,机体在惯性的作用下可能失稳。该参数的合理值取决于运动的距离,距离越大,所需Torque Factor反而越小;距离越小,所需Torque Factor反而越大。本文以安装在仿生六足机器人基节与股节间的舵机为例,提出一种动态的Torque Factor值设置方法。
图5 舵机运动示意图
如图5所示,在舵机的一个旋转运动回合中,可能经历 A→B,B→A′,A′→C,C→A 区间中的一个或连续几个。假设图中a点为目标位置,b点为起始位置。当a<b时,逆时针旋转;当a>b时,顺时针旋转;当a=b时,不旋转。
当a<b且b<0°,即在A→B区间逆时针旋转时,腿的重量会阻碍舵机旋转;当a>b且b>0°,即在A′→C区间顺时针旋转时,部分机体重量会阻碍舵机旋转。这两种情况下的合理Torque Factor值与运动距离|a-b|的关系如图6和图7所示。
图6 A→B区间Torque Factor值与运动距离|a-b|的关系
图7 A′→C区间Torque Factor值与运动距离|a-b|的关系
当 a<b 且 a>0°,即在 C→A 逆时针旋转时,机体的部分重量会促使舵机的旋转;当a>b且a<0°,即在B→A′区间顺时针旋转时,腿的重量会促使舵机的旋转。这两种情况只需要维持一个小的Torque Factor值即可,而不用关心运动距离|a-b|的值。
当出现跨越零点的情况,即 a<0°且 b>0°,或者a>0°且 b<0°时,则从 b 点到 0°位置为外力(机体重量或腿的重量)促进舵机旋转,从0°位置到a点是外力阻碍舵机旋转,此时需考虑运动距离|a|与Torque Factor值之间的关系。
为了更快的根据a和b的值实时计算出合适的Torque Factor值,将上述6种情况简化为前4种情况,即忽略旋转跨越零点的情况,将其归入A→B和A′→C区间内的运动。
A→B区间内Torque Factor值与运动距离|a-b|的关系可简化为分段曲线:
A′→C区间内Torque Factor值与运动距离|a-b|的关系可简化为分段曲线:
B→A′区间内 Torque Factor值设为固定值0.03,C→A区间内 Torque Factor值设为固定值0.039。
当不采用动态Torque Factor值设置方法时,为覆盖全区间旋转范围,必须设置区间内要求的最大的Torque Factor值。以基节与股节间的舵机在A→B区间内的运动为例,依据图6和公式(1)设定Torque Factor值为 0.0613。取 1°、5°和 45°3 个旋转距离作为参考点,测量比较固定Torque Factor值和动态Torque Factor值对机体产生的影响,其中Xmax,Ymax,Zmax为机体在 X、Y、Z 轴上偏移的最大距离,θ(x)maxθ(y)max,θ(z)max为机体在 X、Y、Z 轴上偏转的最大角度。测量结果如表1所示。
实验结果表明,采用上述Torque Factor值设方法能有效地使舵机在运动快速性与平稳性之间达到平衡,从而改善整个机器人的运动状况,而且旋转距离越大,这种改善越为明显。
表1 不同Torque Factor值设定方法对运动平稳性的影响
舵机是组成仿生六足机器人的关键部件,若要在Virtools中仿真机器人与机器人、机器人与环境间的相互作用,必须首先解决舵机在Virtools中的仿真问题。本文针对舵机运动特点,充分利用Virtools软件现有组件,特别是Virtools Physics Pack,合理设置相关参数,成功实现了舵机的运动仿真,从而为实现仿生六足机器人在Virtools中的仿真打下了基础。
[1]吴静,何强.基于Virtools的教学软件设计与实现[J].微计算机信息,2010,6(3):199-201.
[2]Duan X J,Chen W H,Yu S Q,et al.Tripod Gaits planning and kinematics analysis of a hexapod robot[C]∥IEEE International Conference on Control and Automation Christchurch,2009:1850-1855.
[3]王琮.集成化数字式小型机电作动器开发[D].北京:清华大学:精密仪器与机械学系,2008:1-8.
[4]Cao P.Development of control module in small-size modular actuator for robotics [C]∥The 6th IEEE Conference on Industrial Electronicsand Applications(ICIEA 2011),2011:1660-1665.
[5]胡亮,王兰美,宋宏鹏,等.Solidworks、3DS Max结合Virtools实现虚拟现实应用研究[J].山东理工大学学报:自然科学版,2010,24(3):103-106.
[6]王兴建,葛良全,刘思颂,等.基于Virtools的高级交互式虚拟现实模型库的建立[J].中国测试技术,2008,34(6):33-35.
[7]王平勤.基于Virtools的消息控制机制及其应用研究[J].科技创新导报,2008(20):28-29.
[8]熊静,金志良,贾震,等.基于Virtools车辆碰撞事故的虚拟动画研究[J].道路交通与安全,2007,7(1):41-44.