使用robot_startup启动时出现ROS RViz问题



背景

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

实施

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

这是我的工作系统.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看起来更合理?此外,如果能就比上述更好的做法提出任何建议,我将不胜感激。

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

Environment="/home/<my_username>"

修复问题

相关内容

  • 没有找到相关文章

最新更新