Ubuntu开机自启ROS节点或执行命令

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  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

你可能感兴趣的:(Ubuntu)