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如何将http访问的网站改成https访问
Mar 31 Servers
Nginx配置SSL证书出错解决方案
Mar 31 Servers
nginx对http请求处理的各个阶段详析
Mar 31 Servers
浅谈Nginx 中的两种限流方式
Mar 31 Servers
Nginx + consul + upsync 完成动态负载均衡的方法详解
Mar 31 Servers
Nginx 根据URL带的参数转发的实现
Apr 01 Servers
NGINX 权限控制文件预览和下载的实现原理
Jan 18 Servers
Nginx配置之禁止指定IP访问
May 02 Servers
Nginx配置使用详解
Jul 07 Servers
windows10 家庭版下FTP服务器搭建教程
Aug 05 Servers
ubuntu如何搭建vsftpd服务器
Dec 24 Servers
Shell中的单中括号和双中括号的用法详解
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
PHP中in_array的隐式转换的解决方法
2018/03/06 PHP
推荐40款强大的 jQuery 导航插件和教程(上篇)
2012/09/14 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖放商品放置购物车
2015/11/30 Javascript
Easyui 之 Treegrid 笔记
2016/04/29 Javascript
移动端横屏的JS代码(beta)
2016/05/16 Javascript
走进AngularJs之过滤器(filter)详解
2017/02/17 Javascript
JS文件/图片从电脑里面拖拽到浏览器上传文件/图片
2017/03/08 Javascript
微信小程序之获取当前位置经纬度以及地图显示详解
2017/05/09 Javascript
全新打包工具parcel零配置vue开发脚手架
2018/01/11 Javascript
vue中引用阿里字体图标的方法
2018/02/10 Javascript
ES6知识点整理之函数对象参数默认值及其解构应用示例
2019/04/17 Javascript
使用easyui从servlet传递json数据到前端页面的两种方法
2019/09/05 Javascript
Vue 构造选项 - 进阶使用说明
2020/08/14 Javascript
[59:26]DOTA2上海特级锦标赛D组资格赛#1 EG VS VP第二局
2016/02/28 DOTA
[03:12]TI9战队档案 - Virtus Pro
2019/08/20 DOTA
python之wxPython应用实例
2014/09/28 Python
在Python中使用判断语句和循环的教程
2015/04/25 Python
Python判断以什么结尾以什么开头的实例
2018/10/27 Python
Python图像处理之图像的读取、显示与保存操作【测试可用】
2019/01/04 Python
Python语言异常处理测试过程解析
2020/01/08 Python
python实现用户名密码校验
2020/03/18 Python
python下载的库包存放路径
2020/07/27 Python
CSS3实现线性渐变用法示例代码详解
2020/08/07 HTML / CSS
Html5获取高德地图定位天气的方法
2019/12/26 HTML / CSS
10条PHP编程习惯
2014/05/26 面试题
技术经理的自我评价范文
2013/12/03 职场文书
革命先烈的英雄事迹材料
2014/02/15 职场文书
广播体操口号
2014/06/18 职场文书
出生医学证明书
2014/09/15 职场文书
个人思想政治总结
2015/03/05 职场文书
银行安全保卫工作总结
2015/08/10 职场文书
少先大队干部竞选稿
2015/11/20 职场文书
MySQL大小写敏感的注意事项
2021/05/24 MySQL
Python基础数据类型tuple元组的概念与用法
2021/08/02 Python
一起来看看Vue的核心原理剖析
2022/03/24 Vue.js
微信告警的zabbix监控系统 监控整个NGINX集群
2022/04/18 Servers