ROS小车记录系列(九)ROS系统开机自启动--撒花终结篇
拖延症发作,留个尾巴一直没记录,作为一个完整的系统,开机自启动作用就不说了。
操作系统:ubuntu18.04 树莓派server版,ros:melodic,尝试了robot_upstart包 ,不知道什么原因,反正没起作用,后来参考的这篇,使用service方式解决,步骤忘记留图,截图也是来自这里。按照惯例,直接上操作步骤。
1、建立service
建立功能包,建立放脚本的scripts文件夹,在其中创建ros_startup.service、ros_start、ros_stop、ros_restart:
~/catkin_ws/src$ catkin_create_pkg auto_startup
~/catkin_ws/src$ cd auto_startup
~/catkin_ws/src/auto_startup$ mkdir scripts
~/catkin_ws/src/auto_startup$ cd scripts
~/catkin_ws/src/auto_startup/scripts$ touch ros_startup.service ros_start ros_stop ros_restart
~/catkin_ws/src/auto_startup/scripts$ chmod +x ros_start ros_stop ros_restart
(1)编辑ros_startup.service,内容如下,解释见参考文章。
[Unit]
Description=powerOn startup ros
[Service]
Type=simple
Restart=always
RestartSec=30
ExecStart=/usr/sbin/ros_start
ExecStop=/usr/sbin/ros_stop
ExecRestart=/usr/sbin/ros_restart
[Install]
WantedBy=multi-user.target
(2)编辑ros_start脚本:
#!/bin/bash
source /opt/ros/melodic/setup.bash
source /home/ubuntu/catkin_ws/devel/setup.bash
roslaunch pavo_ros pavo_scan.launch
其中,source路径根据自己setup.bash路径来,pavo_ros是要启动的功能包名称,pavo_scan.launch换自己的launch文件。
(3)编辑ros_stop脚本:
#!/bin/bash
source /opt/ros/melodic/setup.bash
source /home/ubuntu/catkin_ws/devel/setup.bash
for i in $(rosnode list);do
rosnode kill $i;
done
killall roslaunch
不解释了,自己理解。
(4)编辑ros_restart脚本:
#!/bin/bash
/usr/sbin/ros_stop
sleep 3
/usr/sbin/ros_start
exit 0
2、配置service,重启测试下
还在scripts目录下,新建config_service.sh:
~/catkin_ws/src/auto_startup/scripts$ touch config_service.sh
~/catkin_ws/src/auto_startup/scripts$ chmod +x config_service.sh
编辑config_service.sh内容:
#!/bin/bash
sudo cp ros_start /usr/sbin/
sudo cp ros_stop /usr/sbin/
sudo cp ros_restart /usr/sbin/
sudo cp ros_startup.service /lib/systemd/system/
sudo systemctl enable ros_startup.service
查看下:
执行脚本:
~/catkin_ws/src/auto_startup/scripts$ ./config_service.sh
查看是否已经启用:
~/catkin_ws/src/auto_startup/scripts$ systemctl is-enabled ros_startup.service
出现enabled,表示已经成功启用,重新开机,开个终端,rostopic list可以看见话题了。
3、service相关操作
停止服务: sudo systemctl stop ros_startup.service
手动启动服务:sudo systemctl start ros_startup.service
重启服务:sudo systemctl restart ros_startup.service
禁止服务:sudo systemctl disable ros_startup.service
运行开机自启动:sudo systemctl enable ros_startup.service
查看后台日志:sudo journalctl --unit ros_startup.service
删除服务:
建立脚本uninstall_ros_service.sh,
~/catkin_ws/src/auto_startup/scripts$ touch uninstall_ros_service.sh
内容:
#!/bin/bash
/usr/sbin/ros_stop
sudo systemctl disable ros_startup.service
sudo rm /usr/sbin/ros_start
sudo rm /usr/sbin/ros_stop
sudo rm /usr/sbin/ros_restart
sudo rm /lib/systemd/system/ros_startup.service
exit 0
给权限,执行:
#!/bin/bash
~/catkin_ws/src/auto_startup/scripts$ chmod +x uninstall_ros_service.sh
~/catkin_ws/src/auto_startup/scripts$ ./uninstall_ros_service.sh
4、撒花
这个系列,记录自己从开头到放弃步骤,主要是框架搭建,重定位等等高端功能,不打算写博客了。产品已经上市,各位不要再私信源码,核心代码自己修改了些,恕不附送,自己摸索都能做出来的。