此方法目前已知只适用于Ubuntu mate 18.04,Ubuntu 18.04无法使用该方法。
Ubuntu mate弃用了rc.local,经过尝试使用cron和gnome工具也自启动失败了。在查阅系统日志时无意中发现了该方法。该方法不适用于Ubuntu,因为ubuntu的.config目录下没有autostart目录。
一、写bash脚本
比如,我们现在需要让树莓派开机自动执行指令roslaunch ros_package_name launch_name.launch
我们需要写一个bash脚本来执行该指令。假设该脚本名称为start.sh,那么其内容为:
#! /bin/bash
source /home/user/catkin_ws/devel/setup.bash
roslaunch ros_package_name launch_name.launch
exit 0
给该文件执行权限。
sudo chmod +x start.sh
假设这个脚本文件被我们放在了/path/to/start.sh绝对路径下。
二、设置开机自启动
假设开机默认进入用户为user,进入以下目录:/home/user/.config/autostart/,也就是用户主目录下的.config/autostart/目录下。
在里面创建一个后缀名为.desktop的文件,假设为start.desktop,将以下内容写进文件
[Desktop Entry]
Type=Application
Name=My Bash Script
Exec=/bin/bash /path/to/start.sh
Terminal=false
[Desktop Entry]表示是载入桌面时自启动
Type=Application表示这是一个应用
Name=My Bash Script表示该条目的名称,也就是在系统日志上显示的名称
Exec=/bin/bash /path/to/start.sh表示用bash解释器执行start.sh脚本
Terminal=false表示不显示终端,这个我尝试设置过true,但是不能执行
现在重新启动树莓派,等待一段时间后就会执行launch文件,这个是不显示终端的,可以通过rosnode list指令查看当前ros节点