解决ros2的turtlesim的qt插件加载失败的问题&ros2部分笔记
ros2
https://fishros.com/d2lros2/#/humble/chapt1/get_started/4.ROS2初体验
通过环境变量RCUTILS_CONSOLE_OUTPUT_FORMAT修改输出的日志格式
export RCUTILS_CONSOLE_OUTPUT_FORMAT=[{function_name}:{line_number}]:{message}
表示日志级别的severity、表示日志记录器名的name、表示文件名字的file_name、表示时间戳的time以及表示纳秒时间戳的time_as_nanoseconds。
ros2 run turtlesim turtlesim_node
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "/usr/lib/x86_64-linux-gnu/qt5/plugins/" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb.
尝试了这个方法 sudo apt install libxcb-*
https://blog.csdn.net/qq_32892383/article/details/141474600
没用
然后请kimi分析报错:
验证Qt是否正常工作:qmake -v
QMake version 3.1
Using Qt version 5.9.7 in /home/xxx/anaconda3/lib
表明你的系统中存在多个版本的Qt,并且当前的qmake命令指向的是Anaconda环境中的Qt版本(5.9.7),而不是系统默认的Qt版本(5.15.3)。这可能是导致你遇到的Qt平台插件问题的原因之一,因为不同的Qt版本可能有不同的插件路径和配置。
具体说明
qmake版本:QMake版本3.1是Qt 5.x系列的版本。
Qt版本:当前使用的Qt版本是5.9.7。
安装路径:Qt安装在/home/xxx/anaconda3/lib,这表明它是由Anaconda环境管理的。
问题分析
Qt版本冲突:系统中存在多个Qt版本(系统默认的5.15.3和Anaconda环境中的5.9.7),这可能导致应用程序在运行时加载了错误的Qt版本或插件。
插件路径问题:由于qmake指向了Anaconda环境中的Qt版本,应用程序可能无法找到系统默认的Qt插件路径(/usr/lib/x86_64-linux-gnu/qt5/plugins/),从而导致“Could not load the Qt platform plugin 'xcb'”错误。
检查和重置相关的环境变量:
echo $QT_PLUGIN_PATH
echo $QT_QPA_PLATFORM_PLUGIN_PATH
如果这些变量指向了Anaconda环境中的路径,可以将其重置或清除:
unset QT_PLUGIN_PATH
unset QT_QPA_PLATFORM_PLUGIN_PATH
查看链接问题
ls -l /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqxcb.so
输出应该类似于:
-rw-r--r-- 1 root root 123456 Jul 15 12:34 /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqxcb.so
ls -l /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
lrwxrwxrwx 1 root root 22 6月 30 17:12 /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5 -> libQt5XcbQpa.so.5_past
上面的是错的
ls -l /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
lrwxrwxrwx 1 root root 48 6月 30 17:17 /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5 -> /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5.15.3
这个是对的
sudo apt-get install --reinstall libqt5xcbqpa5
这个命令会重新安装 libqt5xcbqpa5 包,可能会修复损坏的文件或符号链接。
如果重新安装后问题仍然存在,可以手动检查和修复符号链接:
sudo ln -sf /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5.15.3 /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
似乎经过这样处理后,问题基本解决,
ros2 run turtlesim turtlesim_node
可以弹出来了!
控制问题
turtle_teleop_key 使用以下键位:
箭头键:前进、后退、左转、右转
G, B, V, C, D, E, R, T:旋转到绝对方向
F:取消旋转
Q:退出

浙公网安备 33010602011771号