besiege吧 关注:85,442贴子:857,422

【技术】半自动测距+抛物线瞄准,原理和改良

只看楼主收藏回复

垃圾百度,愣是说着东西言论不当,是广告。
2楼再详细介绍吧。


大佬甚至用它来练习了一下LaTeX......
接下来回详细的介绍一下整个研发过程和原理,并放上最终的方案。


IP属地:北京1楼2020-02-25 08:52回复
    这是大佬和我一起(大佬发不了帖就只好我来了)基于三角函数和抛物线算法作出的机械火控计算器。这个东西曾经用过类似产物,但缺乏有效的扫描装置,而现在可以通过检测器来完成这一点。
    首先先放上大佬写的文档,里面阐述了原理和最初的设计方案。
    图片貌似不清楚,转成文字了(图片会在最后放出)
    Besiege中自动瞄准和抛物线机械计
    算的实现原理和细节
    在Besiege1.0版本发布之际,我们研究了Besiege中加农炮的自动瞄准和抛物线计算如何通过机械结构
    实现。通过在游戏中试验测量,理论推导,以及最终搭建和调试试验结构,成功实现了基于纯机
    械结构的手动瞄准和自动抛物线计算,在加上新版本中的探测器和逻辑块之后能够实现结构的小型
    化,模块化和自动瞄准的功能。
    I. 引言
    在Besiege经过漫长的抢先体验环节后终于迎来了第一个正式版。在策划庆祝更新的PVP的时候,KABONG向我提出了做自动火炮瞄准的想法。之后在共同的努力下我们成功实现了通过机械结构自动瞄准和计算抛物线的装置。简易版本的装置无需Mod 就可以实现,但Mod可以进一步缩小装置的体积和增加精度。
    II. 正文
    i. 火炮数据测量
    众所周知,Besiege拥有非常真实的物理引擎,所以在开始研究自动瞄准和抛物线之前我们要充分了解火炮在游戏中的物理属性。其中对抛物线影响最大的部分就是炮弹是否受到空气阻力的影响。为此,我做了小车来验证空气阻力: 根据牛顿定律,如果没有空气阻力,在车匀速直线运动的时候炮弹竖直打上去,一段时间后会掉回车上。但如
    果存在空气阻力,炮弹会掉到车的后方。试验证明炮弹确实受到空气阻力影响,如图所示。

    Figure 2: 小车静止时炮弹会落回到车上

    Figure 3: 小车匀速直线运动的时候炮弹会落到后方
    因此我们能够得到结论,火炮炮弹会受到空气阻力的影响。但如果是这样,抛物线的公式会变得非常复杂,因此我进一步试验了阻力对抛物线影响的大小。火炮初速度不同,射程就不同,受到的阻力影响也不同,如果阻力对炮弹影响较大的话火炮初速度和射程应该不成线性关系。如图所示,阻力对抛物线的影响并不大,即便是在滞空时间较长的情况下仍然保持了射程和初速度的线性关系。得到这个结论之后我们就可以开始推导发射角和射程的关系了。

    Figure 4: 用来测试的炮车,从左到右火炮功率为0.3,0.6,0.9,1.2,1.5,1.8

    Figure 5: 火炮的射程
    理论推导
    最常见的视觉测距方法是通过两个瞄准镜之间的夹角和瞄准镜间的距离来推导出目标距离。因为这个结构比较简单,我们决定使用类似的方法实现测距。如图,假设点C是我们想要测距的目标,点A和点B分别是看向C的两个摄像头。如果三角形的角度固定,那么线段AB和线段BC是成正比的,我们可以借此来测距。

    接下来我们开始推导抛物线射程和发射的关系。在推导的时候我们假设初速度不变,忽略空气阻力,并且发射点在地面上。如图,F为发射点,G为落点,I为最高点。

    这样我们能够得到公式:

    iii. 简单的机械实现
    具体的实现结构利用了角平分线的特性:如图,这个装置基本实现了我们的目的,然而有更多的方式也可以实现,可以视不同情况安装在不同位置。

    Figure 9: 角平分线装置
    至此,我们已经能够线性的控制火炮抛物线的落点,只要把这些装置和之前提到的测距装置结合就能够实现手

    Figure 11: 更适合做炮台的装置
    动测距并且自动调整抛物线。下图是我的实验性瞄准装置: 图中两个木杆用来当做视线

    Figure 12: 瞄准装置
    瞄准的射线,左边的木杆可以用旋转块调整角度来做校准,弹簧和绳子用来测量距离。
    校准的过程会比较麻烦,我的操作方法是这样的:
    1. 在初始状态,射程最远的时候打一炮,用旋转木杆瞄准落点
    2. 之后将炮的射程调小,此时斜向的木杆应该同时移动,使两木杆的交点变近
    3. 再打一炮,观察炮弹落点和实际木杆交叉位置的差异,并且以此调节火炮绳子速度和瞄准器绳子速度的比例,多次调节后达到同步,实现最终效果。
    III. 结论
    由于besiege中各种零件都很有弹性,尤其是绳子,这个结构的精度并不完美,而且结构越小精度越差,为此KABONG制作了利用铰链代替绳子的结构,虽然铰链不是完美的线性关系,但还是有效的提升了精度。至
    此,基本的目标已经实现,如果结合新版本的探测器和逻辑块可以实现更高级的功能,例如自动瞄准。同时在制作过程中发现现有结构的实用性不强,需要进一步优化才能真正应用在PVP战场上。
    最后祝大家游戏愉快!欢迎各位大佬改进!


    IP属地:北京3楼2020-02-25 09:32
    收起回复
      下面是基于试验机的简化升级的二代机构。(百度不不让我传文字....)






      IP属地:北京4楼2020-02-25 10:00
      收起回复
        整个机构的设计初衷是根据最初我们几个伙伴玩原版海战的时候提出的,是为了应对抛射炮弹无法准确估计距离一通乱射的问题,虽说对于很多载具都没啥用,但对于超远距离或炮力较低的载具还是有一定应用价值的。
        整个过程是由@tianer◆ 和我一起完成的,其中大部分计算都是他做的,所以十分的感谢。
        希望大佬们多多提建议,也可以说一说自己的想法,如果有问题可以随时问。这个装置抛砖引玉,希望有更多的自动化东西出现,比如投弹瞄准,提前量预判(听起来不太行)......


        IP属地:北京5楼2020-02-25 10:16
        回复
          sdl


          IP属地:江苏来自Android客户端6楼2020-02-25 10:45
          回复
            真的强,物理系甘拜下风


            IP属地:美国来自Android客户端7楼2020-02-25 11:41
            回复
              SDL


              IP属地:北京8楼2020-02-25 11:45
              回复
                请不要再贴吧写论文!


                IP属地:湖北9楼2020-02-25 11:56
                收起回复
                  量角器牛逼,这个没想到哇


                  IP属地:上海来自Android客户端10楼2020-02-25 11:59
                  回复
                    真的太强了,可以看出整个机构的前途还是不错的,尤其对于精准射击来说太有用了。说实话我觉得你可能真的是个工科生,虽然内容貌似没有超过高中物理范围貌似没有


                    IP属地:福建11楼2020-02-25 12:03
                    收起回复
                      自动瞄准方面我也在搞(当然真的比不上你们这些大佬),不过我个人不是很建议用探测器获取输入,因为探测器是无差别扫描


                      IP属地:福建12楼2020-02-25 12:04
                      收起回复
                        可以


                        来自Android客户端13楼2020-02-25 12:10
                        回复
                          这个很棒啊,舰炮指挥仪也是这个原理,开搞


                          IP属地:江苏14楼2020-02-25 12:14
                          回复
                            sdl


                            IP属地:江苏15楼2020-02-25 13:43
                            回复
                              赞一个,好活赏


                              IP属地:湖北来自iPhone客户端16楼2020-02-25 14:19
                              回复