ROS功能包开机自启动(2步解决)

news2025/1/6 16:58:41

为了实现小车在开机后能自动启动相关功能模块需要解决两个问题

1.准备启动脚本文件加载对应的rosnode和roslaunch,整合相关节点按需要顺序进行,防止报错

2.设置开启启动脚本相关内容

既然是自启动,不能避免USB数据传输的一些问题:(后续如果出现可看这篇博客解决方法)

ubuntu工控机固定设备usb串口号(详细)_ubuntu固定串口号-CSDN博客

1.1 修改bashrc文件

1.##打开bashrc文本
sudo gedit ~/.bashrc

2.在文件末尾加入需要sourece的工作空间
source ~/xxx/devel/setup.bash

3.保存bashrc设置,若不操作则无效
source ~/.bashrc

1.2 调用rosnode和roslaunch文件,注意先后顺序

1.2.1 方式1采用launch运行(参考我的如下:)

按格式进行修改
<include file="$(find “你功能包名”)/“这里填写功能包下的位置”/“你的文件名”.launch" />

 其中(launch-prefix="gnome-terminal --")这一串代码是将对应的功能模块单独用终端显示

注意如果你脚本是python记得加上.py,C++编译的节点不影响

<launch>


    <include file="$(find tayo01_model)/launch/tayo01_model.launch" />
     <!-- 等待第一个launch文件的节点发布某个话题 -->
    
    <include file="$(find nav_demo)/launch/demo1_navigation.launch" />

    <!-- 显示雷达避障状态 -->
    <node pkg="tayo01_model" type="scan_test.py" name="scan_test" output="screen" 
        launch-prefix="gnome-terminal --" />
    <!-- 显示键盘控制 -->
    <node pkg="tayo01_model" type="key_topic.py" name="key_topic" output="screen" 
        launch-prefix="gnome-terminal --" />

    <!-- 加载路网 -->
    <node pkg="waypoint_saver" name="marker_publisher_node" type="marker_publisher_node" />



</launch>

然后直接运行该launch文件 

1.2.1 方式2(没特殊要求直接采用方式1),采用python或者其他脚本运行(这里有点问题,只运行了第一个launch就是后续多个launch文件没有延时运行,代码有点问题),提前地方不变替换主函数中的对应的 launch_process(["roslaunch", "tayo01_model", "start_nav.launch"])即可,(文件类型,功能包名,文件名)

#!/usr/bin/env python
import subprocess
import time

def launch_process(command, wait=True):
    """启动一个子进程"""
    try:
        print(f"启动: {' '.join(command)}")
        process = subprocess.Popen(command)
        if wait:
            process.wait()
            if process.returncode != 0:
                print(f"命令失败: {' '.join(command)},退出码: {process.returncode}")
                exit(process.returncode)
        return process
    except Exception as e:
        print(f"启动失败: {' '.join(command)}\n错误: {e}")
        exit(1)

if __name__ == "__main__":
    try:
        # 启动第一个 launch 文件,不等待
        launch_process(["roslaunch", "tayo01_model", "start_nav.launch"])
        print("启动第一个节点")
        # 等待 5 秒(如需要)
        # time.sleep(5)

        # 启动第二个节点
        #launch_process(["roslaunch", "nav_demo", "demo1_navigation.launch"])

        # 等待 3 秒(如需要)
        #time.sleep(3)

        # 启动第三个 launch 文件
        #launch_process(["roslaunch", "package3", "third.launch"])

        print("所有任务已完成!")
    except Exception as main_error:
        print(f"脚本运行出错: {main_error}")
        exit(1)

1.3.按顺序启动节点

由于部分节点运行依赖于其他节点,所以要注意启动的顺序按自己需要进行,可以一次加入一部分分步进行测试

2. 设置开机自启动

2.1 编写run.sh自启动文件

将代码中source和launch修改为自己的,将工作和系统空间的变量source加入

#!/bin/bash
source /opt/ros/noetic/setup.bash 
source ~/learn_ws/devel/setup.bash 
roslaunch nav_pkg nav.launch

sleep 5
exit 0

2.2 给test.sh设置权限

