博主是纯小白,由于买的是树莓派5,只能安装ubuntu23或者ubuntu24,
也就是说只能被迫安装ros2,最近有cartographer建图和定位的需求,然后在打开rviz2的时候出现一下的报错,直接闪退
QSocketNotifier: Can only be used with threads started with QThread
[INFO] [1720758042.114283872] [rviz2]: Stereo is NOT SUPPORTED
[INFO] [1720758042.114487353] [rviz2]: OpenGl version: 4.3 (GLSL 4.3)
[ERROR] [1720758042.245435246] [rviz2]: rviz::RenderSystem: error creating render window: RenderingAPIException: Invalid parentWindowHandle (wrong server or screen) in GLXWindow::create at ./.obj-x86_64-linux-gnu/ogre_vendor-prefix/src/ogre_vendor/RenderSystems/GLSupport/src/GLX/OgreGLXWindow.cpp (line 246)
博主这里试了好久,在中文互联网上找不到相关的经验,最后把结论定为树莓派5自己搬起石头砸自己的脚丫子,强制ros2缺不支持rviz2
我就尝试换了一种方案,毕竟rviz2只是让你能看得见,既然树莓派5不让我看,我在虚拟机上把程序调试完让树莓派闷头跑总行了吧,我就安装了ubuntu24.04rolling相同的环境结果也遇到了相同的问题
那这就不可能是树莓派的问题了,那就是rviz2自身的问题了
我再rviz的isue中找到了老外的一个描述Rviz2 在 ROS2 jazzy 中崩溃 ·问题 #1227 ·ROS2/RVIZ (github.com)
老外用的是jazzy也是ubuntu24大同小异,他说这个是老问题了
解决方案:
你在运行rviz2之前写一句这个就ok
export QT_QPA_PLATFORM=xcb
或者 二者一起运行也可以
QT_QPA_PLATFORM=xcb rviz2
永久解决:
打开这个
vim ~/.bashrc
然后翻到最下面 按 i 按键 代表 insert(插入)
在最下面写入
export QT_QPA_PLATFORM=xcb
按esc 退出,然后输入 : w q 保存并退出
让我们来测试一下
新建一个终端然后输入rviz2
解决!!!