X3派Ubuntu 系统开机自启动pkg失败

用户您好,请详细描述您所遇到的问题:

  1. 系统软件版本: (通过 cat /etc/version 获得)
  2. 问题涉及的技术领域: (硬件、操作系统、驱动、其他)
  3. 问题描述:(尽可能详细的描述在进行什么功能的开发或者测试,发现了什么问题,问题现象,并且提供预期的结果)
  4. 复现概率:(必现、高、中、低,并描述大致的概率数值) 已进行的排查措施、分析及结果:
    1. 硬件问题先排查供电和时钟
    2. 驱动问题先排查外设的供电、复位和时钟
    3. 功能异常,先排查一下是不是运行的代码和demo存在差异,修改不多的情况下直接用对比软件先对比
  5. 提供必要的问题日志:
  6. 软件上是否有做自定义修改:

我基于x3 PI 的 unbuntu server(后又换成 ubuntu desk)系统想做个自启动脚本,即系统启动后不需要输入用户名和密码,在开机后即可自动运行人体跟随pkg,结果尝试多种情况均失败。我先是按sdk中的说明文档在/etc/rc.local 脚本最后面启动了我的脚本,提示启动失败,然后我创建了系统服务,也提示启动失败。

需要寻求帮助的是只要能让pkg开机自启动即可,随便什么方案都行。

我创建的脚本内容如下:

#!/bin/bash -e

echo "-----start auto run --->"
cd /userdata/dev_ws
source /opt/tros/setup.bash
source /userdata/dev_ws/install/local_setup.bash

#ros2 launch originbot_bringup originbot.launch.py
ros2 launch body_tracking hobot_body_tracking_without_gesture.launch.py

2. 错误信息如下(系统启动中):

[  OK  ] Finished Helper to synchronize boot up for ifupdown.
         Starting Raise network interfaces...
[  OK  ] Finished Raise network interfaces.
[  OK  ] Reached target Network.
[  OK  ] Reached target Network is Online.
         Starting auto_run.service...
[  OK  ] Started ISC DHCP IPv4 server.
[   11.537033] auto_run.sh[2938]: -----start auto run --->
[  OK  ] Started ISC DHCP IPv6 server.
         Starting OpenBSD Secure Shell server...
         Starting Permit User Sessions...
         Starting LSB: HPA's tftp server...
[   12.122384] hobot mmap end!:15000000
[   26.104535] auto_run.sh[3259]: [INFO] [launch]: All log files can be found below /root/.ros/log/2023-02-15-10-49-32-034413-ubuntu-3259
[   26.106738] auto_run.sh[3259]: [INFO] [launch]: Default logging verbosity is set to INFO
[   26.847999] auto_run.sh[3259]: launch webserver
[   26.849193] auto_run.sh[3259]: pwd_path is  /userdata/dev_ws
[   26.850383] auto_run.sh[3259]: webserver_path is  /opt/tros/lib/websocket/webservice
[   26.851838] auto_run.sh[3259]: launch webserver cmd is  ./sbin/nginx -p .
[   26.853197] auto_run.sh[3259]: [INFO] [mipi_cam-1]: process started with pid [3276]
[   26.854803] auto_run.sh[3259]: [INFO] [hobot_codec_republish-2]: process started with pid [3278]
[   26.856463] auto_run.sh[3259]: [INFO] [mono2d_body_detection-3]: process started with pid [3280]
[   26.858047] auto_run.sh[3259]: [INFO] [websocket-4]: process started with pid [3282]
[   26.859416] auto_run.sh[3259]: [INFO] [body_tracking-5]: process started with pid [3284]
[   27.357727] auto_run.sh[3259]: [body_tracking-5]
[   27.358876] auto_run.sh[3259]: [body_tracking-5]     This is body tracking package.
[   27.360455] auto_run.sh[3259]: [body_tracking-5]
[   27.361621] auto_run.sh[3259]: [body_tracking-5]     gesture strategy usage
[   27.362995] auto_run.sh[3259]: [body_tracking-5]
[   27.364133] auto_run.sh[3259]: [body_tracking-5] Wake up gesture is "Okay".
[   27.365601] auto_run.sh[3259]: [body_tracking-5] Cancel gesture is "Palm".
[   27.367196] auto_run.sh[3259]: [body_tracking-5] Control will be reset if body is lost.
[   27.368926] auto_run.sh[3259]: [body_tracking-5] ============================================
[   27.370607] auto_run.sh[3259]: [body_tracking-5]
[   27.742475] auto_run.sh[3259]: [mipi_cam-1]
[   27.744522] auto_run.sh[3259]: [mipi_cam-1] >>> [rcutils|error_handling.c:108] rcutils_set_error_state()
[   27.746451] auto_run.sh[3259]: [mipi_cam-1] This error state is being overwritten:
[   27.748178] auto_run.sh[3259]: [mipi_cam-1]
[   27.749672] auto_run.sh[3259]: [mipi_cam-1]   'rcutils_expand_user failed, at /home/kairui/cc_ws_release/tros_ws/src/tros/rcl_logging/rcl_logging_spdlog/src/rcl_logging_spdlog.cpp:248'
[   27.752600] auto_run.sh[3259]: [mipi_cam-1]
[   27.753761] auto_run.sh[3259]: [mipi_cam-1] with this new error message:
[   27.755254] auto_run.sh[3259]: [mipi_cam-1]
[   27.756424] auto_run.sh[3259]: [mipi_cam-1]   'Failed to get logging directory, at /home/kairui/cc_ws_release/tros_ws/src/tros/rcl_logging/rcl_logging_spdlog/src/rcl_logging_spdlog.cpp:93'
[   27.759568] auto_run.sh[3259]: [mipi_cam-1]
[   27.760703] auto_run.sh[3259]: [mipi_cam-1] rcutils_reset_error() should be called after error handling to avoid this.
[   27.762771] auto_run.sh[3259]: [mipi_cam-1] <<<
[   27.764049] auto_run.sh[3259]: [body_tracking-5]
[   27.765431] auto_run.sh[3259]: [body_tracking-5] >>> [rcutils|error_handling.c:108] rcutils_set_error_state()
[   27.767461] auto_run.sh[3259]: [body_tracking-5] This error state is being overwritten:
[   27.769213] auto_run.sh[3259]: [body_tracking-5]
[   27.770414] auto_run.sh[3259]: [body_tracking-5]   'rcutils_expand_user failed, at /home/kairui/cc_ws_release/tros_ws/src/tros/rcl_logging/rcl_logging_spdlog/src/rcl_logging_spdlog.cpp:248'
[   27.773157] auto_run.sh[3259]: [body_tracking-5]
[   27.774472] auto_run.sh[3259]: [body_tracking-5] with this new error message:

