哇!今天超开心~ 2025-08-15 17:41 采纳率: 0%
浏览 13

在MobaXterm 使用 wsl ros 的Rviz 段错误以及不能弹出主窗体

img


使用 MobaXterm 启动 wsl 后,单独运行 rosrun rviz rviz
会提示下面内容

QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-lbh18'
[ INFO] [1755249813.619356600]: rviz version 1.13.30
[ INFO] [1755249813.619461500]: compiled against Qt version 5.9.5
[ INFO] [1755249813.619499300]: compiled against OGRE version 1.9.0 (Ghadamon)
[ INFO] [1755249813.624884600]: Forcing OpenGl version 0.
Segmentation fault

但是使用 xeyes 测试2D图形界面可以正常弹出

使用下面命令打开ur3模型时提示信息如下, 无法弹出 Rviz 主界面
roslaunch ur3 display.launch
提示信息如下

... logging to /home/lbh18/.ros/log/0b0d7f18-79ad-11f0-b02a-00155d1bc47d/roslaunch-exlibh4123-4243.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://exlibh4123:41021/

SUMMARY
========

PARAMETERS
 * /robot_description: <...>
 * /rosdistro: melodic
 * /rosversion: 1.14.13

NODES
  /
    joint_state_publisher_gui (joint_state_publisher_gui/joint_state_publisher_gui)
    robot_state_publisher (robot_state_publisher/robot_state_publisher)
    rviz (rviz/rviz)

ROS_MASTER_URI=http://localhost:11311

process[joint_state_publisher_gui-1]: started with pid [4265]
process[robot_state_publisher-2]: started with pid [4266]
process[rviz-3]: started with pid [4267]
[ WARN] [1755249883.997476900]: The root link base_link has an inertia specified in the URDF, but KDL does not support a root link with an inertia.  As a workaround, you can add an extra dummy link to your URDF.
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-lbh18'
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-lbh18'
[rviz-3] process has died [pid 4267, exit code -11, cmd /opt/ros/melodic/lib/rviz/rviz -d /home/lbh18/catkin_ws/src/ur3/urdf.rviz __name:=rviz __log:=/home/lbh18/.ros/log/0b0d7f18-79ad-11f0-b02a-00155d1bc47d/rviz-3.log].
log file: /home/lbh18/.ros/log/0b0d7f18-79ad-11f0-b02a-00155d1bc47d/rviz-3*.log
^C[robot_state_publisher-2] killing on exit
[joint_state_publisher_gui-1] killing on exit
shutting down processing monitor...
... shutting down processing monitor complete
done

请问这个问题怎么解决呢? 希望各大家指教!

_# 在 powershell 中运行 wsl ,执行 roslaunch ur3 display.launch 一切正常,可以弹出 Rviz 主窗体, 但是我想使用 Mobaterm _

  • 写回答

