Model of the Motion Posture and Collision Detection of “The Bench Dragon”
The “bench dragon” is a traditional folk art form that requires the dancing team to proceed along a certain route. This is achieved by maneuvering the dragon body along a specific route, giving the appearance of “panning the dragon”. The “bench dragon” used in performances can generally be considered a rigid body structure composed of several hundreds interconnected benches, connected via hinges. To quantitatively describe the motion of the “bench dragon”, this paper develops an iterative operation model based on rigid body kinematics. This model captures the changes in position and velocity of the dragon over time. Additionally, a grid model is established to predict and prevent potential collisions during the dragon’s procession, thereby enhancing the safety of the performance. Furthermore, the paper examines the procession track of the dragon-dancing team within a turning space that resembles the Tai Chi pattern. Through relevant calculations, the aesthetic appeal of the dragon-dancing performance is enhanced.
Grid Model
本文所研究的问题来源于2024年“高教社杯”全国大学生数学建模竞赛A题。本文研究对象“板凳龙”由223节板凳首尾相接构成,其中第一节为龙头,最后一节为龙尾,剩余部分均为龙身。龙头的板凳长为341 cm,龙身和龙尾的则均为220 cm,所有板凳均宽为30 cm。每节板凳上有两个孔,孔径(孔的直径)为5.5 cm,孔的中心距离最近的板头27.5 cm,并且相邻两条板凳通过把手连接
建立合理的模型与假设是解决问题的关键。本论文建模假设如下:
1) 所有板凳均为刚体,不发生任何形变,形状视作严格几何意义上的矩形。
2) 把手铰接处完全光滑,部件之间所有摩擦均可忽略。
3) 忽略“板凳龙”上装饰物品对其运动的影响。
4) 队伍完全按照给定等距螺线轨迹以及给定速度运动。
在描述“板凳龙”的运动位形时,重要的是描述其位置随时间的变化情况。由于“板凳龙”做盘绕运动,故以原点为极点、x正方向为极轴建立极坐标系,设 分别表示板凳上每个把手到原点的距离和相对极轴转过的角度,于是可得等距螺线上点的极坐标表达式:
(1)
等距螺线如
龙头在各个时间的位置是非常重要的,我们根据螺线长的积分运算与速度、时间的关系得到式(2)中的表达式。其中,s为螺线长,r由式(1)给出,它们都是相对极轴转过角度 的函数。
(2)
由于板凳长度不发生改变,可利用二维平面距离公式得到各把手的坐标,相邻把手间位置的递推公式如式(3)所示:
(3)
上式中, 。
这样,我们就得到了各个把手在极坐标系下的随时间变化的位置。
在静态位置的描的基础上,可以进一步探索运动过程中,相邻两个把手涉及的角度关系。矢量图表示如下,见
其中, 为第i个把手速度与极轴的夹角, 为第i个与第 个把手连线和极轴的夹角。
为了得到每个把手的实时速度,我们需要先对等距螺线极坐标表达式进行微分处理,从而得到在任意角位置处曲线的切线斜率,以确定 处把手的速度方向,如式(4)所示:
(4)
(5)
由于板凳不发生形变,把手速度沿两孔连线方向的分量必须严格相等,结合每个板凳所在直线的方位,我们便可以求出每个把手速度和角位置的关系,如式(7)所示:
(6)
(7)
有了2.1中的公式,就可以采用以下算法求得“板凳龙”运动过程中每个把手的位置、速度:
第一步,求解式(2),得到龙头上第一个把手相对极轴转过的角度随时间变化的函数关系 ;
第二步,将得到的 带入递推公式(3)并求解,从而得到所有把手相对极轴转过的角度随时间的变化关系 以及到原点的距离随时间的变化关系 ,( );
第三步,将 代入式(5),得到第i个把手速度方向与极轴夹角关于时间的函数 ;
第四步,将 代入式(6),得到第i个,第 个把手连线方向和极轴夹角关于时间的函数 ;
第五步,将 、 带入递推公式(7),得到所有把手速度随时间的变化情况。
通过以上求解算法,当给定时刻t(s),“板凳龙”的运动信息即可求出,
上述模型算法还可以推广到更为复杂的运动轨道。例如,实际表演中,会涉及基本的调头运动。这时,板凳龙的运动轨迹并非简单的等距螺线,而是包含盘入螺线、调头曲线、盘出螺线三部分,其中调头曲线由两段相切的大小圆弧构成,且大圆弧半径为2R,小圆弧半径为R。为讨论该情形下“板凳龙”的运动,我们可以将“板凳龙”的运动轨迹分割成四个区域,分别写出轨道方程:
组件 |
0 s |
60 s |
120 s |
180 s |
240 s |
300 s |
龙头(m/s) |
1 |
1 |
1 |
1 |
1 |
1 |
第1节龙身(m/s) |
0.999971 |
0.999961 |
0.999945 |
0.999917 |
0.999859 |
0.999709 |
第51节龙身(m/s) |
0.999742 |
0.999662 |
0.999538 |
0.999331 |
0.998941 |
0.998065 |
第101节龙身(m/s) |
0.999575 |
0.999453 |
0.999269 |
0.998971 |
0.998435 |
0.997302 |
第151节龙身(m/s) |
0.999448 |
0.999299 |
0.999078 |
0.998727 |
0.998115 |
0.996861 |
第201节龙身(m/s) |
0.999348 |
0.99918 |
0.998935 |
0.998551 |
0.997894 |
0.996574 |
区域一为盘入曲线,其曲线方程为:
(8)
区域二为调头曲线的大圆弧部分,其曲线方程为:
(9)
区域三为调头曲线的小圆弧部分,其曲线方程为:
(10)
区域四为盘出曲线,其曲线方程为:
(11)
上述轨道方程中, 的取值范围可由简单计算得出。
为了得到各把手的位置、速度,我们沿用2.1、2.2中的模型算法,但区域二和区域三的曲线切线方向为:
(12)
区域四的曲线切线方向为:
(13)
有了以上公式,便能计算得到更复杂轨道上“板凳龙”的运动位形。值得一提的是,由于算法均采用离散化数据处理,在任意时刻一个把手只可能处于一个区域,我们只需在板凳龙运动到的区域赋予 相应的数值,并不需要建立统一在同一极坐标系下的曲线方程。
组件 |
−100 s |
−50 s |
0 s |
50 s |
100 s |
龙头(m/s) |
1 |
1 |
1 |
1 |
1 |
第1节龙身(m/s) |
0.999904 |
0.999762 |
0.998687 |
1.000363 |
1.000124 |
第51节龙身(m/s) |
0.999346 |
0.998642 |
0.995134 |
0.949935 |
1.003966 |
第101节龙身(m/s) |
0.999091 |
0.998248 |
0.994448 |
0.948482 |
1.096263 |
第151节龙身(m/s) |
0.998944 |
0.998047 |
0.994156 |
0.948038 |
1.095306 |
第201节龙身(m/s) |
0.998849 |
0.997925 |
0.993994 |
0.947823 |
1.094933 |
龙尾(m/s) |
0.998817 |
0.997885 |
0.993944 |
0.94776 |
1.094833 |
为了判定“板凳龙”发生碰撞的时间和位置,我们建立了栅格模型。该模型将“板凳龙”所在的二维平面划分为若干栅格,以栅格顶点表示二维平面上的点,从而能够精确监测“板凳龙”的实时运动状态。首先以把手孔洞 所在直线为参照,根据板凳尺寸建立第i个板凳边框对应的平行直线方程。其中,平行于板凳两孔洞连线的一组直线方程可直接解出:
(14)
再引入板凳两个端点
、
,如
(15)
在得到端点A、B的坐标后,便容易给出矩形的另一对平行直线的方程:
(16)
下面,为了确定扫描区域中任意一点是否位于第i个板凳对应区域中,我们需要进行落点判定。
当“板凳龙”各部分均未发生碰撞时,所有相邻栅格重叠部分的编号均与其所在编号较大的栅格相同。区域内所有数据点的编号均会在板凳龙运动过程中自动刷新。
当算法识别到“板凳龙”中不相邻的板凳彼此重叠或相切时,代表“板凳龙”发生了碰撞,此时程序终止,并记录发生碰撞的两个板凳编号及碰撞发生的时间。
上述过程中“板凳龙”所在二维平面上点的编号可用
以上便是判定“板凳龙”碰撞的栅格遍历算法,其运行机制可以用流程图表示如下,见
在求解模型时,首先将二维平面划分为2001 × 2001个边长0.01 m的栅格,把栅格顶点横纵坐标分别带入式(15)、(16)进行落点判定;
然后以1 s为时间步长,让“板凳龙”开始运动,在此过程中遍历平面上的栅格进行碰撞检测。
最终当板凳龙发生碰撞时,记录下碰撞的栅格编号以及此时的时间,并终止程序。
代入相关数据我们得知,在413 s时第一个板凳(龙头)与第九个板凳(龙身)发生了碰撞,碰撞位形及碰撞点参考
碰撞时各把手的位置与速度可通过程序调用,
组件 |
横坐标x (m/s) |
纵坐标y (m/s) |
速度(m/s) |
龙头 |
1.221633 |
1.934807 |
1 |
第1条龙身 |
−1.63318 |
1.762593 |
0.991541 |
第51条龙身 |
1.294381 |
4.322383 |
0.97684 |
第101条龙身 |
−0.54997 |
−5.87867 |
0.974532 |
第151条龙身 |
0.955159 |
−6.9592 |
0.97359 |
第201条龙身 |
−7.89512 |
−1.21712 |
0.973078 |
龙尾 |
0.969887 |
8.321009 |
0.97292 |
“板凳龙”内板凳的长宽、龙头行进速度、等距螺线螺距等因素均属于影响栅格遍历模型的环境参数,我们可以利用控制变量的方法通过让这些环境参数的取值在一定范围内连续变化,从而根据生活经验和实际情况检验模型的灵敏性。
首先,我们控制龙头行进速度和等距螺线螺距保持不变,得到“板凳龙”发生碰撞的时间与板凳宽度的关系(见
可以发现,板凳越宽,碰撞发生得越早,并且碰撞时间随板凳宽度的变化显著递减。这符合日常生活中的认知:当板凳越宽时,“板凳龙”占据的面积就越大,更容易较早发生碰撞。上述结果表明我们建立的栅格遍历模型具有灵敏性。
本文基于刚体运动学构建迭代运算模型描述“板凳龙”运动位形。
首先建立位置迭代模型,通过等距螺线极坐标表达式及刚体约束确定把手位置;接着建立速度迭代模型,依据螺线微分和板凳形变约束求出把手速度。本文还将模型推广至引入掉头空间的实际应用场景,分区域计算轨道方程,这也是本文创新点之一。
另外,本文建立栅格遍历模型以判定“板凳龙”是否在运动过程中发生碰撞。通过建立板凳边框直线方程进行落点判定,当不相邻板凳对应的栅格区域重叠或相切时认定碰撞发生,并通过控制变量法检验了模型灵敏性。
本文所做研究为“板凳龙”运动的定量分析提供了有效方法,在描述运动位形和判定碰撞方面具有创新性,并且对相关民俗活动的安全、美观开展具有重要意义。
由中国人民大学本科教育教学改革项目No. JYXM2024026资助。
*通讯作者。