拉弓射箭
在拉弓射箭中,弓的弹性占主要成分,因此在ADAMS仿真中将弓设置为柔性体。建立柔性体时适当的设置材料的弹性模量和密度(本次仿真的材料与铝比较接近)。然后刚性连接点一共设置3个,分别在弓的两端用于连接弓弦,另一个在弓的中部用于与箭的约束连接。柔性体结构及模态见图1、2:

图1.弓柔性体建立

图2.弓的模态
弓的第一阶模态50Hz(与实际有一定误差),为弯曲模态。
2.1弓及箭模型的建立及简化

图3.模型简述
通过图3可以看到弓主要由弓体、弓弦组成。在仿真中,弓体已做柔性体处理,而实际弓弦同样具有弹性,因此在图3右图弓弦的中部设置一个圆柱的弓弦中,然后在弓弦中与弓的两端分别建立弹簧。

图4.弓的建模
然后箭的设置如图4所示,在箭的尾部设置一个沟槽,用于和弓弦中的接触(主要通过结构的布尔操作合成)。箭的质量可以设置的较小些,后期仿真时使箭射的更远。
2.2力的设置
力的设置主要包含两部分-弹簧力和接触力,首先是弹簧力,由于在张工拉弦之前,弓弦处于紧绷状态,所以需要给弹簧添加预紧力,这里设置为20N,并且刚度设置为50N/mm:

图5.弹簧力的建立
由于弓箭与弦存在接触关系,所以在箭与弓弦中之间建立接触关系,并设置合适的接触刚度:

图6.接触力的建立
2.3约束的建立
射箭时,是手握着弓,在仿真中,在弓中间的外联点处建立与地面的固定副;然后拉弓时箭与弓之间存在移动关系,所以在中间的外联点处建立箭与弓的移动副。如图7:

图7.约束关系建立
但当放箭时,弓与箭的移动副约束关系应该是失效掉的,使箭脱离弓进行运动,所以需要在后面的某一过程中将该约束失效。
2.4驱动的建立
拉弓时,需要用力拉,但是用力控制箭往后移动时,不容易控制箭的位移变化,所以,在仿真时,在移动副上添加位移驱动使箭往后走:

图8.驱动关系建立
位移驱动是限制箭在移动方向的自由度,因此只有位移驱动处于激活状态,这个限制就一直存在,因此同样需要当箭拉到某个位置时将位移驱动失效掉。
这种约束副、驱动、力等的失效可以用命令代码控制失效,也可以通过脚本控制,本文主要说明通过脚本控制的方法。
3.1建立传感器
失效时,首先需要建立某种条件,也就是约束副、驱动等在某种条件下失效。这个条件可以用传感器来表达,如下图,在第1个框里为表达式,可以设置函数比如距离、角度、时间等,本次仿真通过时间控制;在第2个框里为关系,=、<等关系;第3个框为值,本次仿真设为5,也就是当运行5秒后进行条件判断;第4个框表示在该条件下的是继续运行还是停止,由于箭离开弦后还需要运动,所以选择继续-Continue。

图9.传感器建立
3.2脚本建立(重点)
点击创建脚本后,脚本形式选择Adams Solver Commands,

然后选择Dynamic Simulation出现时间设置窗口后,End time设置为5s与传感器设置时间一致,然后点确定后出现新的命令行,如图:

然后再选择Deactivate,设置失效内容,在约束行选择移动副,在驱动行选择位移驱动,在传感器行选择前面设置的传感器:

最后由于前面传感器设置的是继续仿真,所以还需要再设置后续的仿真时间,在失效命令行后面再添加一行运行时间及步数,也就是总的运行时间为10s:

通过以上步骤就完成了脚本的设置。
3.3仿真分析
在仿真中选择按脚本分析,点击确定后(绿色箭头)就会完成计算分析。

仿真结果如下:

上面的仿真似乎箭所获得的力不够,可以增大箭向后拉的距离,或者增加"弦"的刚度。增加刚度后仿真动画如下:

仿真后明显箭的轨迹变直了,说明箭获得了更大的水平方向的动能。
明天是祖国建立75周年,祝祖国美丽富强,人民安居乐业、幸福美满!
END
点个关注呦!