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 相关文章推荐
Apache压力测试工具的安装使用
Mar 31 Servers
Nginx本地目录映射实现代码实例
Mar 31 Servers
nginx location优先级的深入讲解
Mar 31 Servers
nginx实现动静分离的方法示例
Nov 07 Servers
Nginx中使用Lua脚本与图片的缩略图处理的实现
Mar 18 Servers
nginx配置限速限流基于内置模块
May 02 Servers
配置nginx负载均衡
May 06 Servers
Linux下搭建SFTP服务器的命令详解
Jun 25 Servers
WIN10使用IIS部署ftp服务器详细教程
Aug 05 Servers
阿里云服务器(windows)手动部署FTP站点详细教程
Aug 05 Servers
Nginx如何配置多个服务域名解析共用80端口详解
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
php7新特性的理解和比较总结
2019/04/14 PHP
Swoole 5将移除自动添加Event::wait()特性详解
2019/07/10 PHP
laravel 验证错误信息到 blade模板的方法
2019/09/29 PHP
Laravel关系模型指定条件查询方法
2019/10/10 PHP
javascript URL编码和解码使用说明
2010/04/12 Javascript
JavaScript中用于生成随机数的Math.random()方法
2015/06/15 Javascript
Jquery+Ajax+PHP+MySQL实现分类列表管理(下)
2015/10/28 Javascript
基于javascript制作经典传统的拼图游戏
2016/03/22 Javascript
jQuery web 组件 后台日历价格、库存设置的代码
2016/10/14 Javascript
简单理解Vue条件渲染
2016/12/03 Javascript
详解AngularJS用Interceptors来统一处理HTTP请求和响应
2017/06/08 Javascript
vue-router命名路由和编程式路由传参讲解
2019/01/19 Javascript
详解nodejs 开发企业微信第三方应用入门教程
2019/03/12 NodeJs
Nodejs使用archiver-zip-encrypted库加密压缩文件时报错(解决方案)
2019/11/18 NodeJs
node使用async_hooks模块进行请求追踪
2021/01/28 Javascript
python用于url解码和中文解析的小脚本(python url decoder)
2013/08/11 Python
Python竟能画这么漂亮的花,帅呆了(代码分享)
2017/11/15 Python
Python实现简单http服务器
2018/04/12 Python
Python面向对象程序设计之继承与多继承用法分析
2018/07/13 Python
python利用Opencv实现人脸识别功能
2019/04/25 Python
python selenium循环登陆网站的实现
2019/11/04 Python
python爬取本站电子书信息并入库的实现代码
2020/01/20 Python
django admin 添加自定义链接方式
2020/03/11 Python
移动端适配 使px自动转换rem
2019/08/26 HTML / CSS
英国内衣连锁店:Boux Avenue
2018/01/24 全球购物
西班牙灯具网上商店:Lampara.es
2018/06/05 全球购物
Under Armour西班牙官网:美国知名的高端功能性运动品牌
2018/12/12 全球购物
估算杭州有多少软件工程师
2015/08/11 面试题
《海伦?凯勒》教学反思
2014/04/17 职场文书
汽车服务工程专业自荐信
2014/09/02 职场文书
爱护公物演讲稿
2014/09/09 职场文书
个人事迹材料怎么写
2014/12/30 职场文书
思想政治表现评语
2015/01/04 职场文书
简单的辞职信范文(2016最新版)
2015/05/12 职场文书
谢师宴家长答谢词
2015/09/30 职场文书
《蓝鲸的眼睛》读后感5篇
2020/01/15 职场文书