我正在尝试使用rviz,方法是使用ssh进行远程连接。当我执行命令rosrun rviz rviz时,会出现以下错误:
QStandardPaths:未能设置,默认为‘/tmp/运行时-根’qt.qpa.screen: QXcbConnection:未能连接到显示,无法连接到任何X显示器。
我已经在ssh连接期间通过-X添加了ssh myusername@host -X标志,但是没有什么变化。
我不知道还能做些什么,所以任何帮助都会受到欢迎。
我正在一台Mac电脑(macOS Catalina)上工作,我正在一个工作站上和Docker一起工作,我的图像有Ubuntu18.04和ROS旋律。
提前谢谢你。
编辑:
我只是尝试在工作站上本地执行rviz,并出现了相同的错误,因此我认为ssh连接不是问题。问题是否是码头工人或工作站(Nvidia DGX站)造成的?可能是因为许可问题吗?
谢谢。
发布于 2021-09-23 09:29:24
我目前还不知道码头的情况,但我为您做了以下工作:
user@local $ export ROS_MASTER_URI=http://your_remote's_hostname:11311
user@local $ rosrun rviz rviz有关这两台机器上的详细信息+ ip配置,请参见https://wiki.ros.org/ROS/NetworkSetup。
发布于 2021-07-02 17:31:50
更新: 这里是关于在docker和MAC中运行GUI应用程序的一些指导,可能很有用(如果您已经看过它)。
我有一个带有ROS的对接容器,用于运行rviz和其他UI应用程序(ROS的基于QT的应用程序在KDE中不起作用)。
docker-compose.yml包含以下内容:
##############
version: "3.8"
services:
ros:
container_name: ros1
network_mode: host
# I created my own image, with my own user, etc
image: YOUR_IMAGE
volumes:
# you can ignore this line if you want (I'll explain below)
# - /home/ichramm/devel/robots:/home/ichramm/devel/robots
- /etc/localtime:/etc/localtime:ro
- /tmp/.X11-unix:/tmp/.X11-unix:ro
- /home/ichramm/.Xauthority:/home/ichramm/.Xauthority:ro
- /run/user/1000:/run/user/1000:ro
- /run/user/1000/bus:/run/user/1000/bus:ro
command: /entrypoint.sh
environment:
USER: ichramm
DISPLAY: ${DISPLAY}
XDG_RUNTIME_DIR=/tmp/runtime-${USER}
DBUS_SESSION_BUS_ADDRESS: unix:path=/run/user/1000/bus
devices:
#- "/dev/ttyUSB0:/dev/ttyUSB0"
#- "/dev/dri/card0:/dev/dri/card0"
#- "/dev/dri/card1:/dev/dri/card1"您应该尝试将已安装的卷映射到您的系统。我知道你有MAC,这意味着这可能不适合你。
这对我有用,但我不使用ssh,我只使用两个脚本:
1.
❯ cat docker-run.sh
#!/bin/bash
docker exec -ti -w $(pwd) ros1 ./wrapper.sh $@❯ cat wrapper.sh
#!/bin/bash
export XDG_RUNTIME_DIR=/tmp/runtime-$USER
source env.sh
$@为了使其工作,您需要以下内容:
env.sh,它来源于ROS的setup.bash和工作区devel/setup.bash。当然,使用这些脚本的经验是有限的,这就是为什么我也直接使用以下方法进入码头:
❯ cat enter-env.sh
#!/bin/bash
docker exec -ti -w /home/ichramm/devel/robots ros1 /bin/bash这只是因为容器的目录结构与主机的目录结构相匹配(请注意,我只是挂载了开发目录)。我还在主机中添加了一个名为UID和GID的用户,以防止文件权限出现问题。
如果你不能使它工作,我建议你转向一个VM。只需在没有UI的情况下安装Ubuntu20.04(稍后可以使用sudo systemctl set-default multi-user禁用它),并在X转发中使用SSH。我使用了这个设置,切换到了docker,并且仍然有VM,以防发生什么事情。
更新:在考虑做一些可能不安全的事情,比如安装.Xauthority。它对我有效,因为没有其他人可以访问我的电脑。
https://stackoverflow.com/questions/68213504
复制相似问题