欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Unity使用物理引擎实现多旋翼无人机的模拟飞行

程序员文章站 2022-04-14 13:57:44
内容简介最近在用unity实现无人机的模拟飞行,但发现站里基本没有完整介绍如何实现该功能的博客,因时间紧迫,就自己简单做了一个仿真(不是完全按照现实物理情景来做,即通过各个螺旋桨旋转产生力带动机体飞行...

内容简介

最近在用unity实现无人机的模拟飞行,但发现站里基本没有完整介绍如何实现该功能的博客,因时间紧迫,就自己简单做了一个仿真(不是完全按照现实物理情景来做,即通过各个螺旋桨旋转产生力带动机体飞行)。下面我会简述完全按现实物理情景实现模拟飞行,并详细描述我自己做的模拟飞行(不完全仿真),给各位提供参考。

现实物理情景的实现——简述(以四旋翼无人机为例)

因为我没有实现1:1仿真,所以这里只介绍思路,希望能给到读者一点启发。

  1. 构建一个四旋翼无人机模型(可以网上下载。或用maya等建一个)
  2. 将模型设置为rigidbody和boxcollider(即实现一个物理模型,记得要先create一个plane承住你的模型)
  3. 给四个螺旋桨各写一个脚本,各产生一个向上的力
  4. 通过螺旋桨产生的升力即可带动模型飞行,通过控制不同螺旋桨产生升力的不同,即可实现无人机的各种飞行姿态(这步是最难的,也最花时间)

简化物理情景的实现——详述(以四旋翼无人机为例)

背景:上面的现实模拟最麻烦之处在于要对四个螺旋桨(电机)实现控制并达到平衡,太麻烦了,调试要很久,网上又没有现成的代码(至少免费的我没有发现)。所以我自己简化了一下模型,并实现所需功能。
思路:简化模型的区别在于我不用四个螺旋桨(电机)来各自产生升力,形成合力来带动机体。而是直接将力加在机身上,即跳过了前面那一步,直接用合力来实现无人机的飞行。
实现步骤:以下为实现步骤,考虑到网上好像没有相关的博客和视频教程,我会尽量详细来叙述,所以会有点多。

1.导入一个无人机模型,并给整体设置rigidbody和boxcollider(注意最好collider设成和模型差不多大)。

Unity使用物理引擎实现多旋翼无人机的模拟飞行

2. 写脚本1(plane_text)(总共需要写两个脚本,记为脚本1和脚本2),脚本1使其产生力带动机体运动

3.写脚本2(plane_move):该脚本是用来实现模型的前后左右倾的

4.完成上面3步,我们就会得到两个脚本

Unity使用物理引擎实现多旋翼无人机的模拟飞行

5.然后就是把这两个脚本拖到无人机上(注意两个都要拖!),接着就是运行了(如果是运行不了肯定是你复制了我的代码,但脚本名又和我不一样的缘故)

6.最后运行成功(原谅我不会截动图给你们看运行结果)

7.当然有人会说螺旋桨怎么不会转啊,这也简单;首先给四个螺旋桨的顶点各建一个空物体(每个螺旋桨要绕着它对应的空物体旋转),然后再写一个脚本(power_all),我这里就不区分正反桨了。(你要区分也行,就是把vector3.down改成vector3.up就是另一对桨)

8.将上面这个螺旋桨的脚本分别拖到各个桨叶模型上,然后将各个空物体拉到各个声明的顶点处即可。

9.上述即完成了简化的多旋翼无人机模拟飞行。可能有人会说我第2、3点谁规定了只能前倾一个角度,其实我是这样理解的,如果按照现实情景来完全模拟,确实前倾任意角度,甚至是180°,但前倾角度过大导致的结果是坠机,所以我设置在10°可以理解为安全倾角,当然你也可以自己该代码来实现自己想要的功能,我这里只是提供一个参考。

以上就是unity使用物理引擎实现多旋翼无人机的模拟飞行的详细内容,更多关于unity实现无人机飞行的资料请关注其它相关文章!