问题说明:
虚拟机版本:VMware® Workstation 16 Pro
Ubuntu版本:Ubuntu 18.04
现象:
gazebo闪退,并报 VMware: vmw_ioctl_command error 无效的参数
问题分析:
问题的表面意思就是vmw_ioctl_command这个参数除了问题,从网上了解了下,大概就是虚拟机环境的bug导致的,可能在虚拟机机里,gazebo在参数加载时,出错了,并且网络上也给出了两个解决方式。从问题描述来看,不光是gazebo运行会出这个问题,其他的如rviz也有可能报这个问题。
解决方法1:设置环境变量
网上有人通过排查,认为时加载环境变量出的问题,并顺藤摸瓜,找到了解决方法,通过输入以下命令,关闭硬件加速功能,即可解决问题。
export SVGA_VGPU10=0
或者
export LIBGL_ALWAYS_SOFTWARE=1
如果以上指令直接在shell中运行时没有问题的,但是每打开一个新的shell,就需要输入一次,才能在那个shell中运行gazebo,比较麻烦,因此,我们可以通过以下命令将其加入到用户环境变量,在打开新shell时自动运行该指令。
echo "export SVGA_VGPU10=0" >> ~/.bashrc
或者
echo "export LIBGL_ALWAYS_SOFTWARE=1" >> ~/.bashrc
解决方法2:关闭虚拟机的加速3D
该方法虽然解决了gazebo启动闪退问题,但是如果我们在虚拟机中需要使用GPU图形加速功能,别忘了重新打开该处设置。