3. 查看服务的状态

root@ubuntu:~# systemctl status auto_run.service
● auto_run.service
     Loaded: loaded (/lib/systemd/system/auto_run.service; enabled; vendor preset: enabled)
    Drop-In: /usr/lib/systemd/system/rc-local.service.d
             └─debian.conf
     Active: active (running) since Wed 2023-02-15 10:49:34 CST; 56min ago
    Process: 2938 ExecStart=/etc/init.d/auto_run.sh start (code=exited, status=0/SUCCESS)
   Main PID: 3274 (nginx)
      Tasks: 2 (limit: 3890)
     Memory: 103.0M
     CGroup: /system.slice/auto_run.service
             ├─3274 nginx: master process ./sbin/nginx -p .
             └─3275 nginx: worker process

Feb 15 10:49:33 ubuntu auto_run.sh[3259]: [mono2d_body_detection-3] with this new error message:
Feb 15 10:49:33 ubuntu auto_run.sh[3259]: [mono2d_body_detection-3]
Feb 15 10:49:33 ubuntu auto_run.sh[3259]: [mono2d_body_detection-3]   'Failed to get logging directory, at /home/kairui/cc_ws_release/tros_ws/src/tros/rcl_logging/rcl_logging_spdlog/src/>
Feb 15 10:49:33 ubuntu auto_run.sh[3259]: [mono2d_body_detection-3]
Feb 15 10:49:33 ubuntu auto_run.sh[3259]: [mono2d_body_detection-3] rcutils_reset_error() should be called after error handling to avoid this.
Feb 15 10:49:33 ubuntu auto_run.sh[3259]: [mono2d_body_detection-3] <<<
Feb 15 10:49:33 ubuntu auto_run.sh[3259]: [mono2d_body_detection-3] [ERROR] [1676429373.745275761] [rclcpp]: rcl context unexpectedly not shutdown during cleanup
Feb 15 10:49:33 ubuntu auto_run.sh[3259]: [mono2d_body_detection-3] terminate called after throwing an instance of 'rclcpp::exceptions::RCLError'
Feb 15 10:49:33 ubuntu auto_run.sh[3259]: [mono2d_body_detection-3]   what():  failed to configure logging: Failed to get logging directory, at /home/kairui/cc_ws_release/tros_ws/src/tro>
Feb 15 10:49:34 ubuntu systemd[1]: Started auto_run.service.

已解决,谢谢。

你好,我的开机自启动service也遇到了相同的rcutils报错。-
请问是怎么解决的?-

期盼你的尽快回复!

1. vi /etc/systemd/system/getty.target.wants/serial-getty@ttyS0.service

屏蔽大概34行:

#ExecStart=-/sbin/agetty -o ‘-p – \\u’ --keep-baud 921600,115200,38400,9600 %I $TERM

增加:

ExecStart=-/sbin/agetty -a root 921600 %I $TERM

2. vi .bashrc

bash /userdata/dev_ws/auto_run.sh