#这一步必须进行(对应自己的test.sh位置)
sudo chmod +x  /home/ply1/learn_ws/run.sh

2.3 添加到系统进程

gnome-session-properties

 名称随便命名,命令为该test.sh的位置,注释方便自己了解就行,修改后关闭设置

 

2.4 测试

到此完成了整个ros节点的自启动,可以重启系统测试是否可行(前面代码中加了sleep 5 会等待几秒)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2270961.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【ArcGISPro/GeoScenePro】解决常见的空间参考和投影问题

修复空间参考缺失的图像 数据 https://arcgis.com/sharing/rest/content/items/535efce0e3a04c8790ed7cc7ea96d02d/data 查看属性坐标 查看属性范围 范围值并不是零或接近于零。 这意味着栅格具有范围,因此其已正确进行

NLP 中文拼写检测纠正论文-08-Combining ResNet and Transformer

拼写纠正系列 NLP 中文拼写检测实现思路 NLP 中文拼写检测纠正算法整理 NLP 英文拼写算法&#xff0c;如果提升 100W 倍的性能&#xff1f; NLP 中文拼写检测纠正 Paper java 实现中英文拼写检查和错误纠正&#xff1f;可我只会写 CRUD 啊&#xff01; 一个提升英文单词拼…

【paddle】初次尝试

张量 张量是 paddlepaddle&#xff0c; torch&#xff0c; tensorflow 等 python 主流机器学习包中唯一通货变量&#xff0c;因此应当了解其基本的功能。 张量 paddle.Tensor 与 numpy.array 的转化 import paddle as paddle import matplotlib.pyplot as plt apaddle.to_t…

如何在谷歌浏览器中使用屏幕录制功能

在日常使用电脑的过程中&#xff0c;我们经常会遇到需要记录屏幕操作的情况。无论是制作教学视频、保存游戏过程还是记录会议内容&#xff0c;谷歌浏览器的屏幕录制功能都能帮助我们轻松实现这些需求。那么&#xff0c;如何在谷歌浏览器中启用并使用屏幕录制功能呢&#xff1f;…

万里数据库GreatSQL监控解析

GreatSQL是MySQL的一个分支&#xff0c;专注于提升MGR&#xff08;MySQL Group Replication&#xff09;的可靠性及性能。乐维监控平台可以有效地监控GreatSQL&#xff0c;帮助用户及时发现并解决潜在的性能问题。 通过在GreatSQL服务器上安装监控代理&#xff0c;收集数据库性…

APM 3.0.2 | 聚合B站、油管和MF的音乐播放器,支持歌词匹配

APM&#xff08;Azusa-Player-Mobile&#xff09;是一款基于B站的第三方音频播放器&#xff0c;现已扩展支持YouTube Music、YouTube、本地音乐、AList和MusicFree等平台。它不仅提供视频作为音频播放&#xff0c;还具备排行榜、分区动态等功能。用户可以通过添加Alist地址接入…

HTML——61. 单行文本框和密码输入框(主讲input元素的type属性)

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>单行文本框和密码输入框</title></head><body><!--input元素的type属性&#xff1a;(必须要有)--> <!--单行文本框:1.type"text"2.可…

在Typora中实现自动编号

文章目录 在Typora中实现自动编号1. 引言2. 准备工作3. 自动编号的实现3.1 文章大纲自动编号3.2 主题目录&#xff08;TOC&#xff09;自动编号3.3 文章内容自动编号3.4 完整代码 4. 应用自定义CSS5. 结论 在Typora中实现自动编号 1. 引言 Typora是一款非常流行的Markdown编辑…

微机——计算机中的数制

目录 数制转换&#xff1a; 十进制数转为非十进制数&#xff1a; 二、八、十六进制数之间的转换&#xff1a; 数及字符的表示&#xff1a; 二进制数的加减运算&#xff1a; 无符号数的运算&#xff1a; 带符号数运算中的溢出问题&#xff1a; 计算机中常用的编码&#…

设计心得——流程图和数据流图绘制

一、流程图和数据流图 在软件开发中&#xff0c;画流程图和数据流图可以说是几乎每个人都会遇到。 1、数据流&#xff08;程&#xff09;图 Data Flow Diagram&#xff0c;DFG。它可以称为数据流图或数据流程图。其主要用来描述系统中数据流程的一种图形工具&#xff0c;可以将…

