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 09 Servers
Nginx同一个域名配置多个项目的实现方法
Mar 31 Servers
Nginx的rewrite模块详解
Mar 31 Servers
查看nginx配置文件路径和资源文件路径的方法
Mar 31 Servers
图文详解nginx日志切割的实现
Jan 18 Servers
idea下配置tomcat避坑详解
Apr 12 Servers
Windows server 2012搭建FTP服务器
Apr 29 Servers
安装Windows Server 2012 R2企业版操作系统并设置好相关参数
Apr 29 Servers
项目中Nginx多级代理是如何获取客户端的真实IP地址
May 30 Servers
openEuler 搭建java开发环境的详细过程
Jun 10 Servers
ssh服务器拒绝了密码 请再试一次已解决(亲测有效)
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
php 数学运算验证码实现代码
2009/10/11 PHP
发款php蜘蛛统计插件只要有mysql就可用
2010/10/12 PHP
利用PHP实现短域名互转
2013/07/05 PHP
ThinkPHP行为扩展Behavior应用实例详解
2014/07/22 PHP
PHP 芝麻信用接入的注意事项
2016/12/01 PHP
如何用javascript去掉字符串里的所有空格
2007/02/08 Javascript
js跨域和ajax 跨域问题的实现思路
2009/09/05 Javascript
js实现日历可获得指定日期周数及星期几示例分享(js获取星期几)
2014/03/14 Javascript
nodejs调用cmd命令实现复制目录
2015/05/04 NodeJs
fullPage.js和CSS3实现全屏滚动效果
2017/05/05 Javascript
Angularjs中的验证input输入框只能输入数字和小数点的写法(推荐)
2017/08/16 Javascript
jQuery超简单遮罩层实现方法示例
2018/09/06 jQuery
vue多层嵌套路由实例分析
2019/03/19 Javascript
泛谈JS逻辑判断选择器 || &&
2019/05/24 Javascript
vue移动端实现手机左右滑动入场动画
2020/06/17 Javascript
ionic+html5+API实现双击返回键退出应用
2019/09/17 Javascript
vue+AI智能机器人回复功能实现
2020/07/16 Javascript
[45:50]完美世界DOTA2联赛PWL S3 CPG vs Forest 第二场 12.16
2020/12/17 DOTA
浅谈Python 集合(set)类型的操作——并交差
2016/06/30 Python
python退出命令是什么?详解python退出方法
2018/12/10 Python
python判断计算机是否有网络连接的实例
2018/12/15 Python
python实现将多个文件分配到多个文件夹的方法
2019/01/07 Python
numpy下的flatten()函数用法详解
2019/05/27 Python
如何更换python默认编辑器的背景色
2020/08/10 Python
如何用Python徒手写线性回归
2021/01/25 Python
Python实现网络聊天室的示例代码(支持多人聊天与私聊)
2021/01/27 Python
基于IE10/HTML5 开发
2013/04/22 HTML / CSS
Hotels.com韩国:海外国内旅行所需的酒店和住宿预订网站
2020/05/08 全球购物
机关会计岗位职责
2014/04/08 职场文书
市级青年文明号申报材料
2014/05/26 职场文书
中学生学习保证书
2015/02/26 职场文书
保险内勤岗位职责
2015/04/13 职场文书
张丽莉事迹观后感
2015/06/16 职场文书
党员证明模板
2015/06/19 职场文书
关于Python中*args和**kwargs的深入理解
2021/08/07 Python
python数字图像处理数据类型及颜色空间转换
2022/06/28 Python