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 相关文章推荐
destoon在各个服务器下设置URL Rewrite(伪静态)的方法
Jun 21 Servers
Nginx快速入门教程
Mar 31 Servers
Nginx配置Https安全认证的实现
May 26 Servers
解析在浏览器地址栏输入一个URL后发生了什么
Jun 21 Servers
Mac电脑OS系统下安装Nginx的详细教程
Apr 14 Servers
Windows和Linux上部署Golang并运行程序
Apr 22 Servers
阿里云国际版 使用Nginx作为HTTPS转发代理服务器
May 11 Servers
Windows10安装Apache2.4的方法步骤
Jun 25 Servers
详解apache编译安装httpd-2.4.54及三种风格的init程序特点和区别
Jul 15 Servers
Zabbix6通过ODBC方式监控Oracle 19C的详细过程
Sep 23 Servers
CentOS7设置ssh服务以及端口修改方式
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
phpMyAdmin2.11.6安装配置方法
2008/08/24 PHP
php数据结构 算法(PHP描述) 简单选择排序 simple selection sort
2011/08/09 PHP
百度ping方法使用示例 自动ping百度
2014/01/26 PHP
php搜索文件程序分享
2015/10/30 PHP
PHP中SQL查询语句的id=%d解释(推荐)
2016/12/10 PHP
浅谈Laravel队列实现原理解决问题记录
2017/08/19 PHP
php连接MSsql server的五种方法总结
2018/03/04 PHP
解决php写入数据库乱码的问题
2019/09/17 PHP
AutoSave/自动存储功能实现
2007/03/24 Javascript
鼠标划过实现延迟加载并隐藏层的js代码
2013/10/11 Javascript
jquery实现简单的表单验证
2015/11/17 Javascript
ES6中的数组扩展方法
2016/08/26 Javascript
js本地图片预览实现代码
2016/10/09 Javascript
jQuery插件FusionCharts绘制的3D环饼图效果示例【附demo源码】
2017/04/02 jQuery
JS时间控制实现动态效果的实例讲解
2017/07/31 Javascript
简单谈谈关于Angular Cli打包的事
2017/09/05 Javascript
JS 实现缓存算法的示例(FIFO/LRU)
2018/03/20 Javascript
vue和webpack项目构建过程常用的npm命令详解
2018/06/15 Javascript
基于vue-cli搭建多模块且各模块独立打包的项目
2019/06/12 Javascript
jQuery使用ajax传递json对象到服务端及contentType的用法示例
2020/03/12 jQuery
python 示例分享---逻辑推理编程解决八皇后
2014/07/20 Python
python+pillow绘制矩阵盖尔圆简单实例
2018/01/16 Python
对python中的pop函数和append函数详解
2018/05/04 Python
Python 获取主机ip与hostname的方法
2018/12/17 Python
python中struct模块之字节型数据的处理方法
2019/08/27 Python
python用线性回归预测股票价格的实现代码
2019/09/04 Python
flask 框架操作MySQL数据库简单示例
2020/02/02 Python
基于Python测试程序是否有错误
2020/05/16 Python
Hunkemöller瑞士网上商店:欧洲最大的内衣品牌之一
2018/12/03 全球购物
优秀家长事迹材料
2014/05/17 职场文书
自主招生自荐信格式范文
2015/03/25 职场文书
大学生受助感言
2015/08/01 职场文书
2016年大学生暑期社会实践方案
2015/11/26 职场文书
2016年幼儿园万圣节活动总结
2016/04/05 职场文书
德生BCL3000抢先使用感受和评价
2022/04/07 无线电
CSS文本阴影 text-shadow 悬停效果详解
2022/05/25 HTML / CSS