Node 如何生成 RSA 公钥私钥对

一、引入crypto模块 crypto 为node 自带模块&#xff0c;无需安装 const crypto require(crypto);二、封装生成方法 async function generateRSAKeyPair() {return new Promise((resolve, reject) > {crypto.generateKeyPair(rsa, {modulusLength: 2048, // 密钥长度为 …

壁纸样机神器,可以导出高清图片吗?

壁纸样机神器确实支持导出高清图片。根据搜索结果中的信息&#xff0c;壁纸样机神器提供了以下功能&#xff1a; 壁纸样机神器免费体验 高清壁纸上传&#xff1a;壁纸样机神器支持上传您自己的壁纸图片&#xff0c;推荐尺寸为1290 2796&#xff08;9:19.5&#xff09;&#xf…

数据挖掘——神经网络分类

神经网络分类 神经网络分类人工神经网络多层人工神经网络 误差反向传播&#xff08;BP&#xff09;网络后向传播算法 神经网络分类 人工神经网络 人工神经网络主要由大量的神经元以及它们之间的有向连接构成。包含三个方面&#xff1a; 神经元的激活规则 主要是指神经元输入…

快速上手LangChain(三)构建检索增强生成(RAG)应用

文章目录 快速上手LangChain(三)构建检索增强生成(RAG)应用概述索引阿里嵌入模型 Embedding检索和生成RAG应用(demo:根据我的博客主页,分析一下我的技术栈)快速上手LangChain(三)构建检索增强生成(RAG)应用 langchain官方文档:https://python.langchain.ac.cn/do…

Json字符串解析失败

通过第三方服务&#xff0c;拿到响应体的data对象&#xff08;拿到的时候对象是有值的&#xff09; 通过JSON.parseObject方法&#xff0c;拿到的对象&#xff0c;值为null 通过查看对应的json字符串&#xff0c;发现命名不一样... JSONField SeriealizedName注解是用来解析j…

网络安全 | 信息安全管理体系(ISMS)认证与实施

网络安全 | 信息安全管理体系&#xff08;ISMS&#xff09;认证与实施 一、前言二、信息安全管理体系&#xff08;ISMS&#xff09;概述2.1 ISMS 的定义与内涵2.2 ISMS 的核心标准 ——ISO/IEC 27001 三、信息安全管理体系&#xff08;ISMS&#xff09;认证3.1 认证的意义与价值…

《黄药师》药业管理软件 UploadFile 文件上传致RCE漏洞复现

0x01 产品简介 《黄药师》药业管理软件是一款针对我国医药或医疗器械企业经营管理特点而设计的综合管理软件。《黄药师》系列管理软件集进销存、财务、经营分析和GSP管理为一体,从企业经营的各个环节对资金流、物流、信息流等进行系统的管理。它采用“一看就懂,一学就会,一…

电子应用设计方案84:智能 AI 煤气灶系统设计

智能 AI 煤气灶系统设计 一、引言 智能 AI 煤气灶系统旨在提供更安全、便捷和高效的烹饪体验&#xff0c;结合人工智能技术实现智能化的控制和管理。 二、系统概述 1. 系统目标 - 精确控制火力大小&#xff0c;实现精准烹饪。 - 具备智能防干烧和熄火保护功能&#xff0c;确保…

带虚继承的类对象模型

文章目录 1、代码2、 单个虚继承3、vbptr是什么4、虚继承的多继承 1、代码 #include<iostream> using namespace std;class Base { public:int ma; };class Derive1 :virtual public Base { public:int mb; };class Derive2 :public Base { public:int mc; };class Deri…

python +tkinter绘制彩虹和云朵

python tkinter绘制彩虹和云朵 彩虹&#xff0c;简称虹&#xff0c;是气象中的一种光学现象&#xff0c;当太阳光照射到半空中的水滴&#xff0c;光线被折射及反射&#xff0c;在天空上形成拱形的七彩光谱&#xff0c;由外圈至内圈呈红、橙、黄、绿、蓝、靛、紫七种颜色。事实…