Ubuntu16.04系统安装ROS(kinetic版本)后,使用ROS包含的gazebo时报错,gzserver: /build/ogre-1.9-mqY1wq/ogre-1.9-1.9.0+dfsg1/OgreMain /src/OgreRenderSystem.cpp:546: virtual void Ogre::RenderSystem::setDepthBufferFor (Ogre::RenderTarget*): Assertion `bAttached && "A new DepthBuffer for a RenderTarget was created, but after creation" "it says it's incompatible with that RT"' failed.以及 Called publishAsync but publisher thread has not been started, THIS IS NOT RT safe. You should start it yourself。
1. 报错原因是ROS自带的gazebo版本太低
通过下面指令可以看到gazebo版本是7.0.0
gazebo --version
2. 升级gazebo
2.1 添加下载源
sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
2.2 添加软件包密钥
wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
2.3 更新系统下载源
sudo apt update
2.4 更新gazebo7
sudo apt-get install gazebo7
2.5 测试gazebo版本
gazebo --version
2.6 gazebo升级后,gazebo可正常运行,而且可以加载模型,如下图
附录
1. 如果后续重新编译工作空间时报错 /usr/include/gazebo-7/gazebo/msgs/msgs.hh:24:37: fatal error: ignition/math/ Inertial.hh: No such file or directory。
安装libignition-math2-dev依赖项即可解决
sudo apt-get install libignition-math2-dev