一、核心配置步骤
-
编写启动脚本
先将你的机器人程序整理为可执行脚本,以 Python 程序为例,新建
/userdata/robot_start.sh文件(官网推荐路径,避免系统盘读写权限问题):bash
运行
#!/bin/bash # 等待系统和硬件加载完成(关键!官网建议延时5秒) sleep 5 # 进入程序目录(替换为你的实际路径) cd /userdata/robot_app # 执行核心程序(替换为你的程序名) python3 main.py给脚本添加执行权限:
bash
运行
chmod +x /userdata/robot_start.sh -
创建 systemd 服务文件
新建系统服务文件
/etc/systemd/system/robot.service,内容严格遵循官网格式:ini
[Unit] Description=RDK X5 Robot Auto Start After=network.target multi-user.target # 官网要求:等待网络和多用户环境加载 Wants=network.target [Service] Type=simple # 官网推荐类型,适配普通脚本 User=root WorkingDirectory=/userdata/robot_app # 程序工作目录 ExecStart=/bin/bash /userdata/robot_start.sh # 启动脚本绝对路径 Restart=on-failure # 程序崩溃时自动重启 RestartSec=3 # 重启间隔3秒 StandardOutput=append:/userdata/robot_start.log # 日志输出(便于调试) StandardError=append:/userdata/robot_start.log [Install] WantedBy=multi-user.target # 官网指定启动级别 -
启用并测试服务
bash
运行
# 重新加载系统服务配置 systemctl daemon-reload # 设置开机自启(核心命令) systemctl enable robot.service # 立即启动服务(测试用) systemctl start robot.service # 查看服务状态(验证是否正常) systemctl status robot.service
二、关键调试与问题排查
-
验证是否生效
执行
systemctl is-enabled robot.service,返回enabled即为配置成功;重启板卡reboot,通电后检查程序是否自动运行。 -
常见问题解决
-
服务启动失败:查看日志
cat /userdata/robot_start.log,排查程序路径、依赖缺失问题; -
硬件(摄像头 / 电机)未加载:在
robot_start.sh中增加sleep 8,延长硬件等待时间; -
权限不足:确保
/userdata目录权限为chmod 777 /userdata,避免脚本无法读写。
-
三、规范补充
-
禁止将脚本放在
/root目录(提示:系统目录易因权限导致启动失败); -
若需开机自启 ROS2 节点,需在脚本中先执行
source /opt/tros/setup.bash(官ROS2 环境配置要求); -
如需停止自启,执行
systemctl disable robot.service(标准卸载命令)。