编写服务运行 bash 脚本
首先需要写一个脚本用来设置程序运行的环境变量并启动程序,这里命名为camera_publish.sh
#!/bin/bash
# ROS environmnet
# 激活环境变量
source /opt/ros/noetic/setup.bash
source /home/robot/catkin_ws/devel/setup.bash
# ROS multiple machines
# 配置多机器下 ROS 参数
export ROS_IP=192.168.1.100 # 按自己的修改
export ROS_HOSTNAME=${ROS_IP}
export ROS_MASTER_URI=http://${ROS_IP}:11311
# ROS LAUNCH
# 这里更改为你要启动的 launch 文件或节点
roslaunch camera_publish stereo_publish.launch
编写服务文件
编写系统所需的服务文件,这里命名为 ros_camera.service
[Unit]
Description=ROS Launch
After=network.target
[Service]
Type=simple
# 下面这个修改为你自己服务运行的 bash 脚本,注意写绝对路径
ExecStart=/home/robot/catkin_ws/src/camera_publish/scripts/camera_publish.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
创建服务并启动
脚本文件增加执行权限:
chmod +x camera_publish.sh
将服务文件拷贝到对应目录下
sudo cp ros_camera.service /etc/systemd/system/
使能并启动对应服务
sudo systemctl enable ros_camera.service
sudo systemctl start ros_camera.service