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 相关文章推荐
Windows下使用Nginx+Tomcat做负载均衡的完整步骤
Mar 31 Servers
Nginx如何配置Http、Https、WS、WSS的方法步骤
May 11 Servers
Nginx进程调度问题详解
Sep 25 Servers
Nginx动静分离配置实现与说明
Apr 07 Servers
docker-compose部署Yapi的方法
Apr 08 Servers
Apache SeaTunnel实现 非CDC数据抽取
May 20 Servers
详解Nginx的超时keeplive_timeout配置步骤
May 25 Servers
ubuntu下常用apt命令介绍
Jun 05 Servers
nginx之内存池的实现
Jun 28 Servers
在windows server 2012 r2中安装mysql的详细步骤
Jul 23 Servers
Windows Server 2016服务器用户管理及远程授权图文教程
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
一个简单的MySQL数据浏览器
2006/10/09 PHP
php遍历数组的方法分享
2012/03/22 PHP
解析phpstorm + xdebug 远程断点调试
2013/06/20 PHP
Yii2 rbac权限控制之rule教程详解
2016/06/23 PHP
PHP实现链式操作的三种方法详解
2017/11/16 PHP
PHPExcel实现的读取多工作表操作示例
2020/04/14 PHP
关于flash遮盖div浮动层的解决方法
2010/07/17 Javascript
浅析JavaScript中的类型和对象
2013/11/29 Javascript
JavaScript中的变量作用域介绍
2014/12/31 Javascript
js实现带三角符的手风琴效果
2017/03/01 Javascript
vue子父组件通信的实现代码
2017/07/09 Javascript
jQuery绑定事件方法及区别(bind,click,on,live,one)
2017/08/14 jQuery
bootstrap switch开关组件使用方法详解
2017/08/22 Javascript
Node.JS 循环递归复制文件夹目录及其子文件夹下的所有文件
2017/09/18 Javascript
JS实现登录页密码的显示和隐藏功能
2017/12/06 Javascript
nodejs微信扫码支付功能实现
2018/02/17 NodeJs
微信小程序时间轴实现方法示例
2019/01/14 Javascript
jQuery选择器之层次选择器用法实例分析
2019/02/19 jQuery
深入理解Puppeteer的入门教程和实践
2019/03/05 Javascript
vue基本使用--refs获取组件或元素的实例
2019/11/07 Javascript
Python 爬虫之超链接 url中含有中文出错及解决办法
2017/08/03 Python
python距离测量的方法
2018/03/06 Python
基于python实现简单日历
2018/07/28 Python
pytest中文文档之编写断言
2019/09/12 Python
python列表推导式入门学习解析
2019/12/02 Python
PyQt5中多线程模块QThread使用方法的实现
2020/01/31 Python
Python使用Paramiko控制liunx第三方库
2020/05/20 Python
Python爬虫自动化爬取b站实时弹幕实例方法
2021/01/26 Python
韩国演唱会订票网站:StubHub韩国
2019/01/17 全球购物
幼儿园迎国庆65周年活动策划方案
2014/09/16 职场文书
2015年机关党委工作总结
2015/05/23 职场文书
优秀学生干部主要事迹材料
2015/11/04 职场文书
关于做家务的心得体会
2016/01/23 职场文书
Golang的继承模拟实例
2021/06/30 Golang
pandas求平均数和中位数的方法实例
2021/08/04 Python
Android开发EditText禁止输入监听及InputFilter字符过滤
2022/06/10 Java/Android