当前位置:   article > 正文

linux+ros2 launch文件开机自启动_[error] [rcl]: failed to configure logging: failed

[error] [rcl]: failed to configure logging: failed to create user log direct

1.ros自带的启动程序

2.图形界面配置启动项

  • 在/etc/init.d/路径下创建 start.sh文件

  • 在文件内编辑要自启动的指令

sudo chmod 777 start.sh
  • 输入指令gnome-session-properties 会出现一个配置界面,将要执行的start.sh文件的路径添加进去

3.rc.local启动

  • 首先编辑/lib/systemd/system目录下的rc-local.service文件,内容如下(sudo gedit rc-local.service)

  1. [Unit]
  2. Description=/etc/rc.local Compatibility
  3. Documentation=man:systemd-rc-local-generator(8)
  4. ConditionFileIsExecutable=/etc/rc.local
  5. After=network.target
  6. [Service]
  7. Type=forking
  8. ExecStart=/etc/rc.local start
  9. TimeoutSec=0
  10. RemainAfterExit=yes
  11. GuessMainPID=no
  12. [Install]
  13. WantedBy=multi-user.target
  • 编辑rc.local文件,可添加指令(注意添加绝对路径)

  • 修改文件权限为可执行权限

  • sudo chmod 777 rc.local
    

  • 路径:/etc

  • 可通过

  1. sudo systemctl enable rc-local //使能自启服务
  2. sudo systemctl start rc-local.service //手动启动自启项服务
  3. sudo systemctl status rc-local.service //查看启动项状态
  • 目前的启动文件如下,在循环执行的语句后面一定要加"&",这样做的原因是另应用执行一次后,转为后台执行,如果不加则可能回在系统启动界面卡住,导致进不去系统

    1. #!/bin/bash -e
    2. export ROS_LOG_DIR=/home/ly/fish_ws/log #ros文件的log路径 这个必须要写 否则会报python类的错误
    3. . /opt/ros/eloquent/setup.sh #更新ros应用 否则需要在下面的ros指令中添加绝对路径
    4. . /home/ly/fish_ws/install/setup.sh #更新要执行的ros功能包路径
    5. #ros2 launch /home/ly/fish_ws/src/topic_multi_thread/lanuch/fish_launch.py &
    6. #ros2 launch /home/ly/fish_ws/src/topic_multi_thread/lanuch/fish_launch.py &
    7. #ros2 launch topic_multi_thread fish_launch.py &
    8. ros2 run topic_multi_thread mt_pub_sub & #执行ros的launch文件
    9. exit 0

  • 异常问题

(1)当启动服务阶段(下面指令)出现error提示,为rc.local文件语法错误,修正后无错。报错截图后续补充

sudo systemctl start rc-local.service //手动启动自启项服务

(2)通过启动状态看到获取主目录相关错误,如下:

  1. ● rc-local.service - /etc/rc.local Compatibility
  2. Loaded: loaded (/lib/systemd/system/rc-local.service; enabled; vendor preset: enabled)
  3. Drop-In: /lib/systemd/system/rc-local.service.d
  4. └─debian.conf
  5. Active: active (exited) since Mon 2022-06-20 20:21:02 PDT; 2s ago
  6. Docs: man:systemd-rc-local-generator(8)
  7. Process: 2166 ExecStart=/etc/rc.local start (code=exited, status=0/SUCCESS)
  8. 620 20:21:02 ubuntu systemd[1]: Starting /etc/rc.local Compatibility...
  9. 620 20:21:02 ubuntu systemd[1]: Started /etc/rc.local Compatibility.
  10. 620 20:21:03 ubuntu rc.local[2166]: [ERROR] [rcl]: Failed to configure logging: Failed to get users home directory, at /tmp/binarydeb/ros-eloquent-rcl-logging-spdlog-0.3.3/src/rcl_logging_spdlog.cpp:90
  11. 620 20:21:03 ubuntu rc.local[2166]: Failed to init: Failed to get users home directory, at /tmp/binarydeb/ros-eloquent-rcl-logging-spdlog-0.3.3/src/rcl_logging_spdlog.cpp:90

需要在rc.local添加环境变量主目录为当前用户目录,如下语句

export HOME=/home/lyzln

(3)通过启动状态看到Python相关错误,如下(错误截图待补充):

解决办法:需要在rc.local添加日志路径环境变量配置语句如下:

export ROS_LOG_DIR=/home/lyzln/fish_ws/log

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/72251
推荐阅读
相关标签
  

闽ICP备14008679号