系统级服务自启动是 Linux中一种强大、稳定且标准化的机制,用于在系统启动时自动运行后台程序。对于机器人开发者,这是实现“开机自动运行机器人控制程序”的首选方式。
操控功能如下:
1、准备启动脚本或命令
编写一个启动脚本。
#!/bin/bash
# start_robot.sh# 加载环境(非常重要!systemd 不会自动加载 .bashrc)
source /opt/ros/noetic/setup.bash # 或你用的 ROS 版本(如 humble)
source /home/乾之尧/catkin_ws/devel/setup.bash # 或 colcon 的 install/setup.bash# 启动你的机器人系统
exec roslaunch my_robot bringup.launch
2、创建 systemd 服务文件
[Unit]
Description=My Robot Auto-start Service
After=network.target
# 如果你有专门的 roscore 服务,可加:After=roscore.service[Service]
Type=simple
User=乾之尧
Group=乾之尧
WorkingDirectory=/home/乾之尧
Environment=DISPLAY=:0
ExecStart=/home/乾之尧/start_robot.sh
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal[Install]
WantedBy=multi-user.target
3、启用并启动服务
# 重载 systemd 配置
sudo systemctl daemon-reload# 启用开机自启
sudo systemctl enable robot.service# 立即启动服务(测试用)
sudo systemctl start robot.service# 查看状态
sudo systemctl status robot.service# 查看实时日志
journalctl -u robot.service -f

被折叠的 条评论
为什么被折叠?



