在调试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入手找原因。新开terminal测试rviz、gazebo。 果然双双瘫痪.
下载cuda8.0,切记下载.run文件不要下载.deb文件: 安装cuda,切记以no-opengl-libs方式安装,就是这里导致链接库错误。
sudo sh cuda_8.0.61_375.26_linux.run --no-opengl-libsnote: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 ./bandwidthTestResult = PASS 成功.到此这边的问题解决了一半了但是Tensorflow明显瘫了,故,继续按照博客进行后面的操作重新安装完Tensorflow_GPU版本。
已经安装ros 了的基础上:
rosdep install rviz #执行初始化 sudo rosdep init #更新 rosdep update设置环境变量:
#设置变量 export LIBGL_ALWAYS_SOFTWARE=1 #启动测试 rosrun rviz rviz解决方法看上去很简单,也确实很简单,但是花了我好长时间,气人。回到正轨调试上。
20191118更新:
===================================================================== 在最新的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 ./bandwidthTestResult = PASS 成功.