树莓派设置ROS程序开机自启动

参考自Linux 设置开机启动项的几种方法
本人在树莓派baspbain stretch系统上设置ros程序的开机自启,曾使用robot_upstart包,最后选择了在/etc/init.d/文件夹中加入脚本的方法。

修改/bin/sh指向

查看/bin/sh指向哪个shell

ls /bin/sh -al

若指向的是dash,将其修改为bash

sudo dpkg-reconfigure dash

选择no则修改为了bash
也可以选择不修改,那么在脚本里需要将source xxxx.bash,改成./xxxx.sh

加入启动脚本

将要启动的所有launch文件,写进一个launch中
/etc/init.d/文件夹下加入文件turtlebot3_bringup2
我的文件内容为:

#!/bin/bash
### BEGIN INIT INFO
# Provides:          turtlebot3_bringup
# Required-Start:    $network $local_fs $remote_fs
# Required-Stop:     $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: turtlebot3_bringup 
# Description:       turtlebot3_bringup 
### END INIT INFO
source /opt/ros/kinetic/setup.bash
source /home/pi/catkin_ws/devel/setup.bash
roslaunch turtlebot3_bringup turtlebot3_bringup.launch > /home/pi/catkin_ws/turtlebot3_bringup.log 2>&1
exit 0

设置权限:

sudo chmod 755 /etc/init.d/turtlebot3_bringup2

将脚本加入启动列表

cd .etc/init.d
sudo update-rc.d turtlebot3_bringup2 defaults 95

95是脚本启动的顺序号,按照自己的需要相应修改即可。
然后重启,即可。

将脚本从启动列表中剔除的方法:

cd /etc/init.d
sudo update-rc.d -f turtlebot3_bringup2 remove

版权声明:本文为qingtian11112原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。