系统版本:Ubuntu20.04
显卡:NVIDIA GeForce RTX 3090
驱动:535.146.02
不管机器有没有装独显,gazebo在跑px4仿真的时候总是默认使用CPU,跑起来页面总会卡顿,帧率很低,为了解决这个问题,需要使用gpu驱动加速gazebo,可以大幅度提高仿真流畅度和帧率,不过在安装nvidia驱动的时候总会遇到很多坑,并且有很多方法已经没有作用,所以写下这篇博客,为了做一下记录(有什么问题希望大佬们指出来一下)。
一、安装NVIDIA驱动:Official Drivers | NVIDIA
在官网选择你的显卡型号
点击search
复制下载链接,使用命令行下载:
wget 你复制的下载链接
下载完驱动在安装之前,如果你之前自己尝试安装过驱动,需要把它们卸载了:
sudo apt-get --purge remove nvidia*
sudo /usr/bin/nvidia-uninstall
上面使两种卸载方法,推荐使用第二种,不要轻易尝试其他的卸载命令,我当时为了卸载cuda用了一些博主的命令把我的ros环境损伤了,害的我重新配了一遍环境,谨慎!
卸载完之后,要禁用nouveau驱动,这是开发人员编写的一款针对nvidia显卡的开源驱动,所以性能比较一言难尽,需要通过黑名单将其禁用:
sudo vim /etc/modprobe.d/blacklist.conf #进入黑名单文件,进入黑名单的应用不在会被调用
blacklist nouveau
options nouveau modeset=0 #在末尾添加下面两行命令即可禁用reboot #重启系统,使配置生效
重启成功后,在终端调用nouveau
lsmod | grep nouveau
没有输出证明禁用成功,下面开始安装驱动
sudo chmod a+x NVIDIA-Linux-x86_64-535.146.02.run #给权限
sudo ./NVIDIA-Linux-x86_64-535.146.02.run --no-x-check --no-nouveau-check
-no-x-check:安装驱动时关闭X服务
-no-nouveau-check:安装驱动时禁用nouveau
-no-opengl-files:只安装驱动文件,不安装OpenGL文件(这个选项要根据自己的情况是否安装,如果不确定,还是安装的好)
接下来应该会进入安装界面
因为我已经存在一个驱动,所以会显示error,跟着步骤安装就可以。关于一些问题,不用安装32位库,安装xconfig,continue选yes,dkms选no。
安装完成之后在终端输入
nvidia-smi #检验是否安装成功并获取相关信息
输出该界面即安装成功。
二、驱动安装之后的配置问题
但我把驱动成功安装之后,并没有如愿的使用gpu加速gazebo,我看很多博主的教程下面都有人提这个问题,成功安装了驱动但启动gazebo仍然跑在cpu上,针对这个问题有些博主提出切换显卡,或者是opengl的问题,我也按照那些方法试了一下,感觉大概率是opengl的问题,不过也没有找到相关的解决方法。
运行gazebo之后,nvidia-smi仍然没有gazebo服务, 浪费了很多时间找不到解决方法,于是决定不配置底层,直接终端指定使用独显运行,这需要用到Bumblebee,Bumblebee是一个用于在双显卡(集成显卡 + 独立显卡)系统上运行特定应用程序时启用独立显卡的解决方案。如果读者有nvidia prime可能不需要这个工具,直接在nvidia-settings里面切换应该可以(有博主提到过这个方法),不过我没有,还是决定用bumblebee解决,过程如下:
sudo apt install bumblebee #安装库
optirun gazebo #指定用独立显卡驱动gazebo
就可以看到gazebo成功在gpu上运行,如果读者和我一样想在px4启动gazebo仿真,只需要在编译或者运行launch文件之前加上optirun命令即可
optirun make px4_sitl_default gazebo
optirun roslaunch yourfile.launch
通过强制使用独显运行解决问题。