ROS Rviz以及gazebo libGL error
1.引言
在调试TurtleBot3的时候启动Rviz报错
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
如图:
之前肯定是能使用的,于是回想最近干了啥—配置了Tensorflow,再根据查阅资料定位到NVIDIA显卡驱动问题,有可能是cuda8.0安装姿势不正确。然后又看了看具体的报错,与Rviz联系更密切,于是解决思路大概两个:
- 从NVIDIA驱动入手查找原因,可能是安装或更新nvidia驱动后导致libGL动态链接库链接中断或者指向错误的链接,这个参考并没有解决问题,且需要更改一个命令:
sudo find /usr -iname "*libGL.so*" -exec ls -- {} \;
- 从更密切相关的Rviz入手找原因。
2.解决方案
新开terminal测试rviz、gazebo。
果然双双瘫痪.
2.1.删除并重新安装cuda8.0 :
cd /usr/local/cuda-8.0
sudo rm -rf cuda-8.0
下载cuda8.0,切记下载.run文件不要下载.deb文件:
安装cuda,切记以no-opengl-libs方式安装,就是这里导致链接库错误。
sudo sh cuda_8.0.61_375.26_linux.run --no-opengl-libs
note:license文件很长,长按CTRL+F翻页(CTRL +B是往前翻一页)即可。
然后根据提示选择:
配置环境变量:
sudo gedit ~/.bashrc
在文件中加入:
export PATH=/usr/local/cuda-8.0/bin/:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64/
生效环境变量:
source ~/.bashrc
测试:
#编译并测试设备 deviceQuery:
cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
#编译并测试带宽 bandwidthTest:
cd ../bandwidthTest
sudo make
./bandwidthTest
Result = PASS 成功.到此这边的问题解决了一半了但是Tensorflow明显瘫了,故,继续按照博客进行后面的操作重新安装完Tensorflow_GPU版本。
2.2.重装Rviz
已经安装ros 了的基础上:
rosdep install rviz
#执行初始化
sudo rosdep init
#更新
rosdep update
设置环境变量:
#设置变量
export LIBGL_ALWAYS_SOFTWARE=1
#启动测试
rosrun rviz rviz
解决方法看上去很简单,也确实很简单,但是花了我好长时间,气人。回到正轨调试上。
20191118更新:
3.安装cuda10.1
=====================================================================
在最新的CUDA安装中(目前安装的10.1版本)已经不在是上面这个安装界面了,按照这个方式也为有一点点小错误,在日志文件可以看到报错大致为:You appear to be running an X server; please exit X before
解决办法,参考显卡驱动安装方式进入文本模式就可以关闭X server
,然后再按部就班安装.
=====================================================================
禁用 nouveau驱动:
lsmod | grep nouveau # 查看有没有输出,如果有信息输出,则需要禁掉
sudo gedit /etc/modprobe.d/blacklist.conf #将默认的驱动拉进黑名单
在blacklist.conf的最后添加下面几行:
blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist rivatv
blacklist nvidiafb
更新: sudo update-initramfs -u #这一步可能翻墙要快点,但也无妨。
重启: lsmod | grep nouveau # 查看有没有输出,如果没有任何信息输出,则说明ok
进入tty模式进行安装:
Ctrl+Alt+F1进入文本模式,Ctrl+Alt+F7返回图形界面模式(期间文本模式下的进度不会改变,还可一继续进入文本模式)
#输入账户名及密码
sudo su #输入密码,以root权限运行
cd ~/ # ~/ <=> /home/yourname/
sudo service lightdm stop # 关闭图形界面
#如果安装失败,重新打开图形界面sudo service lightdm restart 把刚刚加入黑免单的驱动删除重启就回到了原来的状态
sudo init 3 #这句官网有介绍,Switch to runlevel 3.
sudo sh cuda_10.1.105_418.39_linux.run --no-opengl-files
#–no-nouveau-check 安装驱动时不检查nouveau
#后面两个参数可不加。
注意:显卡驱动之前已经装过,这里不需要安装显卡驱动:
之前装过,选择覆盖之前的文件:
安装成功:
配置环境变量:
sudo gedit ~/.bashrc
在文件中加入:
export PATH=/usr/local/cuda-10.1/bin/:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64/
生效环境变量:
source ~/.bashrc
测试:
#编译并测试设备 deviceQuery:
cd /usr/local/cuda-10.1/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
#编译并测试带宽 bandwidthTest:
cd ../bandwidthTest
sudo make
./bandwidthTest
Result = PASS 成功.