前言
在VMware上使用ROS Gazebo的时候,碰到了Gazebo打不开或者打开就闪退的情况,也没有任何报错,初始化页面运行一秒之后就会退出的问题。经过在Gazebo论坛上和开发者的询问之后,找到了解决方案。
开发环境
VMware版本 :VMware Workstation 16.0 Pro
ubuntu版本:ubuntu-18.04.3-desktop-amd
ROS版本: ROS Melodic
Gazebo版本: Gazebo 9
我遇到的第一个问题如下:
- 从图形化窗口无法打开Gazebo,或者刚打开一秒钟就闪退
- 从命令行输入Gazebo没有任何反应
-
输入gzclient或者gzserver会报错:显示:
[Err] [REST.cc:205] Error in REST request - 无法通过运行以下命令打开演示教程
gazebo worlds/pioneer2dx.world
STEP 1
我们可以看到它提示无法找到对应的网页,这是因为gazebo官网的网址发生了更改而我们本机的存储的还是旧网址,因此就无法找到host,解决该问题的方法如下:
Github上面有关于这个问题的完整探讨,传送门在此[^1]:
gazebo issue
STEP 2
如果第一步之后你就可以正常打开Gazebo了,那么可以忽略第二步。
我本人是第一步操作之后,还会碰到一个VMware的报错:
运行gazebo
mroscoe@ubuntu:~$ gazebo
会报错:
VMware: vmw_ioctl_command error Invalid argument.
但是却可以正常运行
gazebo的一个小例程:
mroscoe@ubuntu:~$ glxgears
6223 frames in 5.0 seconds = 1244.564 FPS
4971 frames in 5.0 seconds = 993.205 FPS
6041 frames in 5.0 seconds = 1208.158 FPS
5833 frames in 5.0 seconds = 1166.566 FPS
5299 frames in 5.0 seconds = 1059.721 FPS
这是由于虚拟机在解析图形的时候,可能与gazebo的指令存在一些冲突,可能的解决方案如下:
- 关闭虚拟机,在上方的“ 编辑虚拟机设置 ”中, 打开 “ 显示器 ” 选项,并且将其中的 “加速3D图形 ” 选项关闭,然后重启虚拟机即可
- 在同样的显示器选项,增大图形内存到大于2GB
经过上述两种操作之后,重新打开虚拟机,再次输入gazebo即可完成运行,
参考方案链接如下:
VMware issue
参考方案
- https://github.com/ros-industrial/universal_robot/issues/412
- https://answers.gazebosim.org//question/13214/virtual-machine-not-launching-gazebo/