Ubuntu20中使用AirSim--亲测可用
安装显卡驱动
显卡查询
由于AirSim中使用的是Unreal4 Engine,所以,在使用之前,请确保安装了显卡驱动,是否成功安装显卡驱动,可以通过设置->关于中查看本机的显卡识别,如下图所示:
如果您的显卡显示的是:llvmpipe (llvm 12.0.0, 256 bits),这表明您使用的并非NVidia提供的显卡,也将无法使用显卡渲染Unrea4场景。
另外,也可以使用命令行inxi -G
查看,如下图所示:
注意:也许您之前安装过NVidia驱动,并且使用命令行nvidia-smi
也可以显示显卡相关的信息,但是如果使用inxi -G
中,任然显示driver:none failed:nvidia
并且OpenGL:render:llvmpipe (llvm 12.0.0, 256 bits
,这说明您仍然没有成功安装显卡驱动,电脑依旧无法使用显卡渲染场景,请卸载驱动并重新安装。
显卡驱动安装
1、安装基础包,主要包括g++、gcc等
sudo apt install build-essential
2、查看显卡类型(如果您知道,可忽略该步骤)
lspci | grep -i nvidia
本网站可查询显卡类型
3、在NVidia官网下载显卡驱动
注意:请尽量不要使用最新版本的显卡驱动,可能会造成驱动安装失败
驱动下载官网
这里我们选择了:470.161.03版本
4、禁用通用驱动程序nouveau
sudo gedit /etc/modprobe.d/blacklist.conf 或者(blacklist-nouveau.conf)sudo gedit /etc/modprobe.d/blacklist.conf 或者(blacklist-nouveau.conf)
# 在文件末尾添加
blacklist nouveau
blacklist amd76x_edac
options nouveau modeset=0
更新设置,然后重启电脑
sudo update-initramfs -u
重启后在终端输入如下,没有任何输出表示屏蔽成功
lsmod | grep nouveau
5、清除原有驱动文件
sudo apt-get remove --purge nvidia*
6、安装lightdm
lightdm是显示管理器,主要管理登录界面,ubuntu20.04、22.04需要自行安装,然后上下键选择lightdm即可。
(这一步也可以不安装lightdm,使用ubuntu20.04、22.04自带的gdm3显示管理器,直观的区别就是gdm3的登陆窗口在显示器正中间,而lightdm登录窗口在偏左边,正常使用没有区别。其他的区别这里不做探究;)
(亲测需要注意的是,如果你有控制多屏显示的需要,gdm3可能更适合你,亲测使用lightdm设置多屏,可能会出现卡屏,死机,无法动弹情况,仅供参考)
sudo apt-get install lightdm
7、停止显示
为了安装新的Nvidia驱动程序,我们需要停止当前的显示服务器。最简单的方法是使用telinit命令更改为运行级别3。在终端输入以下linux命令后,显示服务器将停止。(必须)
sudo telinit 3
第7步停止显示后可能面临终端无法输入的问题,可以不使用该命令,而是重启之后,我们进入到输入用户名密码界面,此时我们按住 Ctrl + ALT + F2,会进入命令行界面,继续执行步骤8即可。
8、在文本界面中,禁用X-window服务,在终端输入(必须)
sudo /etc/init.d/lightdm stop或者(sudo service lightdm stop)
(如果是默认的gdm3显示管理器,命令为sudo /etc/init.d/gdm3 stop)
9、安装之前下载好的驱动程序
sudo chmod 777 NVIDIA-Linux-x86_64-430.26.run #给你下载的驱动赋予可执行权限,才可以安装
sudo ./NVIDIA-Linux-x86_64-470.161.03.run(-no-opengl-files) #安装
注意:-no-opengl-files 只安装驱动文件,不安装OpenGL文件。请不要不安装OpenGL,可能会导致无法进行渲染。本文安装过程使用sudo ./NVIDIA-Linux-x86_64-470.161.03.run
显卡安装期间选项
请按照上图给出的结果进行选择。
10、重启
驱动安装结束后,输入如下指令,重新进入登录界面。
sudo service lightdm start
11、验证是否安装成功
nvidia-smi
inxi -G
电脑设置界面
以上说明驱动安装成功
驱动卸载
如果您之前尝试安装NVidia驱动,但是失败了,请按照如下步骤卸载:
1、ctrl+alt+f1
进入控制台,同时进行登录,然后进入root路径下。
2、输入sudo service lightdm stop
3、卸载驱动sudo apt-get purge nvidia*
,这个可以卸载,但有时候也会卸载不了,如果执行这句话之后再输入nvidia-smi
,仍然有Nvidia的驱动信息,则说明没有卸载成功。此时用这句话sh ./nvidia.run --uninstall
,其中nvidia.run
代表是安装驱动时的.run文件,然后根据提示进行操作就行。
3.执行完后,输入sudo service lightdm start
,然后输入sudo reboot
,返回到界面。
安装Unreal4 Engine
1、进入官网
Unreal官网
请注册网站的账户(必须),注册后进入个人信息界面,在 应用与账户 关联Github账号。
2、加入Unreal小组
请打开您的Gitub,找到Epic,这里直接给出链接:Epic
此时,会邀请您加入Unreal小组(确保登录的Github账号和您在Epic中绑定的账号是一致的)
3、下载Unreal源码
从Signup中进入,可以找到Unreal4源码仓库的地址
本文选择Unreal4.2.7版本
4、编译Unreal4
进入Unreal源码文件夹中,依次执行下面的命令:
./Setup.sh
./GenerateProjectFiles.sh
make
编译会很耗时,请耐心等待!
编译完成之时,Unreal4在Ubuntu的安装就完成了。
5、测试安装
cd ~/UnrealEngine-4.27/Engine/Binaries/Linux/
./UE4Editor
如能进入下面界面,说明安装成功:
AirSim编译
1、下载AirSim源码
AirSim
请根据自己的需要下载AirSim版本:本文选择的是v1.8.0-linux版本
2、编译AirSim
cd AirSim
./setup.sh
./build.sh
AirSim完成
在自定义场景中使用AirSim
1、下载场景
本文选择免费的山脉场景:Landscape Mountains
场景需要在Windows中的Epic商城中下载,下载好后拷贝到Linux系统中,本文给出百度云链接:
Landscape Mountains
提取码:1n87
2、生成C++文件
双击mountain.uproject
,会出现提示,大致意思是原版本不是基于Unreal4.2.7版本,需要将文件转换为4.2.7版本,同意即可。
也可以通过./UE4Editor
界面打开项目:
在文件中新建C++类
接下里无需修改,都按照默认即可,然后会进行编译。
3、添加AirSim插件
在之前编译好的AirSim文件夹中
cd ~/AirSim-1.8.0-linux/Unreal/
将里面的Plugins
复制到~/mountain/
文件夹下,使用VS Code对mountain
中的mountain.uproject
进行修改,修改后如下所示:
{
"FileVersion": 3,
"EngineAssociation": "{00042BA6-08DB-230F-38BA-91A64E7E8C45}",
"Category": "Samples",
"Description": "",
"Modules": [
{
"Name": "mountain",
"Type": "Runtime",
"LoadingPhase": "Default",
"AdditionalDependencies": [
"AirSim"
]
}
],
"TargetPlatforms": [
"MacNoEditor",
"WindowsNoEditor"
],
"Plugins": [
{
"Name": "AirSim",
"Enabled": true
}
],
"EpicSampleNameHash": "1226740271"
}
4、使用VS Code打开
如果此时双击mountain.uproject
,它会告诉你,打开失败,是要使用IDE进行编译
选择mountainEditor(DebugGame)
并进行运行
注意:如果报错:配置类型lldb不受支持,请在VS Code插件中安装:
再次运行进入UE4Editor界面
选择世界场景设置
请在游戏模式中设置为AirSimGameMode
此时点击运行即可开始AirSim仿真
参考资料
[1] https://microsoft.github.io/AirSim/unreal_custenv/
[2] https://microsoft.github.io/AirSim/build_linux/
[3] https://www.youtube.com/watch?v=JToFn3Ge9qw
[4] https://www.cnblogs.com/seansheep/p/15860648.html