背景介绍:前一段时间搭了一个基于ROS的移动底盘,到现在有一个问题,就是每次需要调试机器人的时候就要各种ssh,各种roslaunch命令。作为一个极客这种事情怎么能忍呢,所以一定要开机自启动。
我想,做ROS的先贤们一定不会容忍用rc.local这么底层的办法去解决这个问题。果然,robot_upstart包应运而生了。
参考链接:
自己真的是井底之蛙啊,这么久才发现这个问题。要是我首先写个包来解决这个问题多好啊。
哈哈,自省过后,还是感谢ROS社区的大牛们给我们提供了一个又一个方便的工具。
关于这个包以及包里面的工具的用法:
用之前,当然是要先安装这个包了:
sudo apt-get install ros-indigo-robot-upstart
基本用法是使用install脚本,install是robot_upstart包里的一个节点。运行命令如下:
rosrun robot_upstart install myrobot_bringup/launch/base.launch
这里只有一点要说明的就是,myrobot_bringup/launch/base.launch是要开机自启动的launch文件,launch文件里可以添加想要自启动的节点。
这就会在你的机器上创建一个名称为myrobot的job,这个job就是运行base.launch。下次开机重启的时候这个launch文件就自动运行了。我们也可以手动来启动或者停止
sudo service myrobot startsudo service myrobot stop
如果说这个job异常的话,可以查看upstart的log文件:
sudo tail /var/log/upstart/myrobot.log -n 30
当然你如果要卸载这个开机脚本的话,可以使用uninstall,这个也是robot_upstart包里的一个节点
rosrun robot_upstart uninstall myrobot
另外,还有通过Python API来调用的高级用法,我反正暂时用不着,怕是现在研究了也容易忘,先mark一下。
参考链接: