ubuntu开机后ROS程序自启动问题


Posted in Servers onDecember 24, 2022

平时有用到一些机器人或者带有ubuntu系统的移动设备,比如NVIDIA TX2,NVIDIA XAVIA, JetsonNANO,秒算,工控机等等,写好了程序后,如果想要运行,开机之后还得连接键盘鼠标,显示器,等程序运行之后还需要重新拔掉键盘鼠标显示器等等,步骤繁琐是一部分,还有可能因为反应不及时发生危险,尤其对于无人机等,因此需要配置程序开机自启动。

一、ubuntu免密开机

路径:系统设置–用户设置

ubuntu开机后ROS程序自启动问题

二、程序脚本启动

可以创建test.sh文件,将程序所需要运行的指令全部加入sh文件中。

例如:

#! /bin/bash
gnome-terminal -- bash -c "cd /home/xxx/Desktop/CSDN/test_demo/build;mkdir helloworld" & sleep 5
wait
exit 0

说明:

  • gnome-terminal --bash -c:会打开一个新的bash终端并执行c后面的语句。linux bash是一个命令处理器,通常运行于文本窗口中,并能执行用户直接输入的命令;Bash还能从文件中读取命令,这样的文件称为脚本。语句用’;;’,隔开,最后的sleep 5表示延迟5秒退出,这样就可以在新的终端看到运行效果,添加这个延时是为了方便验证是否启动程序或者节点
  • 如果是ubuntu 18.04以前的系统:gnome-terminal -x bash -c;ubuntu18.04以后的系统输入:gnome-terminal – bash -c
  • gnome-terminal --tab:同一终端窗口中打开一个新选项卡。而是打开一个新窗口。

三、文件赋予权限

chmod指令详细说明,请参考:【ubuntu】chmod命令

chmod 777 test.sh

四、开机启动项管理器

gnome-session-properties是ubuntu的开机启动项管理器。如果之前编写的sh文件,不需要sudo权限,即可将sh文件加入gnome-session-properties自启动管理器中即可。

终端输入:gnome-session-properties

ubuntu开机后ROS程序自启动问题

添加执行项目。其中command为你编写的脚本路径,name和comment可以随意配置。

ubuntu开机后ROS程序自启动问题

五、需要SUDO权限的脚本开机自启动

有的时候,我们的设备连接外部设备,需要打开串口,甚至是gpio口,这需要使用到权限,串口可以通过添加rules来设置为普通用户,但是之前在DJIManifold产品上需要程序对GPIO口进行设置,这个时候就需要用到sudo权限了,因为在进入sudo权限需要输入密码,这就不好完成开机自启动。

此时就需要利用shell脚本自动输入密码

指令:echo 'password' | sudo -S "./test.sh"

后续还需要做三步操作:

给文件运行权限

sudo chmod 777 start.sh

设置脚本自启动

gnome-session-properties

保持gnome-terminal窗口执行后不立刻关闭

在测试中会发现,gnome-terminal命令执行完会一闪而过,自行关闭。需要添加read命令,read命令是等待用户按下回车后使窗口关闭。

gnome-terminal -x bash -c "echo \"OK now\"; read"

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Servers 相关文章推荐
Nginx快速入门教程
Mar 31 Servers
Nginx下配置Https证书详细过程
Apr 01 Servers
nginx的zabbix 5.0安装部署的方法步骤
Jul 16 Servers
Nginx使用Lua模块实现WAF的原理解析
Sep 04 Servers
Apache Hudi的多版本清理服务彻底讲解
Mar 31 Servers
Nginx流量拷贝ngx_http_mirror_module模块使用方法详解
Apr 07 Servers
Docker下安装Oracle19c
Apr 13 Servers
Tomcat starup.bat 脚本实现开机自启动
Apr 20 Servers
Apache Hudi 加速传统的批处理模式
Apr 24 Servers
Nginx静态压缩和代码压缩提高访问速度详解
May 30 Servers
使用 DataAnt 监控 Apache APISIX的原理解析
Jul 07 Servers
keepalived + nginx 实现高可用方案
Dec 24 Servers
ubuntu端向日葵键盘输入卡顿问题及解决
Dec 24 #Servers
码云(gitee)通过git自动同步到阿里云服务器
Dec 24 #Servers
Valheim服务器 Mod修改安装教程 【ValheimPlus】
Dec 24 #Servers
keepalived + nginx 实现高可用方案
Dec 24 #Servers
ubuntu20.04虚拟机无法上网的问题及解决
Dec 24 #Servers
ubuntu如何搭建vsftpd服务器
Dec 24 #Servers
CentOS7设置ssh服务以及端口修改方式
Dec 24 #Servers
You might like
日本十大最佳动漫,全都是二次元的神级作品
2019/10/05 日漫
php实现无限级分类
2014/12/24 PHP
PHP Yaf框架的简单安装使用教程(推荐)
2016/06/08 PHP
php判断是否连接上网络的方法实例详解
2016/12/14 PHP
JQuery 常用方法和事件详细介绍
2013/04/18 Javascript
jquery触发a标签跳转事件示例代码
2013/07/21 Javascript
JavaScript prototype 使用介绍
2013/08/29 Javascript
js抽奖实现随机抽奖代码效果
2013/12/02 Javascript
JavaScript编程中容易出BUG的几点小知识
2015/01/31 Javascript
自定义jQuery插件方式实现强制对象重绘的方法
2015/03/23 Javascript
js实现文字在按钮上滚动的方法
2015/08/20 Javascript
实例解析jQuery插件EasyUI最常用的表单验证规则
2015/11/29 Javascript
jQuery 限制输入字符串长度
2016/06/20 Javascript
原生js实现放大镜效果
2017/01/11 Javascript
jQuery EasyUI 页面加载等待及页面等待层
2017/02/06 Javascript
vue.js学习之vue-cli定制脚手架详解
2017/07/02 Javascript
Vue实现点击后文字变色切换方法
2018/02/11 Javascript
Vue子组件向父组件通信与父组件调用子组件中的方法
2018/06/22 Javascript
js实现文件上传功能 后台使用MultipartFile
2018/09/08 Javascript
jQuery移动端跑马灯抽奖特效升级版(抽奖概率固定)实现方法
2019/01/18 jQuery
微信小程序 SOTER 生物认证DEMO 指纹识别功能
2019/12/13 Javascript
python目录与文件名操作例子
2016/08/28 Python
代码讲解Python对Windows服务进行监控
2018/02/11 Python
pandas值替换方法
2018/07/10 Python
python之文件读取一行一行的方法
2018/07/12 Python
解决Python一行输出不显示的问题
2018/12/03 Python
对Pytorch神经网络初始化kaiming分布详解
2019/08/18 Python
python使用协程实现并发操作的方法详解
2019/12/27 Python
使用numpngw和matplotlib生成png动画的示例代码
2021/01/24 Python
小程序canvas中文字设置居中锚点
2019/04/16 HTML / CSS
Nordgreen英国官网:斯堪的纳维亚设计师手表
2018/10/24 全球购物
工作的心得体会
2013/12/31 职场文书
机械制造专业大学生自我鉴定
2014/09/19 职场文书
党支部意见范文
2015/06/02 职场文书
CSS3 制作的图片滚动效果
2021/04/14 HTML / CSS
mysql 8.0.27 绿色解压版安装教程及配置方法
2022/04/20 MySQL