ROS2开机程序自启动

2023-05-16

运行环境

  • 系统:Ubuntu20
  • ROS:foxy

添加服务脚本

$ sudo vi /etc/systemd/system/rc-local.service

内容如下:

[Unit]
Description=/etc/rc.local Compatibility 
ConditionPathExists=/etc/rc.local 

[Service]
Type=forking 
ExecStart=/etc/rc.local start 
TimeoutSec=0 
StandardOutput=tty 
RemainAfterExit=yes 
SysVStartPriority=99 

[Install]
WantedBy=multi-user.target

编写启动脚本

注意:需要使用&符号,使用后台运行,避免阻塞

$ sudo vi /etc/rc.local

内容如下:

#!/bin/sh -e 
## rc.local

bash /opt/vehicle/rosrun.sh &

注意:
编写完成后不要忘记赋予权限

$ sudo chmod 777 /etc/rc.local

编写业务脚本

$ cd /opt/vehicle
$ sudo vi rosrun.sh

内容如下:

#! /bin/sh

# 我们需要在业务脚本中先指定ROS的日志文件夹,并赋予权限,不然会运行ros程序失败
export ROS_LOG_DIR=/opt/vehicle/logs
# 激活ros的环境
. /opt/ros/foxy/setup.sh
# 激活我们自己编写的ros程序的环境
. /opt/vehicle/package/setup.sh

# 检查我们的程序是否启动
PIDS=`ps -ef | grep "ros2 run ros_cli ros_node" | grep -v grep | awk '{print $2}'`
if [ "$PIDS" != "" ]; then
        echo "ros_cli is running!!!!!!!"
else
		# 如果程序没有启动,需要先把程序启动
        ros2 run ros_cli ros_cli_node > /opt/vehicle/test.log
fi

注意:
编写完成后不要忘记赋予权限

$ sudo chmod 777 rosrun.sh

激活服务

$ systemctl enable rc-local.service

启动服务

$ systemctl start rc-local.service

重启系统

$ sudo reboot

检查服务是否运行

$ systemctl status rc-local

结果如下:

