【问题标题】:ROS RViz issues when starting using robot_startup开始使用 robots_startup 时的 ROS RViz 问题
【发布时间】:2021-08-23 19:21:51
【问题描述】:

背景

我有一个应用程序,要求我在无头 ROS 环境中启动多个 RViz 窗口。系统需要将图像文件发送到一些本地联网的哑终端,这些终端只能勉强显示图像文件(.jpg)。因此,我只需拍摄 RViz 显示器的屏幕快照并将其发送。这很好用,但是,我需要在启动时运行 RViz 窗口。

实施

ROS 念力系统在 Ubuntu 20.04 上运行。我使用 robot_upstart 为我提供了一个 systemd 服务的工作框架,然后修改了核心服务文件以允许 display_manager 访问

这是我的工作 system.d 服务文件,名为“test.service”

    [Unit]
    Description="bringup test"
    After=network.target
    After=display_manager.service
    Wants=display_manager.service
    
    [Service]
    Type=simple
    Environment="XAUTHORITY=/run/user/1000/gdm/Xauthority"
    Environment="DISPLAY=:0"
    Environment="XDG_RUNTIME_DIR=/home/<my_username/catkin_ws/tmp"
    Environment="/home/<my_username>"  # THIS FIXED THE ISSUE
    ExecStart=/usr/sbin/test-start
    
    [Install]
    WantedBy=multi-user.target

几乎有效。 journalctl -f -u test.service 列出一个错误:

Jun 06 21:10:22 aoede test-start[10209]: /opt/ros/noetic/lib/rviz/rviz: line 1: 10220 Aborted                 (core dumped) $0 $@
Jun 06 21:10:25 aoede dbus-daemon[10259]: [session uid=1000 pid=10257] AppArmor D-Bus mediation is enabled
Jun 06 21:10:28 aoede test-start[10237]: terminate called after throwing an instance of 'boost::filesystem::filesystem_error'
Jun 06 21:10:28 aoede test-start[10237]:   what():  boost::filesystem::create_directory: Permission denied: "/.rviz"
Jun 06 21:10:28 aoede test-start[10218]: Aborted (core dumped)

它正在尝试写入目录 /.rviz 。当我以宽松的权限自己创建此目录时,它可以正常工作,并且 RViz 窗口全部启动。这个目录似乎充满了 RViz 实例的持久性文件。

我已尝试按上述方式设置 XDG_RUNTIME_DIR,但没有效果。我应该设置什么环境变量,或者其他方式,以便 RViz 在一个更合理的地方寻找?此外,如果有任何关于比上述更好的做法的建议,我们将不胜感激。

【问题讨论】:

    标签: graphics ros systemd


    【解决方案1】:

    所需的环境变量是 $HOME 这是在服务运行后设置的,因此不可用。

    Environment="/home/<my_username>"
    

    修复了问题

    【讨论】:

      猜你喜欢
      • 2016-09-06
      • 2022-06-29
      • 1970-01-01
      • 1970-01-01
      • 2022-07-19
      • 1970-01-01
      • 2023-02-21
      • 2017-04-21
      • 2014-06-09
      相关资源
      最近更新 更多