qq_53646220 2024-10-27 23:41 采纳率: 0%
浏览 95

ubuntu下安装ros运行小海龟例程失败

Got keys from plugin meta data ("xcb")
QFactoryLoader::QFactoryLoader() checking directory path "/opt/ros/noetic/lib/turtlesim/platforms" ...
loaded library "/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqxcb.so"
qt.qpa.xcb: could not connect to display :0.0
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" 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.

  • 写回答

1条回答 默认 最新

  • 爱编程的鱼 2024-10-28 05:59
    关注

    在 Ubuntu 下安装 ROS 并运行小海龟例程时遇到上述错误,主要是与 Qt 平台插件相关的问题,可能有以下几种原因及解决方法:
    一、环境变量设置问题
    可能情况:
    DISPLAY环境变量可能未正确设置或设置的值不正确。当运行需要图形界面展示的程序(如小海龟例程)时,程序需要通过DISPLAY环境变量来知道要在哪个显示器上显示内容。如果该变量设置有误,就会出现无法连接到指定显示器(如:0.0)的情况。
    ROS 相关的环境变量设置可能存在问题,影响了程序对 Qt 平台插件的加载和使用。例如,某些 ROS 环境变量可能指向了错误的库路径,导致在查找和加载xcb插件时出现混乱。
    检查及解决方法:
    首先检查DISPLAY环境变量的值。在终端中输入echo $DISPLAY,如果没有输出或输出的值看起来不正确(比如为空或格式不对),可以尝试手动设置它。通常在本地图形界面环境下,其值应该为:0.0或类似形式。可以通过以下命令设置:
    export DISPLAY=:0.0
    然后再次尝试运行小海龟例程。
    对于 ROS 环境变量,确保在运行例程之前已经正确 source 了 ROS 的安装环境脚本。例如,如果安装的是 ROS Noetic 版本,在终端中应该先执行以下命令:
    source /opt/ros/noetic/setup.bash
    然后再运行小海龟例程。如果不确定是否已经正确 source,可以重新 source 一次并尝试运行。
    二、图形驱动或 X 服务器问题
    可能情况:
    图形驱动可能存在问题,例如未正确安装、版本不兼容或出现故障。这可能导致 Qt 平台插件无法通过xcb协议与 X 服务器正常通信,从而出现无法连接到显示器的错误。
    X 服务器本身可能出现故障或未正常启动。xcb插件是用于与 X 服务器进行交互的,如果 X 服务器有问题,插件就无法正常工作。
    检查及解决方法:
    检查图形驱动是否安装正确且为最新版本。对于 NVIDIA 显卡,可以通过nvidia-smi命令查看显卡信息及驱动版本。如果驱动未安装或版本较旧,可以根据显卡型号到 NVIDIA 官方网站或通过系统的软件更新工具(如 Ubuntu 的update-manager)来安装或更新驱动。对于 AMD 显卡或集成显卡,也有相应的检查和更新驱动的方法,可以通过系统设置或官方网站提供的工具进行操作。
    检查 X 服务器是否正常启动。在终端中输入ps -ef | grep X,应该能看到类似/usr/bin/X :0 -auth /var/run/xauth/AUTHORITYFILE这样的 X 服务器进程信息。如果没有看到,可能需要重启 X 服务器。在 Ubuntu 中,可以通过按下Ctrl + Alt + Backspace组合键(部分系统可能需要先启用该快捷键功能)来重启 X 服务器,然后再尝试运行小海龟例程。
    三、Qt 平台插件问题
    可能情况:
    xcb插件本身可能存在损坏或与其他组件不兼容的情况。虽然提示已经找到该插件并加载了相关库(如libqxcb.so),但可能在实际运行时仍无法正常工作。
    其他可用的 Qt 平台插件(如eglfs、linuxfb、minimal、minimalegl、offscreen、vnc)可能因为某些原因未被正确尝试或无法替代xcb插件工作。例如,程序可能被设置为只尝试使用xcb插件,而没有考虑其他插件在xcb插件出现问题时的替代作用。
    检查及解决方法:
    尝试重新安装xcb插件。在终端中,可以通过以下命令来重新安装与xcb相关的 Qt 组件:
    sudo apt-get install --reinstall libqt5xcb-plugin
    然后再次尝试运行小海龟例程。
    如果重新安装xcb插件后问题仍然存在,可以尝试强制程序使用其他可用的 Qt 平台插件。例如,要使用eglfs插件,可以在运行小海龟例程之前设置环境变量:
    export QT_QPA_PLATFORM=eglfs
    然后再运行程序,看是否能正常运行。不同的插件可能适用于不同的场景,可能需要根据实际情况进行尝试和调整。
    通过以上对可能导致问题的原因进行逐一排查和处理,应该能够解决在 Ubuntu 下运行 ROS 小海龟例程时遇到的与 Qt 平台插件相关的问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 10月27日