ubuntu20.04设置开机自启动roscore和ros节点

最近要写实现一个ubuntu 20.04上的ros-noetic的一些功能,然后这些功能需要开机自启动,查阅了很多博客和网上的资料,最终能够实现开机自启动的功能,过去很多功能实现了,就过去了,但是如果下次再碰到这些问题,就又要从新找资料,所以还是养成记录的习惯是比较好的,因此记录下这个过程。
Ubuntu20.04实现开机自启动,可以通过两种方法。第一种是写服务的方法,第二种是使用rc.local文件设置自启动(其本质也是使用rc-local.service服务)。
第一种方法如下:
下面是添加一个服务的步骤,在ubuntu20.04设置服务自启动的最佳推荐的方法是创建一个systemd服务文件,配置好执行的服务,使用Systemd服务管理器来添加和管理服务:
1 创建我们需要开机自启动的脚本,如start.sh,其内容如下,我的脚本功能是启动一个gazebo的节点
在这里插入图片描述
脚本的开头一定要是:!#/bin/bash
结尾要是:exit 0
其中:source /opt/ros/noetic/setup.bash加入系统变量,
source /home/sun/dev/catkin_ws/devel/setup.sh是将自己的工作环境变量加入:
2. 我们写的sh脚本必须是可运行的,进行下面的设置:
sudo chmod +x /home/gzf/gzfProjects/rosproiects/demon07 ws/devel/setup.sh
3.写一个service,在/etc/systemd/system/路径下创建一个服务,服务的名字一定要和脚本的名字一致。内容如下:
在这里插入图片描述
其中,After表示服务何时启动,After=network.service 表示网络连接完成后,启动我们的服务;ExecStart表示我们的脚本(步骤1中的start.sh)的路径;Restart=always,表示服务退出了总是重启;WantedBy默认填default.target。
注意,ExecStart=*.sh 这里一定不能用 ~/ 来代替/home/$USER
4.开启服务
sudo chmod 777 /etc/systemd/system/start.service //修改服务的权限,使其能够被systemd读取
sudo systemctl daemon-reload //然后重新加载daemon
sudo systemctl start start.service //启动新创建的服务

sudo systemctl enable start.service //我们可以通过以下命令将服务设置为开机启动,这样启动后或者系统重启后都可以实现自动启动start.service服务。

可以使用命令:sudo systemctl status start.service 查看当前的服务。
sudo systemctl stop start.service 停止服务
sudo systemctl disable start.service 禁用服务
sudo systemctl restart start.service 重启服务

第二种是使用rc.local,其本质也是使用rc-local.service服务。
1.编写sh脚本
#!/bin/bash
source /opt/ros/noetic/setup.bash
source /home/gzf/gzfProjects/rosprojects/demon07_ws/devel/setup.sh
roslaunch urdf_gazebo01 demon02_car.launch
exit 0

2.在/etc/路径下创建rc.local,
3.在rc.local下输入以下的内容:
cd /home/gzf
/bin/su -gzf -c “/home/gzf/start.sh &”
#查看rc-local服务状态,启动服务查看启动状态,如果这里启动失败了需要回头更改rc.local文件看看是不是有语法错误或者执行的脚本有没有问题
sudo systemctl status rc-local(使用 sudo systemctl status rc-local.service 查看 rc-local 服务的状态, 显示 loaded 和 enabled。)
输入以下命令,加载服务、停止rc-local.setvice,在其启用rc-local.service,重新加载rc-local.service即可。
sudo systemctl daemon reload
sudo systemctl disable rc-local.service
sudo systemctl enable rc-local.service
sudo systemctl restart rc-local.service
4. 重启电脑
输入以下指令查看有没有roscore的线程
sudo netstat -tunpl | grep 11311*

输入以下指令查看 gazebo的线程
ps -ef | grep gazebo *

参考文献:
Linux系统+ROS设置launch文件开机自启动
Ubuntu 20.04设置开机自启动

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Ubuntu20.04是Linux操作系统的一个版本,ROS(机器人操作系统)是一套用于构建机器人软件的开源工具集,而Turtlebot是一个ROS的机器人平台。 在Ubuntu20.04上安装ROS可以充分利用ROS的强大功能,它提供了一种方便的方式来控制、监视和编程机器人。通过ROS的发布/订阅机制,我们可以轻松地实现机器人的自主导航、感知和操作。 Turtlebot是ROS中广泛使用的一个机器人平台,它基于低成本和易获取的硬件,如移动底盘、激光传感器和RGBD相机。Turtlebot配备了多种传感器和执行器,可以实现自主导航、地图构建、障碍物避 ### 回答2: Ubuntu 20.04是一种基于Linux的操作系统,特色是稳定、安全和易用。ROS(Robot Operating System)是一种用于机器人开发的开源框架,提供了一些常用的功能和工具。Turtlebot是基于ROS的一个模块化机器人平台。 Ubuntu 20.04中安装ROS是相对简单的,首先需要更新和升级系统,然后按照ROS官方文档的指引安装ROS。安装完成后,可以使用ROS中提供的各种功能包和工具来开发机器人应用程序。 Turtlebot是一个基于ROS的机器人平台,包含了机器人硬件和软件。它具有移动底盘、传感器和计算机等组件,可以通过ROS进行控制和编程。Turtlebot提供了一些常用的功能,如激光扫描、导航、地图构建等,可以让开发者更加方便地进行机器人开发和实验。 使用Ubuntu 20.04ROS Turtlebot,开发者可以利用ROS的强大功能和Turtlebot的模块化设计,快速搭建一个机器人系统,并进行各种实验和应用开发。通过ROS节点通信机制,不同的模块可以方便地进行数据交流和协作。开发者可以使用ROS提供的各种库、工具和算法,实现机器人的导航、感知、规划等功能。 总之,Ubuntu 20.04提供稳定的操作系统支持,ROS提供了丰富的机器人开发功能和工具,而Turtlebot则提供了一个方便快捷的机器人开发平台。通过它们的组合,开发者可以更加高效地进行机器人应用开发和实验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值