这里使用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