muoubear* 发表于 2019-1-13 10:59:11

13板鲁班锁Millenium的运动仿真解析之:数据采集

本帖最后由 muoubear* 于 2019-1-13 11:10 编辑

本次13板鲁班锁建模仿真的思路和步骤分了3篇文字进行解析,截止今天已经全部写完,文章分享到论坛图片部分都需要重新上传,我将按顺序将图文发布出来,欢迎大家留言交流。
static/image/hrline/5.gif

今天的文字给大家讲一下我做这个13板仿真的思路和步骤,做这种拼板的运动仿真,首先要做的工作是对板锁拼合的数据进行采集,数据的采集需要借助4个小软件:
[*]刺果(BurrTools),用该软件加载解算好的13板文件,刺果解算的结果是运动仿真的原始数据采集的源头。此软件鲁班锁群的朋友比较熟悉,本人对该软件的认知也有限,无法做详尽的解说,感兴趣的朋友可以去百度贴吧,鲁班锁板块,查找相关内容了解。
[*]ScreenToGif,gif制作的小软件,利用其录像功能,通过快照模式按解算步骤,对刺果软件的解算动画进行截屏,分别从前视图,俯视图,左视图三个方向截图,统计13板在X,Y,Z三个方向上每一步的运动数据。
[*]按键精灵,之所以要用按键精灵,因为通过ScreenToGif的快照方式录屏,都是重复性的动作,用按键精灵,配合屏幕键盘,可以自由设定录屏的帧数。

[*]Excel,对三视图采集的数据做原始的记录,并通过excel强大的函数功能,组合出仿真需要的每一步的step函数。

做完以上数据的采集工作,就可以建模,并进行运动仿真了,做这个仿真,对数据的采集占了很大的一部分工作量,只有数据的采集做到百分百的准确无误,仿真出来的板锁才不会有丝毫差错。本篇也主要讲数据采集部分,UG的建模和仿真部分放在下一篇公众号文中再进行讲解。
上面所述主要讲了这些软件在数据采集中的作用,接下来我会对用到的每一种软件具体需要做些什么,有哪些步骤做一个讲解。
[*]刺果(BurrTools):打开刺果软件,加载13板解算文件,并切换到解算选项卡,如下面图1,图2所示。图1 解法1(1063)解算选项卡图2 解法2(146)解算选项卡

[*]需要说明的是每一种解法对应一个解算文件,需要单独加载,数据的采集也是一样,同样需要两份数据。图2中红色框选的位置为13板锁 解法2的拆解步骤值,解算步骤值(146)下面显示的数据(0.00)为动画演示拆解的当前值,这个值的后面,即图示红色箭头所指的滑动块可以左右移动,鼠标拖动,或者先点选该滑动块,再按下键盘的左右方向键,就可以动态的演示拼合或者拆解动画效果。按一次方向右键,步进0.02,按压50次方向右键,板锁拆解完成一步,快照截屏的时候需要用到这个滑动块和键盘的方向键。图2右侧的区域为13板锁的显示区域,可以按下鼠标左键拖动,调整板锁的空间显示方位,本次仿真需要的数据采集,采用了工程三视图的方式,分别选择左视图,俯视图和主视图三种空间显示方位进行快照截图,先将模型调整到左视图的显示状态,为下面的软件截图做好准备。
[*]ScreenToGif打开ScreenToGif软件,如图3所示,点选录像机功能,点击齿轮图标进入选项设定,勾选启用快照模式,如图4红色框选所示。图3 ScreenToGif启动界面图4 启用快照模式录像

[*]启用快照模式后,点击确认按钮,回到快照捕捉模式的窗口,设置好扑捉窗口的大小,并将窗口移到刺果的13板显示区域,做好快照截图的准备。

[*]按键精灵按键精灵本文不做过多讲解,本案例脚本用到的也是比较基础的操作,只需用到一个嵌套的循环,鼠标左键的点击和快捷键F7的按键模拟,有一定编程水平的朋友可以丰富一下脚本内容,更加智能的完成需要的截图工作。启动按键精灵,编写脚本(解法1)如下:图5 按键精灵截屏脚本脚本中的F7键是软件ScreenToGif快照模式的快捷键,按一次F7就会捕捉一张截图,延时100毫秒,后进行一个50步的小循环,50步的小循环模拟的是按压实体键盘上面的方向右键,之所以会用到鼠标点击,是因为要用到虚拟键盘,此处的点击,模拟的是按压虚拟键盘上面的方向右键,按键精灵自带的按压方向右键功能,实际运行脚本并没有起作用,才用虚拟键盘也是权宜之计。脚本完成一个循环,板锁刚好完成一个动作,截一次图,如此周而复始,直到完成所有步数(1063)的截图。
脚本文件完成后,切换到调试模式,在按下F10启动之前,需要打开虚拟键盘,先将刺果的小滑动块激活,并使其位于开始的位置,再将鼠标光标放在虚拟键盘的右方向键上面,如图6所示,完成后上面两步操作后,就可以按下F10,启动脚本程序,脚本程序按设定内容快速有序进行的截图操作,脚本循环结束后,我们就得到了1063张指定区域帧的截图组,点击停止按钮,ScreenToGif软件跳回到编辑器模式,如图7所示。图6 激活小滑块,鼠标光标放置在右箭头上图7 ScreenToGif的编辑器