● rc-local.service - /etc/rc.local Compatibility
     Loaded: loaded (/etc/systemd/system/rc-local.service; enabled; vendor preset: enabled)
    Drop-In: /usr/lib/systemd/system/rc-local.service.d
             └─debian.conf
     Active: active (running) since Tue 2021-07-20 09:09:44 CST; 32min ago
    Process: 570244 ExecStart=/etc/rc.local start (code=exited, status=0/SUCCESS)
   Main PID: 570245 (bash)
      Tasks: 14 (limit: 9440)
     Memory: 21.8M
     CGroup: /system.slice/rc-local.service
             ├─570245 bash /opt/vehicle/rosrun.sh
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROS2开机程序自启动 的相关文章

  • 卸载Docker

    一 准备工作 xff1a 1 杀死docker有关的容器 xff1a docker kill docker ps a q 2 删除所有docker容器 xff1a docker rm docker ps a q 3 删除所有docker镜像
  • IDEA2020启动Tomcat控制台中文乱码解决

    IDEA2020启动Tomcat控制台中文乱码解决 1 中文乱码原因 基本上大家安装的windows系统本地语言都是选择中文 xff08 不会有人选择英文吧 xff1f 不会吧 xff1f 不会吧 xff1f xff09 xff0c 也就是
  • MyEclipse配置Tomcat 7

    1 打开步骤 xff1a 窗口 gt 首选项 gt MyEclipse gt Servers gt Tomcat gt Tomcat 7 x 2 配置自己本地的Tomcat 7版本 3 关闭MyEclipse自带的Tomcat服务器 4 启
  • mysql之模糊查询的方法

    Mysql模糊查询正常情况下在数据量小的时候 xff0c 速度还是可以的 xff0c 但是不容易看出查询的效率 xff0c 在数据量达到百万级 xff0c 千万级的甚至亿级时mysql查询的效率是很关键的 xff0c 也是很重要的 一 一般
  • Spring Cloud限流详解

    Spring Cloud限流详解 Spring Cloud Spring Cloud 2017 12 01 在高并发的应用中 xff0c 限流往往是一个绕不开的话题 本文详细探讨在Spring Cloud中如何实现限流 在Zuul上实现限流
  • springboot启动注解

    为什么springboot不需要配置文件就可以启动成功 springboot入口SpringBootApplication是一个启动类 xff0c 主要的注解是以下的三个 xff1a 1 SpringBootConfiguration是一个
  • 如何释放linux的内存

    你们知道怎么释放linux的内存吗不知道的话跟着学习啦小编一起来学习怎么释放linux的内存 释放linux的内存的步骤 Linux下操作频繁时 xff0c 物理内存会被快速用完 xff0c 当操作结束后 xff0c 物理内存没有被正常的释
  • 跨域的五种解决方案详解

    1 跨域解决方案一 cors技术 CORS 全称cross origin resource share xff08 资源共享 xff09 工作原理 xff1a 服务器 在返回响应报文的时候 xff0c 在响应头中 设置一个允许的header
  • MySQL 日期时间类型精确到毫秒

    MySQL 常用的日期时间类型常用的是datetime timestamp 其中datetime占用5个字节 xff08 有些文档中说占用8个字节是不对的 xff0c 默认也不会保存毫秒 xff09 DATETIME和TIMESTAMP两种
  • Spring Boot——Thymeleaf

    哈喽 xff01 大家好 xff0c 我是 xff0c 一位上进心十足的 Java领域博主 xff01 的写作风格 xff1a 喜欢用 通俗易懂 的文笔去讲解每一个知识点 xff0c 而不喜欢用 高大上 的官方陈述 博客的领域是 面向后端技
  • [BZOJ3185][Coci2011][DP]kamion

    考虑转化一下问题 令 f i j k 表示从i到j恰好用了k步 xff0c 并且到j的时候火车厢为空的方案数 那么转移就是 f i j k 61 f a b k 1 f c j k 2 xff0c 转移成立当且仅当存在i gt a的边 xf
  • 查看docker 容器的端口

    查看docker 容器的端口 sudo netstat tulpn grep docker 查看指定端口 xff0c 可以结合grep命令 xff1a netstat ap grep 80 查找指定端口使用的pid fuser 80 tcp
  • Docker服务的停止命令(systemctl stop docker)

    停止Docker服务 停止docker服务 systemctl stop docker 非root用户使用 停止docker服务 sudo systemctl stop docker
  • Docker查找镜像版本的命令

    Docker查找镜像版本的命令 有时候想查一下镜像有哪些版本 xff0c 因为有墙 xff0c 官网一直在转圈进不去 xff0c 这时候就可以使用命令查询了 xff0c 以centos为例 xff0c 自己想要哪个更改一下命令就可以了 do
  • ES6 如何将 Set 转化为数组

    例如 xff1a const mySet 61 new Set Set 对象具有以下特征 xff1a Set 实例的成员唯一 xff0c 不会重复 Set 实例可以存储任何类型的值 xff0c 包括基本类型和对象 Set 实例是可迭代的 x
  • Request.url用法

    網址 xff1a http localhost 1897 News Press Content aspx 123 id 61 1 toc Request ApplicationPath Request PhysicalPath D Proj
  • oracle IO 优化

    数据库的作用就是实现对数据的管理和查询 任何一个数据库系统 xff0c 必然存在对数据的大量读或者写或者两中操作都大量存在 IO问题也往往是导致数据库性能问题的重要原因 在这篇文章中 xff0c 主要帮助大家在理解Oracle的读写操作机制
  • oracle中imp命令详解

    oracle中imp命令详解 Oracle的导入实用程序 Import utility 允许从数据库提取数据 xff0c 并且将数据写入操作系统文 件 imp使用的基本格式 xff1a imp username password 64 se
  • C# 非顶端窗口截图

    panel上可以通过DrawToBitmap截图 xff0c 不管是否在屏幕外是否有遮挡 Bitmap sourceBitmap 61 new Bitmap 400 300 Control ct 61 frmMain mianForm pa
  • bat中的特殊字符,以及需要在bat中当做字符如何处理

    bat中的特殊字符 xff0c 以及需要在bat中当做字符如何处理 批处理 Bat 中特殊符号的实际作用 xff0c Windows 批处理中特殊符号的作用 xff1a 64 隐藏命令的回显 在for中表示使用增强的变量扩展 xff1b 在

