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配置https原理及实现过程详解
Mar 31 Servers
apache基于端口创建虚拟主机的示例
Apr 22 Servers
图文详解Nginx版本平滑升级方案
Sep 15 Servers
NGINX 权限控制文件预览和下载的实现原理
Jan 18 Servers
Nginx虚拟主机的配置步骤过程全解
Mar 31 Servers
Nginx动静分离配置实现与说明
Apr 07 Servers
在Docker容器中部署SQL Server
Apr 11 Servers
Apache POI操作批量导入MySQL数据库
Jun 21 Servers
Linux安装Docker详细教程
Jul 07 Servers
Flink 侧流输出源码示例解析
Sep 23 Servers
教你使用Ubuntu搭建DNS服务器
Sep 23 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递归获取目录内所有文件的实现方法
2016/11/01 PHP
改版了网上的一个js操作userdata
2007/04/27 Javascript
Js获取数组最大和最小值示例代码
2013/10/29 Javascript
jQuery实现返回顶部功能
2016/02/23 Javascript
JSON 对象未定义错误的解决方法
2016/09/29 Javascript
JQuery.validationEngine表单验证插件(推荐)
2016/12/10 Javascript
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
2016/12/14 Javascript
vue.js指令和组件详细介绍及实例
2017/04/06 Javascript
Vue 2中ref属性的使用方法及注意事项
2017/06/12 Javascript
JS实现div模块的截图并下载功能
2017/10/17 Javascript
详解使用jest对vue项目进行单元测试
2018/09/07 Javascript
微信小程序生成分享海报方法(附带二维码生成)
2019/03/29 Javascript
AjaxFileUpload.js实现异步上传文件功能
2019/04/19 Javascript
弱类型语言javascript中 a,b 的运算实例小结
2019/08/07 Javascript
vue实现鼠标经过动画
2019/10/16 Javascript
JavaScript监听键盘事件代码实现
2020/06/03 Javascript
vue用elementui写form表单时,在label里添加空格操作
2020/08/13 Javascript
一起来了解一下JavaScript的预编译(小结)
2021/03/01 Javascript
python获取豆瓣电影简介代码分享
2014/01/16 Python
python抓取需要扫微信登陆页面
2019/04/29 Python
python lambda表达式在sort函数中的使用详解
2019/08/28 Python
Python中list循环遍历删除数据的正确方法
2019/09/02 Python
使用CSS3制作版头动画效果
2020/12/24 HTML / CSS
vivo智能手机官方商城:vivo
2016/09/22 全球购物
船餐厅和泰晤士河餐饮游轮:Bateaux London
2018/03/19 全球购物
新加坡网上花店:FlowerAdvisor新加坡
2018/10/05 全球购物
c语言常见笔试题总结
2016/09/05 面试题
超市实习总结自我鉴定
2013/09/19 职场文书
建筑设计所实习生自我鉴定
2013/09/25 职场文书
进修护士自我鉴定
2013/10/14 职场文书
小区物业门卫岗位职责
2014/04/10 职场文书
住院医师规范化培训实施方案
2014/06/12 职场文书
2014年心理健康教育工作总结
2014/12/06 职场文书
初中生物教学随笔
2015/08/15 职场文书
职业生涯规划书之大学四年
2019/08/07 职场文书
SQL Server作业失败:无法确定所有者是否有服务器访问权限的解决方法
2021/06/30 SQL Server