版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011736771/article/details/78744402
Ubuntu开机自启ROS节点或执行命令
自己搭的机器人想让它每次开机自动启动相关节点? 介绍两种方法.
1. 让Ubuntu开机自动登入tty终端
先确保安装了mingetty:
sudo apt-get install mingetty
然后打开ttyn配置文件,n为数字1-6,分别代表tty1-tty6终端,以自动登录tty1为例:
sudo vim /etc/init/tty1.conf
# tty1 - getty
#
# This service maintains a getty on tty1 from the point the system is
# started until it is shut down again.
start on stopped rc RUNLEVEL=[2345] and (
not-container or
container CONTAINER=lxc or
container CONTAINER=lxc-libvirt)
stop on runlevel [!2345]
respawn
exec /sbin/getty -8 38400 tty1
将最后一行注释,并新增一行为:
exec /sbin/mingetty --autologin <user_name> tty1
其中 user_name 为当前用户名或者root,表示以当前用户或以root用户登录.如果是当前用用户登录,则还需设置当前用户sudo免输密码.
在/etc/sudoers文件末尾加入 ursername ALL=NOPASSWD:ALL 即可实现当前用户执行 sudo 不输入密码:
sudo vim /etc/sudoers
#在文档末尾加入 ursername ALL=NOPASSWD:ALL
2. 让终端加载自定义的设置
在 ~/.bashrc 文件中添加以下代码即可实现开机自动执行命令行命令:
Terminal=`tty`
case $Terminal in
"/dev/tty1") sudo mentohust;; #在tty1运行锐捷
"/dev/tty2") roscore;; #在tty2运行roscre
"/dev/tty3") sleep 20;sixad -s;;#在tty3运行ps3手柄配对节点
esac
这段代码最好放在最后,当 source … 语句或 export ROS_MASTER_URI=… 语句在其后面时,roscore可能会执行失败.
要自启ros的节点,只要把其中的指令换成执行ros节点的指令即可.
3. 其他方法
还有的方法可以用脚本的形式实现,具体可参考Ubuntu下添加开机启动脚本
参考资料
[1] http://blog.csdn.net/shijinqiao/article/details/70831544
[2] http://blog.csdn.net/hcx25909/article/details/9068497