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简单配置多个server的方法
Mar 31 Servers
nginx反向代理时如何保持长连接
Mar 31 Servers
Filebeat 采集 Nginx 日志的方法
Mar 31 Servers
Apache Calcite 实现方言转换的代码
Apr 24 Servers
nginx反向代理配置去除前缀案例教程
Jul 26 Servers
nginx容器方式反向代理实战
Apr 18 Servers
如何开启Apache,Nginx和IIS服务器的GZIP压缩功能
Apr 29 Servers
nginx实现多geoserver服务的负载均衡
May 15 Servers
centos环境下nginx高可用集群的搭建指南
Jul 23 Servers
windows系统搭建WEB服务器详细教程
Aug 05 Servers
SpringBoot前端后端分离之Nginx服务器下载安装过程
Aug 14 Servers
Nginx 502 bad gateway错误解决的九种方案及原因
Aug 14 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
印尼林东PWN黄金曼特宁咖啡豆:怎么冲世界上最醇厚的咖啡冲煮教程
2021/03/03 冲泡冲煮
PHP开发框架总结收藏
2008/04/24 PHP
PHP的一个完美GIF等比缩放类,附带去除缩放黑背景
2014/04/01 PHP
php实现的返回数据格式化类实例
2014/09/22 PHP
php实现的SESSION类
2014/12/02 PHP
PHP 与 UTF-8 的最佳实践详细介绍
2017/01/04 PHP
PHP Class SoapClient not found解决方法
2018/01/20 PHP
网页和浏览器兼容性问题汇总(draft1)
2009/06/01 Javascript
25个非常棒的jQuery滑块插件和教程小结
2011/09/02 Javascript
js去除重复字符串两种实现方法
2013/01/09 Javascript
通过$(this)使用jQuery包装后的方法或属性
2014/05/18 Javascript
Nodejs极简入门教程(一):模块机制
2014/10/25 NodeJs
javascript HTML5 canvas实现打砖块游戏
2020/06/18 Javascript
ztree实现权限横向显示功能
2017/05/20 Javascript
Angular 4环境准备与Angular cli创建项目详解
2017/05/27 Javascript
vuejs使用递归组件实现树形目录的方法
2017/09/30 Javascript
基于jQuery ztree实现表格风格的树状结构
2018/08/31 jQuery
js实现一个页面多个倒计时的3种方法
2019/02/25 Javascript
关于vue表单提交防双/多击的例子
2019/10/31 Javascript
高效测试用例组织算法pairwise之Python实现方法
2017/07/19 Python
如何更改 pandas dataframe 中两列的位置
2019/12/27 Python
python 解决mysql where in 对列表(list,,array)问题
2020/06/06 Python
详解CSS3弹性伸缩盒
2020/09/21 HTML / CSS
捷克汽车配件和工具销售网站:TorriaCars
2018/02/26 全球购物
幼儿园园长岗位职责
2013/11/26 职场文书
小学毕业家长寄语
2014/01/19 职场文书
服务员岗位责任制
2014/02/11 职场文书
2014年社区植树节活动方案
2014/02/28 职场文书
老公保证书范文
2014/04/29 职场文书
教师党员岗位承诺书
2014/05/29 职场文书
2014年管理人员工作总结
2014/12/01 职场文书
2015年护士工作总结范文
2015/03/31 职场文书
通知格式
2015/04/27 职场文书
个人催款函范文
2015/06/24 职场文书
消防安全培训工作总结
2015/10/23 职场文书
MySQL深度分页(千万级数据量如何快速分页)
2021/07/25 MySQL