开机自动启动ros节点--robot_upstart

来源:互联网 发布:clowwindy 知乎妹子 编辑:程序博客网 时间:2024/05/16 17:34

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 stopturtlebot 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 创建软链接,而不是拷贝启动脚本。