设置开机自启动
1. 通过gnome-terminal
实现开机自启动
1.1 创建一个启动脚本
cd ~
touch start_joy.sh
chmod +x start_joy.sh
1.2 编辑脚本文件
vim start_joy.sh
#!/bin/zsh
source /opt/ros/noetic/setup.zsh
source /home/nv/ants/devel/setup.zsh
roslaunch vehicle_rea joy_control.launch
1.3 配置自动启动
- 创建
~/.config/autostart
目录(如果它不存在的话) - 使用
gnome-terminal
打开一个新的终端窗口并执行上述脚本。编辑~/.config/autostart
目录下的.desktop
文件来实现这一点
mkdir -p ~/.config/autostart
创建一个新的 .desktop
文件,例如 start_joy.desktop
vim ~/.config/autostart/start_joy.desktop
[Desktop Entry]
Type=Application
Exec=gnome-terminal -- zsh -c "~/start_joy.sh; exec zsh"
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[en_US]=Start Joy
Name=Start Joy
Comment[en_US]=Run start_joy.sh on startup
Comment=Run start_joy.sh on startup
其中zsh
可以替换为bash
gnome-terminal
可以替换为terminator
2. 通过systemd
实现开机自启动
2.1 创建systemd
服务文件
在/etc/systemd/system/
目录下创建.service
文件来定义服务
sudo vim /etc/systemd/system/roslaunch-test.service
示例
[Unit]
Description=Auto-start ROS launch (test/test.launch)
After=network.target # 确保网络启动后再运行(若依赖网络,如激光雷达IP通信)
Requires=roscore.service # 可选:若需单独启动roscore,需先配置roscore.service
[Service]
User=USERNAME # 替换为你的用户名(如 fc1),避免以root运行ROS
Group=USERNAME
WorkingDirectory=/home/USERNAME # 工作目录(可改为ROS工作空间路径)
Environment="ROS_DISTRO=noetic" # 替换为你的ROS版本(如 melodic/noetic/foxy)
Environment="CATKIN_WS=/home/USERNAME/catkin_ws" # 替换为你的工作空间路径
# 核心命令:加载ROS环境并启动launch文件
ExecStart=/bin/bash -c " \
source /opt/ros/$ROS_DISTRO/setup.bash && \
source $CATKIN_WS/devel/setup.bash && \
roslaunch test test.launch \
"
# 重启策略:若服务崩溃,自动重启(可选)
Restart=on-failure
RestartSec=5 # 崩溃后5秒重启
# 日志输出:默认写入systemd日志(journalctl查看)
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target # 多用户模式下开机启动
2.2 配置与启动服务
修改.service
文件后,需刷新 systemd
守护进程
sudo systemctl daemon-reload
设置开机自启并启动服务
# 启用开机自启
sudo systemctl enable roslaunch-test.service
# 立即启动服务(无需重启测试)
sudo systemctl start roslaunch-test.service
2.3 验证与调试
检查服务状态
sudo systemctl status roslaunch-test.service
停止/禁用服务
# 停止当前服务
sudo systemctl stop roslaunch-test.service
# 禁用开机自启
sudo systemctl disable roslaunch-test.service
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 雯欂の修仙笔记!