潜渊症吧 关注:40,533贴子:340,737
  • 6回复贴,共1

镜控无人机「哨兵」控制原理详解

取消只看楼主收藏回复

因为这个无人机的模板也发布很久了,技术也该迭代了。虽然相信很多人通过寻思已经搞明白了这个无人机的工作原理,但是我还是决定开个坑把“哨兵”的控制原理详细解释一下,也算是抛砖引玉,鼓励大家做出更先进的无人机(方便我抄)。首先是电路图镇楼:


IP属地:日本1楼2022-05-18 15:27回复
    首先说一下设计这台无人机的经纬。
    小型无人机的出现可以追溯到很久之前,工坊上有不少船都配备了各种功能的小型无人机(比如巨浪、黑森林),但是由于在古代,人们无法获得当前船只的运动速度位置等信息,导致这些无人机的操纵手感多少有些奇怪。这一瓶颈一直持续到古人之中版本更新。随着导航台添加了船只位置速度信息输出接口,无人机的操纵智能化也变得可能。
    由于我在设计青铜时代的时候,群里经常有人抱怨单人模式下前期清理巢穴任务过于危险,所以我就寻思:干脆做一个轮椅无人机,遇到洞穴任务开出去无脑突突。在参考了其他人的无人机设计之后,我集百家之长,推出了我的这款「哨兵」无人机。
    根据我对游戏的理解和操作习惯,我为哨兵设计了一套(我自认为)人机功效比较高的操作逻辑。实际上这套逻辑也是几经改版之后的最终结果,其中诸多取舍在这里就不予赘述了。


    IP属地:日本3楼2022-05-18 15:47
    回复
      2026-08-31 10:25:16
      广告
      不感兴趣
      开通SVIP免广告
      为了防止刚刚打开电梯的朋友们不知道我在说甚么,这里简单介绍一下哨兵无人机的操作逻辑。
      移动模式(蓝灯)/开火模式(红灯)
      潜望镜控制,双击鼠标左键切换模式。
      移动模式(蓝灯亮)下鼠标左键向潜望镜指向移动,松开左键停车。
      开火模式(红灯亮)下左键激光炮蓄力开火。


      IP属地:日本5楼2022-05-18 15:57
      回复

        首先是这个无人机的本体部分。
        把装饰性的structure全部隐藏之后很容易看出来,这个无人机本质上就是四个超级小的hull,其中一个hull里边有一个微小的泵作为压载舱。至于为什么我只用四个hull中的一个做压载舱呢?这是因为四份之一的hull充水之后下沉的速度和最大上浮速度比较接近,也就是说上浮下潜的动作会比较对称,做导航控制的时候手感会好掌握一些。
        除去这四个hull就是一个缩小的激光炮在正中间,激光炮放在hull外是有考量的:当激光炮位于hull内时,虽然他可以正常攻击hull外的物体(也就是说可以打海里的怪),但是他不能再一次射到hull内部(即无法攻击沉船内的物体)。为了避免这个bug,我把激光炮放在了hull以外的位置(这也是为啥我要做一个如此强迫症的四hull对称布局)。
        除此之外,就是一个游戏内隐藏的对接口。这部分没有什么特别的。


        IP属地:日本13楼2022-05-18 19:48
        回复

          然后接下来就是控制电路的部分,这部分每一块都可以拆开讲一段,这层楼先简单介绍一下他们的主要功能。
          A,导航电路,通过比较横纵轴的实际速度与目标速度来控制无人机的前进方向和速度。
          B,保持位置电路,当无人机速度不为零时,反向推进使速度为零。
          C,双击检测电路,切换状态用。
          另外大家可能注意到了这个隐藏的导航台,导航台在这里有两个作用:1)提供当前速度信息。2)整合信号,对水泵和引擎统一控制。其实第二个功能完全没有必要通过导航台来实现,但是既然都加了这么个东西了不用白不用。


          IP属地:日本14楼2022-05-18 19:55
          回复

            首先是导航电路
            电路最上端的wifi组件接收的是潜望镜的角度输出信息。所谓的镜控无人机无非就是用潜望镜的角度输来控制无人机的运动。在这里我用两个三角函数组件把潜望镜的角度拆分成x,y上的两个分量。比方说,如果我的潜望镜角度输出是45°∠的话,那么拆分之后的x,y应该是~(0.7,0.7)。
            拆分之后的分量紧接着进行下一步运算:乘法组件和内存组件。内存组件在这里存储的是运动向量的模长,也就是无人机的固定航行速度。虽然一个无人机的水平运动速度是没有上限的,但是上浮和下潜的速度受到浮力的制约。为了保证速度在各个方向上都可以合成,这里的内存组件存储值不宜大于无人机的最大上浮速度。比如说我在这里设置的是MEM=14,也就是说,无人机将在各个航行方向上以14km/h的速度航行。那么我们刚才拆分得到的方向向量乘上14就变成了v=(9.8,9.8)。也就是说,无人机的x,y轴速度都应当是9.8m/s。
            得出了x,y轴上的目标速度之后,我们就可以与导航台的速度信息输出进行比较。如果速度小于目标速度:踩满油门开(输出100);如果速度大于目标速度:挂满倒挡退(输出-100)。实际上,这里用的是一个很暴力的“乒乓控制”,无人机实际上是在两个极端之间反复横跳。但是由于惯性的存在,它呈现出的实际上是目标速度上下很小范围的波动,看起来就好像是在“定速巡航”一样。
            计算出了x和y轴的加速/减速信息之后,我用一组连接组件把他连接成导航台能够直接识别的字符串形式,例如(100,100)并送到导航台的速度输出接口,控制无人机的航行。


            IP属地:日本15楼2022-05-18 20:14
            回复
              讲完了移动的电路部分,来讲讲保持位置的电路部分。

              与移动导航相比,“停车”这个功能就显得很简单。说白了就是把导航台输出的速度信息乘上一个负的系数再送回导航台速度输入。比如无人机现在是1m/s往前漂,那么就送一个-100的速度信息给导航台让他反向加速,直到速度归零、返回的速度输入信息也变成零为止。
              这种电路最大的好处就是简单高效,但是由于他只能识别速度信息而不能处理任何的位置信息,因此如果无人机被怪撞了一下,他也只能一边飘走一边减速(直到0),而不能返回一开始的悬浮位置。


              IP属地:日本21楼2022-06-14 19:32
              收起回复