转自:https://blog.youkuaiyun.com/sunyoop/article/details/78261461?locationNum=2&fps=1
1.安装package,默认是indigo版本
- sudo apt-get install ros-indigo-robot-upstart
2.相信您已经安装了好多的ros package,我这里没有新建package,采用的是turtlebot_navigation
在turtlebot_navigation/launch目录下创建文件start.launch
- start.launch
- <launch>
- <!-- kobuki -->
- <include file="$(find turtlebot_bringup)/launch/minimal.launch" />
- <include file="$(find turtlebot_navigation)/launch/hokuyo_gmapping_demo.launch" />
- </launch>
3.执行install命令
- rosrun robot_upstart install turtlebot_navigation/launch/start.launch
命令在/etc/ros/indigo/下新建一个文件夹turtlebot.d,将start.launch拷贝到里面,并执行。‘
如果以后想修改start.launch,到/etc/ros/indigo/这个目录下,如果到turtlebot_navigation/launch下修改是没有用的
4.开启/关闭服务
- $sudo service turtlebot start
- [sudo] password for ubuntu:
- turtlebot start/running, process 12335
- $ sudo service turtlebot stop
- turtlebot stop/waiting
从命令可以看出,ros robot_upstart将启动脚本当成一个系统服务,类似samba,udev,network来启动。
还记得我们在适配hokuyo laser时,修改了串口属性,使之生效的命令也是
- sudo service udev restart
注意事项:这里服务的取名应该是turtlebot_navigation的“_”前部分
如果用的package是robot_autoup那么创建的服务名字就是robot,相应的文件夹名字就是robot.d
5.查看日志
- sudo tail -f /var/log/upstart/turtlebot.log
启动时的log和节点运行的log都在这里面
6.robot_upstart install启动命令参数分析
- usage: install [-h] [--job JOB] [--interface ethN] [--user NAME]
- [--setup path/to/setup.bash] [--rosdistro DISTRO]
- [--master http://MASTER:11311] [--logdir path/to/logs]
- [--augment] [--provider [upstart|systemd]] [--symlink]
- pkg/path [pkg/path ...]
- --job 指定job(service)名称,如果没有制定,就使用package中的一部分
- --interface 指定网络接口
- --user 指定用户启动launch脚本
- --setup 指定使用特殊工程下的setup.bash文件。
- --rosdistro 指定ros的发布版本
- --master 指定ROS_MASTER_URI
- --logdir 指定日志文件目录
- --augment=False 不创建job,只是拷贝用户文件。默认job已经创建成功
- pkg/path 安装job launch的package和path名称,保持路径以包名开头(不可使用绝对或workspace最top路径)
- --provider 指定 provider 在无法自动检测正确的 provider 情况下
- --symlink=False 创建软链接,而不是拷贝启动脚本。