[*]这1063张截图即为刺果软件提供给我们的原始数据,接下来就需要进行逐帧的对比,观察前后两三张图片上板锁零件的变化情况,从而判断A,B,C,D这4个板子沿着Y轴移动的单元变化情况,以数据的形式记录到Excel中。
[*]Excel打开Excel,建立下图8形式的表格,基本上ABCD板都是在Y方向上移动,EFGH板在X方向上移动,IJKLM板在Z方向上面移动,图示表格中AX,BX表示A板,B板在X方向上移动,其他双字母同理,Excel每一行代表一步,每一步某一个板在某个方向上移动了多少,就在对应的单元格中进行记录,板子移动方向和刺果坐标轴方向相同为正值,相反为负值,为了纠错,第0步行作为数据记录纠错功能行,即整列数据求和,记录过程中,如果某行数据记录错误,可以及时发现,在数据记录的列都后面,再建立等数量的列单元格一一对应,这样方便查阅某一步各个板子的状态值,也具有一定的纠错功能,如图9所示,采用的是对应列数据进行累加。Excel单元格颜色采用条件格式方式填充,每一列的颜色和刺果对应板子的颜色相同,方便记录数据的采集。
图8 数据的记录图9 对应列数据进行累加,查阅中间步骤板子状态值做完左视图这些截图的数据记录后,基本上完成了ABCD板Y方向的数据记录,再次返回到刺果,将模型调整成俯视图,重复第4部分的快照截图操作,并进行逐帧的图像对比,对EFGH板的移动数据进行记录,记录在Excel对应的单元格中,最后再进行主视图方向的截图操作,就可以完成IJKLM板的移动数据采集,中间有些步骤好几个板子会同时沿着某个方向移动,可能需要结合刺果找出对应步,进行单独的数据采集验证。
完成Excel的原始数据记录后,就可以利用Excel强大的函数功能,进行step函数的合成工作,依然是建立与前面数据记录等列的单元格,每一个单元格代表每一步某一个板子的运动情况的step函数,从前面的数据记录可以看出,每一步基本上只有一列有数据,其他列都为空,所以在合成step函数的时候,利用Excel的条件函数,对于空值单元格,step函数对应的单元格同样为空值显示,这样做可以减少不必要的step函数。建立的列单元格如图10所示。图10 对应单元格step函数的合成图11 原始数据采集及处理从图11可以看出整张表格被分为3大部分,第一部分为原始数据记录区,第二部分为板锁每一步的状态值显示区,第三部分为板锁移动原始数据的step函数合成区,做板锁拼合仿真的时候,就需要用到第三部分的数据,如果需要将板锁每一步的状态值也做仿真,就需要将第二部分的数据也合成为step函数,本次案例没有做这部分。有了板锁拼合的仿真函数后,就可以做出板锁拼合的运动仿真,如果做成动图进行演示,中间某一步如何让别人知道是第多少步?这里就需要做一个指示器一样的东西,本案例采用了7段数显码的原理,解法1的1064步显示出来,需要4个7段数显,做指示器仿真的时候,每一个数字对应一个7段数显码,也就是每一位数字要仿真出来,就需要7个对应的连杆,7个对应的滑动副和7个对应的step驱动函数,4位数字就需要28个对应的连杆,滑动副和step驱动函数,要完成这些step函数的编制同样需要借助Excel强大的函数功能,先对7段数显部分进行编码,如图12所示,再对要显示的4位数进行编码,如图13所示,最后再将要显示的数字进行step函数合成出来,如图14所示。图12 7段数显数字0到9编码图13 指示器4位数显示编码图14 指示器4位数显示的step函数合成

muoubear* 发表于 2019-1-13 11:11:46

本次案例指示器的数字显示采用的是倒序,用ScreenToGif做动图的时候可以将截图反转,进行倒序显示,这样出来的就是拼合的动图仿真演示了。上面关于Excel数据的处理也都用的最基本的Excel函数操作,主要用到了条件函数,字符合成函数,对于Excel函数有一定了解的朋友,不难理解函数的编排原理,函数的编写就不在这里赘述了,也希望以上文字能给做类似运动仿真的朋友起到抛砖引玉的作用。本篇主要讲得是做13板锁运动仿真前的数据采集及处理介绍,下一篇文章,我将解析本次13板锁的建模和仿真的思路,感兴趣的朋友可以将文章分享出去,让更多的朋友关注一下。
PS:上一篇文章对于该13板锁的来源忘记提了,本篇补充上,原设计源自于Donald Osselaer,关于该锁解法1的原文链接见文末的网址链接,该网站还有很多其他类型的鲁班锁,都是大师们智慧的结晶。
http://puzzlewillbeplayed.com/13BoardBurr/Millenium/solution.html

Dandelion* 发表于 2019-1-13 11:24:22

赞赞赞赞赞赞赞

流星画雨* 发表于 2019-1-13 13:15:13

作者不仅给我们展现了鲁班锁的复杂性(类似魔方的复杂性),而且煞费苦心,运用多种软件来展现解锁动画,这种精神值得我们崇敬!这种高水准的帖子,是非常罕见的!是非常难得的!非常感谢作者的高水平帖子!

xiaomasing 发表于 2019-1-13 16:28:21

这个真得值的赞,匠人精神!!!

wu1687 发表于 2020-7-9 14:35:26

匠人精神

陈大师 发表于 2020-7-20 16:07:55

感谢楼主分享
页: [1]
查看完整版本: 13板鲁班锁Millenium的运动仿真解析之:数据采集