随机推荐

  • rviz无法显示的问题

    1 启用初始化配置 首先删除保存好的rviz xff0c 运行最初始化的配置 rviz运行后会选择保存在 home cbc rviz default rviz 删除之后 xff0c 重新运行 xff1a roscore rosrun rvi
  • 用C语言编写一个HTTP协议的目录浏览和文件下载服务器

    include lt stdarg h gt include lt errno h gt include lt stdio h gt include lt fcntl h gt include lt unistd h gt include
  • 编写浏览器使用的OCX全过程

    随着互联网的飞速发展 现在的人们都习惯了打开浏览器进行工作 基于WEB的程序蜂拥而至 几乎变得无所不能 由于WEB脚本语言的限制 xff0c 对于本地计算机的访问受到很大的限制 开发WEB的程序员都会因为WEB的打印而烦恼 xff0c 对于
  • Linux平台下启动oracle 11g EM控制台

    当我们的oracle服务器是使用的Linux Unix系统时 我们从windows或者其他的客户端想用启动oracle的EM工具了解一些系统系统信息时 可以采用如下方式 首先在服务器端打开一个窗口 输入如下命令 emctl start or
  • Oracle日常性能查看

    判断回滚段竞争的SQL语句 xff1a xff08 当Ratio大于2时存在回滚段竞争 xff0c 需要增加更多的回滚段 xff09 select rn name rs GETS rs WAITS rs WAITS rs GETS 100
  • Double.ToString 方法 (String)

    double numbers 61 1054 32179 195489100 8377 1 0437E21 1 0573e 05 string specifiers 61 34 C 34 34 E 34 34 e 34 34 F 34 34
  • stm32驱动微雪墨水屏1.54inch e-Paper V2

    我一起驱动墨水屏 一 墨水屏相关基础 xff08 摘自微雪官方 xff09 二 干起来PART2 配置I OPART2 底层硬件接口必要的调用函数PART3 功能函数PART4 应用函数 三 应用注意 代码下载 xff1a https do
  • 2020-11-13

    三角翼无人机制作指南设计 一 接线 飞控 xff1a pixhawk 915MHz电台 xff0c 空速计 xff0c GPS xff1b 动力 xff1a Tmotor电机 电调 F150KV700 舵机 xff1a S43A标准mini
  • docker案例redis (pull、dockerfile两种方式)

    方式一 xff08 pull xff09 01 查询redis并拉取 docker search redis 查询 docker pull redis latest 拉取 docker images 02直接使用拉取的redis建立容器 d
  • 进程、内存和文件

    进程是操作系统里面的核心概念 它指的是一个运动中的程序 从名字上看 xff0c 进程表示的就是进展中的程序 一个程序一旦在计算机里运行起来 xff0c 它就称为一个进程 操作系统对进程的管理通过进程表来实现 进程表里存放的是关于进程的一切信
  • 蓝牙、红外线与wifi 区别以及不同频段无线电磁波的穿墙和绕过障碍物能力

    蓝牙 红外线与wifi 区别以及不同频段无线电磁波的穿墙和绕过障碍物能力 SurgePing 2015 04 22 16 52 30 35199 收藏 7 分类专栏 xff1a IOT 文章标签 xff1a 蓝牙 红外线 wifi 频段 无
  • js动态生成级联下拉列表

    html view plain copy print lt DOCTYPE HTML PUBLIC 34 W3C DTD HTML 4 0 Transitional EN 34 gt lt HTML gt lt HEAD gt lt TIT
  • 无人机学习之路——材料准备

    所需材料 xff08 大件 xff09 1 空心杯电机 4个 xff08 笔者用8520型号 xff0c 一般716以上比较常用 xff09 这个电机是直流有刷电机 xff0c 所以不需要电调 2 螺旋桨 正反各2个 xff08 一般旋转直
  • linux 应用编程(持续更新)

    在嵌入式 Linux 系统中 xff0c 我们编写的应用程序通常需要与硬件设备进行交互 Tips xff1a 本篇将以正点原子 ALPHA Mini I MX6U 开发板开发板出厂系统进行测试 进程间通信 管道FIFO信号消息队列信号量共享
  • FreeRTOS中汇编指令

    汇编程序前要加PRESERVE8 require8和preserve8c和汇编有8位对齐的要求 xff0c 这两个伪指令能够满意此要求 LDR和MOV LDR Rn label1 LDR指令负责将label1所代表的存储器中数据搬移到内部寄
  • PX4学习1(相关参考网址)

    官方开发指南 xff1a PX4用户指南 xff1a https docs px4 io master zh PX4开发指南 xff1a https dev px4 io master zh index html 北航可靠飞行控制组 xff
  • 2020硕博无人机文献调研(1)

    1 旋翼无人机自主降落技术研究 xff0c 山东大学 xff0c 岳文斌 创新点 xff1a 利用视觉Apriltag算法进行二维码识别 关于AprilTag详见 https blog csdn net han784851198 artic
  • PX4姿态控制基础

    无人机姿态控制代码实现的四个步骤 订阅数据 xff08 飞机现姿态 xff0c 飞机期望姿态 xff09 PID 外环计算 xff08 作用于姿态误差 xff0c 角速度 xff09 作用 xff1a 产生期望角速度 xff0c 并发布出去
  • PX4位置控制基础

    接受数据 xff08 获取位置信息 期望位置 xff09 外环控制PID xff08 位置环 xff09 xff1a 通过调节速度减小位置差 xff0c 位置差需要通过速度去弥补 判定模式不同 xff0c 位置差的来源 xff08 三种控制
  • ROS2开机程序自启动

    运行环境 系统 xff1a Ubuntu20ROS xff1a foxy 添加服务脚本 sudo vi etc systemd system rc local service 内容如下 xff1a Unit Description 61 e