RDK X5 开机自启动脚本配置,机器人一上电就跑程序

一、核心配置步骤

  1. 编写启动脚本

    先将你的机器人程序整理为可执行脚本,以 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
    
    
  2. 创建 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  # 官网指定启动级别
    
    
  3. 启用并测试服务

    bash

    运行

    # 重新加载系统服务配置
    systemctl daemon-reload
    # 设置开机自启(核心命令)
    systemctl enable robot.service
    # 立即启动服务(测试用)
    systemctl start robot.service
    # 查看服务状态(验证是否正常)
    systemctl status robot.service
    
    

二、关键调试与问题排查

  1. 验证是否生效

    执行systemctl is-enabled robot.service,返回enabled即为配置成功;重启板卡reboot,通电后检查程序是否自动运行。

  2. 常见问题解决

    • 服务启动失败:查看日志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(标准卸载命令)。