kernel开启启动log_ROS节点开机自启动(robot_upstart方法)

这里使用robot_upstart功能包来设置开机自启动,值得注意的是kinetic与melodic版本的robot_upstart功能包会稍有区别。

1.安装robot_upstart

(1)如果是melodic版本ROS系统,直接用apt install的方法安装就行了,亲测可用。

sudo apt install ros-melodic-robot-upstart

(2)如果是kinetic版本ROS系统,直接用apt install的方法安装会报错缺一些依赖。所以还需要用源码方式安装,并手动安装依赖。

cd ~/catkin_ws/src
git clone https://github.com/clearpathrobotics/robot_upstart.git 
cd ..
#如果编译无响应,请将~/catkin_ws/build中的文件全部删除后重试
catkin_make
#用rosdep安装robot_upstart所需依赖项
rosdep install robot_upstart

2.添加自启动任务

(1)由于robot_upstart是ROS节点,启动前需要先开启roscore。

roscore

(2)然后可以用robot_upstart的帮助命令查看其用法。

rosrun robot_upstart install -h

(3)将需要启动的所有ROS节点集中写到一个launch文件,我这里写到了miiboo_bringup/launch/myrobot.launch这个文件,文件内容如下。

<launch>
  <!-- launch sensor -->
  <include file="$(find miiboo_bringup)/launch/miiboo_all_sensor.launch"/>
 
  <!-- launch nav -->
  <include file="$(find miiboo_nav)/launch/miiboo_nav.launch" />
 
  <!-- launch manage -->
  <include file="$(find nav_manage)/launch/nav_manage.launch"/>
</launch>

(4)装载该launch文件

rosrun robot_upstart install miiboo_bringup/launch/myrobot.launch --job myrobot --interface wlan0 --logdir ~/myrobot.log

其中,

--job指定任务的别名

--interface指定网络接口,一定要设置,不然无法实现多机ROS通信

--logdir指定日志存放目录

3.启动、重启、停止任务

(1)启动任务

sudo systemctl daemon-reload && sudo systemctl start myrobot

(2)重启任务

sudo systemctl restart myrobot

(3)停止任务

sudo systemctl stop myrobot

4.卸载自启动任务

(1)由于robot_upstart是ROS节点,启动前需要先开启roscore。

roscore

(2)卸载

rosrun robot_upstart uninstall myrobot

(3)删除日志

sudo rm -rf ~/myrobot.log

7a9d89ff5f41e084826b8432b1021ccd.png