5条回答 默认 最新

  • 檀越@新空间 2025-08-15 17:42
    关注

    下午好🌅🌅🌅
    本答案参考通义千问

    在使用 MobaXterm 启动 WSL (Windows Subsystem for Linux) 并尝试运行 ROS 的 RVIZ 时,出现 段错误(Segmentation fault)无法弹出主窗体 的问题,通常与图形界面的显示配置有关。以下是详细的解决方案和排查步骤。


    问题原因分析

    1. X11 显示服务器未正确配置
      WSL 本身不支持图形界面,需要通过 X11 服务器(如 XmingVcXsrv)将图形渲染到 Windows 系统上。如果 MobaXterm 没有正确连接或配置 X11 服务器,RVIZ 会因无法创建窗口而崩溃。

    2. 环境变量未设置
      DISPLAYXAUTHORITY 等环境变量未正确设置,导致 RVIZ 无法找到 X11 服务器。

    3. 权限问题
      在 WSL 中运行图形程序时,可能因为权限不足导致段错误。

    4. MobaXterm 的图形支持限制
      MobaXterm 虽然支持 X11 转发,但某些情况下可能配置不当,导致图形应用无法正常运行。


    解决方案步骤

    1. 安装并启动 X11 服务器(推荐 VcXsrv)

    • 下载并安装 VcXsrv
    • 安装完成后,以管理员身份运行 VcXsrv,选择 "Multiple windows" 模式,并确保勾选:
      • Disable access control(禁用访问控制)
    • 保持 VcXsrv 运行状态。

    注意:VcXsrv 是 Windows 上最常用的 X11 服务器,适用于 WSL 图形显示。


    2. 在 WSL 中设置 X11 环境变量

    在 WSL 终端中执行以下命令:

    export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0.0
    export XAUTHORITY=$HOME/.Xauthority
    

    说明

    • DISPLAY 设置为 Windows 主机的 IP 地址 + :0.0
    • XAUTHORITY 用于保存 X11 的认证信息

    3. 生成 X11 认证文件

    在 WSL 中运行以下命令,生成 .Xauthority 文件:

    xauth generate :0 . trusted
    

    或者手动复制认证信息:

    xauth add $(hostname):0 . $(xxd -l 16 -p /dev/urandom)
    

    4. 检查 X11 服务器是否可用

    在 WSL 中运行以下命令测试图形功能:

    xeyes
    

    如果能正常弹出眼睛窗口,说明 X11 配置成功。


    5. 在 MobaXterm 中启用 X11 转发

    • 打开 MobaXterm。
    • 右键点击当前终端,选择 "Settings"
    • "X11" 选项卡中,确保:
      • Enable X11 forwarding 已勾选。
      • X11 server 设置为 localhost
    • 重启终端后重新运行 ROS 命令。

    6. 修改 ROS 启动脚本(可选)

    如果你在 roslaunch ur3 display.launch 时仍然失败,可以尝试在 WSL 中运行以下命令来强制使用 OpenGL 2.0(部分驱动兼容性问题):

    export LIBGL_ALWAYS_SOFTWARE=1
    

    7. 检查 ROS 环境变量

    确保你已经正确设置了 ROS 的环境变量,例如:

    source /opt/ros/melodic/setup.bash
    

    8. 尝试使用 rosrun rviz rviz 测试

    在 WSL 中运行:

    rosrun rviz rviz
    

    如果出现段错误,请检查以下内容:

    • 是否已正确安装 libglu1-mesa-devlibgomp1 等依赖库。
    • 尝试更新 WSL 内核版本。

    完整代码示例(WSL 中执行)

    # 设置 DISPLAY 环境变量
    export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0.0
    export XAUTHORITY=$HOME/.Xauthority
    
    # 生成 X11 认证文件
    xauth generate :0 . trusted
    
    # 启动 ROS 环境
    source /opt/ros/melodic/setup.bash
    
    # 运行 RVIZ
    rosrun rviz rviz
    

    常见错误及解决方法

    | 错误提示 | 解决方案 | |----------|----------| | Segmentation fault | 检查 X11 配置、DISPLAYXAUTHORITY 是否正确 | | QStandardPaths: XDG_RUNTIME_DIR not set | 设置 XDG_RUNTIME_DIR=/tmp/runtime-lbh18 | | xeyes 正常,但 rviz 崩溃 | 检查 LIBGL_ALWAYS_SOFTWARE=1 或更换显卡驱动 | | Connection refused | 检查 VcXsrv 是否运行,防火墙是否阻止了连接 |


    总结

    | 关键点 | 说明 | |--------|------| | X11 服务器 | 必须在 Windows 上运行(如 VcXsrv),并允许 WSL 连接 | | 环境变量 | DISPLAY, XAUTHORITY, XDG_RUNTIME_DIR 必须正确设置 | | MobaXterm 配置 | 启用 X11 转发,设置 localhost 为 X11 服务器 | | ROS 启动方式 | 使用 rosrun rviz rvizroslaunch 时确保图形支持开启 |


    最终建议

    • 如果 MobaXterm 仍无法稳定运行 RVIZ,建议改用 Windows Terminal + WSL + VcXsrv 组合,这是目前最稳定的方案。
    • 如果你在 WSL 中使用的是 Ubuntu 20.04+,可以考虑升级到 ROS Noetic,其对 WSL 支持更好。

    如需进一步帮助,欢迎提供你的 WSL 版本、ROS 版本以及完整的日志信息。

    评论

报告相同问题?

问题事件

  • 创建了问题 8月15日