小车launch节点开机自启动

小车launch节点开机自启动

搭建好小车的环境,需要考虑如何在每次开机能自动启动某些必要的节点,如各种要用的传感器驱动,底盘驱动等,而不必手动起。这里用到开源的包robot_upstart

1、安装

sudo apt install ros-noetic-robot-upstart 

2、新建robot_bringup包

cd ~/ros_ws/src
catkin_create_pkg robot_bringup std_msgs rospy roscpp
cd robot_bringup
mkdir launch
cd launch
touch myrobot.launch
cd ../../..
catkin_make

由于只需要把所有需要启动的节点放在一起,创建一个功能包后添加launch文件即可。 myrobot.launch如下:

<launch>
  <include file="$(find bluesea2)/launch/LDS-50C-2.launch"/>
</launch>

3、基本命令

#创建节点服务

rosrun robot_upstart install robot_bringup/launch/myrobot.launch --job robot_bringup --master http://192.168.12.1:11311 --logdir ~/autostart_log/robot_bringup.log

其中robot_bringup/launch/myrobot.launch中包含了启动所有自启动的节点的launch文件

参数:
--job 节点服务的名称
--master 节点服务器roscore的IP及端口配置,默认的是127.0.0.1
--logdir 存放日志文件的路径

#启动节点服务
sudo systemctl daemon-reload && sudo systemctl start robot_bringup

#查看节点服务器状态
sudo systemctl status robot_bringup

#停止节点服务
sudo systemctl stop robot_bringup

#重启节点服务
sudo systemctl restart robot_bringup

#卸载节点服务
rosrun robot_upstart uninstall robot_bringup

4、使用过程中遗留:不能单个节点设置一个节点服务,会造成roscore多次启动问题,暂时没找到解决办法。

5、过程中的坑:在不知道这个ros包之前,自己手动设置过rc.local文件,在开机启动时启动startup.sh脚本,但是由于sh脚本中包含图形界面的终端的打开操作,而rc.local在登陆界面前是执行不了这些带图形的脚本操作的,所以这个方法失败。后面有查阅到~/.config/autostart的.desktop文件的设置(也可通过界面来配置)实现执行启动脚本,也有一个问题,那就是必须得界面登陆后才会自动执行,而大部分情况下,我们都是用远程登陆的方式,不会登陆界面,而且这种方式也比较麻烦,所以也放弃了。

posted @ 2022-02-16 11:05  水水滴答  阅读(253)  评论(0编辑  收藏  举报