小车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文件的设置(也可通过界面来配置)实现执行启动脚本,也有一个问题,那就是必须得界面登陆后才会自动执行,而大部分情况下,我们都是用远程登陆的方式,不会登陆界面,而且这种方式也比较麻烦,所以也放弃了。
作者:水水滴答
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现