Unity使用物理引擎实现多旋翼无人机的模拟飞行
内容简介
最近在用unity实现无人机的模拟飞行,但发现站里基本没有完整介绍如何实现该功能的博客,因时间紧迫,就自己简单做了一个仿真(不是完全按照现实物理情景来做,即通过各个螺旋桨旋转产生力带动机体飞行)。下面我会简述完全按现实物理情景实现模拟飞行,并详细描述我自己做的模拟飞行(不完全仿真),给各位提供参考。
现实物理情景的实现——简述(以四旋翼无人机为例)
因为我没有实现1:1仿真,所以这里只介绍思路,希望能给到读者一点启发。
- 构建一个四旋翼无人机模型(可以网上下载。或用maya等建一个)
- 将模型设置为rigidbody和boxcollider(即实现一个物理模型,记得要先create一个plane承住你的模型)
- 给四个螺旋桨各写一个脚本,各产生一个向上的力
- 通过螺旋桨产生的升力即可带动模型飞行,通过控制不同螺旋桨产生升力的不同,即可实现无人机的各种飞行姿态(这步是最难的,也最花时间)
简化物理情景的实现——详述(以四旋翼无人机为例)
背景:上面的现实模拟最麻烦之处在于要对四个螺旋桨(电机)实现控制并达到平衡,太麻烦了,调试要很久,网上又没有现成的代码(至少免费的我没有发现)。所以我自己简化了一下模型,并实现所需功能。
思路:简化模型的区别在于我不用四个螺旋桨(电机)来各自产生升力,形成合力来带动机体。而是直接将力加在机身上,即跳过了前面那一步,直接用合力来实现无人机的飞行。
实现步骤:以下为实现步骤,考虑到网上好像没有相关的博客和视频教程,我会尽量详细来叙述,所以会有点多。
1.导入一个无人机模型,并给整体设置rigidbody和boxcollider(注意最好collider设成和模型差不多大)。
2. 写脚本1(plane_text)(总共需要写两个脚本,记为脚本1和脚本2),脚本1使其产生力带动机体运动
3.写脚本2(plane_move):该脚本是用来实现模型的前后左右倾的
4.完成上面3步,我们就会得到两个脚本
5.然后就是把这两个脚本拖到无人机上(注意两个都要拖!),接着就是运行了(如果是运行不了肯定是你复制了我的代码,但脚本名又和我不一样的缘故)
6.最后运行成功(原谅我不会截动图给你们看运行结果)
7.当然有人会说螺旋桨怎么不会转啊,这也简单;首先给四个螺旋桨的顶点各建一个空物体(每个螺旋桨要绕着它对应的空物体旋转),然后再写一个脚本(power_all),我这里就不区分正反桨了。(你要区分也行,就是把vector3.down改成vector3.up就是另一对桨)
8.将上面这个螺旋桨的脚本分别拖到各个桨叶模型上,然后将各个空物体拉到各个声明的顶点处即可。
9.上述即完成了简化的多旋翼无人机模拟飞行。可能有人会说我第2、3点谁规定了只能前倾一个角度,其实我是这样理解的,如果按照现实情景来完全模拟,确实前倾任意角度,甚至是180°,但前倾角度过大导致的结果是坠机,所以我设置在10°可以理解为安全倾角,当然你也可以自己该代码来实现自己想要的功能,我这里只是提供一个参考。
以上就是unity使用物理引擎实现多旋翼无人机的模拟飞行的详细内容,更多关于unity实现无人机飞行的资料请关注其它相关文章!