一键启动及自启动程序

之前在项目上遇到一个需求:在无人驾驶车辆上安装一键启动程序以及开机自启动程序,这样就可以使得用户在上车之后轻松完成车辆的启动,避免繁琐的指令操作

一键启动的操作大概分为以下四个阶段:

1. 设置sudo免密

2. 编写一键启动shell文件 ——包括线控,控制,档位

3. 编写自启动shell文件——包括通讯,视觉,雷达,规划,决策,POS

4. 添加自启动程序到开机程序

5. 编写一键终止程序——关闭线控,控制,档位

系统: ubantu18.04

1. sudo免密

这是因为在后期一件启动的过程中某些指令会需要使用权限,需要输入密码,如果密码输入不及时就会中断程序,当然一般情况下来不及输入

看了一些教程,都是通过管道之类的解决,但是太麻烦,不如直接设置sudo免密

不过设置之后,之后涉及到操作权限的口令要注意哦!!!!!

首先打开终端,在命令行输入:

sudo vim /etc/sudoers

会打开一个编辑界面

找到最下面的一行

写入

sptuan  ALL=(ALL:ALL) NOPASSWD: ALL

写入之后,按ESC键后输入:wq 回车保存并退出

2. 编写一键启动shell文件

#!/bin/sh
#chkconfig: 2345 22 80
#description: Filebeat Service

# 打开控制层
{
gnome-terminal --tab "cw_control" -x bash -c "cd /home/sptuan/Cw_BUS/autotju_bus/tjuPy_zt/modules/wiredcontrol/ChengWu_bus_One_wending;python2 cw_control.py ; exec bash" & 
gnome-terminal --tab "cw_wiredcontrol" -x bash -c "cd /home/sptuan/Cw_BUS/autotju_bus/tjuPy_zt/modules/wiredcontrol/ChengWu_bus_One_wending;python2 cw_wiredcontrol_.py ; exec bash" & 
gnome-terminal --tab "cw_start" -x bash -c "cd /home/sptuan/Cw_BUS/autotju_bus/tjuPy_zt/modules/wiredcontrol/ChengWu_bus_One_wending;python2 cw_start_stop_button.py ; exec bash"
}

其实命令比较单一:

gnome-terminal --tab :为打开窗口的意思(一个终端下的多个窗口)

x bash -c : 后面的“”中是我们原本要在终端输入的命令,例如在本项目中为了保险起见,我们用命令行先进入对应文件夹之后再启动对应程序

在分号内不同的命令用分号 ; 隔开

3. 编写自启动shell文件

自启动文件其实与一键启动的文件一样,同样是一个shell脚本

唯一不同的是我们需要把他加入的开机启动的程序中,也就是我们的第四步骤

首先我们先编写好这个文件,在这里我们把所有的准备工作包括视觉,雷达,通信等都添加到这个脚本中

#!/bin/sh
#chkconfig: 2345 22 80
#description: Filebeat Service

# 现在可以实现免密和自启动,请把该文件放在主目录下

sleep 3s
# 打开权限

{
gnome-terminal --window -e 'bash -c "source /opt/ros/melodic/setup.bash;roscore;exec bash"' --tab -e 'bash -c "sudo chmod 666 /dev/ttyUSB0;sh can_up.sh;candump can0;exec bash"'
}&&

sleep 2s

# 启动激光雷达
{
gnome-terminal --window -e 'bash -c "cd /home/robosense;./start.sh;candump can0;exec bash"'
}&&

sleep 3s

# 打开视觉端口
{
gnome-terminal --window -e 'bash -c "cd /home/catkin_ws_LidarParse;source devel/setup.bash;roslaunch zt_camera cw_camera.launch;exec bash"' 
}&&

sleep 5s

# 启动激光雷达数据发送
{
gnome-terminal --window -e 'bash -c "cd /home/catkin_ws_calmcar_chengwu;source devel/setup.bash;rosrun chengwu_lidar chengwu_lidar;exec bash"' 
}&&

sleep 3s

# 启动s1
{
gnome-terminal --window -e 'bash -c "cd /home/catkin_ws_roi;rosrun s_l_one s_l_one_node;exec bash"' 
}&&

sleep 2s

# 启动POS,carmera,decision
{
gnome-terminal --tab --name="cw_POS" -x bash -c "cd/home/zhongtong/Cw_BUS/autotju_bus/tjuPy_zt/modules/wiredcontrol/ChengWu_bus_first_codes;python cw_POS.py ; exec bash" & 
sleep 0.5s & 
gnome-terminal --tab "cw_carmera" -x bash -c "cd/home/zhongtong/Cw_BUS/autotju_bus/tjuPy_zt/modules/wiredcontrol/ChengWu_bus_first_codes ; python3 cw_sl_by_carmera.py ; exec bash" & 
sleep 0.5s & 
gnome-terminal --tab "cw_decision" -x bash -c "cd/home/zhongtong/Cw_BUS/autotju_bus/tjuPy_zt/modules/wiredcontrol/ChengWu_bus_first_codes ; python3 cw_decision_new.py ; exec bash"
}&&

sleep 2s

# 启动rviz
{
gnome-terminal --window -e 'bash -c "rviz -d zhongtong_ONE/config/rviz/perception.rviz;exec bash"'
}&&


# 打开控制层

{
gnome-terminal --tab "cw_plan" -x bash -c "cd /home/sptuan/Cw_BUS/autotju_bus/tjuPy_zt/modules/wiredcontrol/ChengWu_bus_One_wending;python2 cw_plan_old.py ; exec bash" & 
gnome-terminal --tab "ce_decision" -x bash -c "cd /home/sptuan/Cw_BUS/autotju_bus/tjuPy_zt/modules/wiredcontrol/ChengWu_bus_One_wending;python3 cw_decision.py ; exec bash" & 
}

每一个{}中都是一个单独的功能,{}之间需要用&&连接

gnome-terminal --window 是单独开一个终端

而gnome-terminal --tab是单独开一个窗口

注意:一键启动和自启动的shell脚本最好放在主目录下

4.添加自启动到开机文件中

打开终端,在终端中输入:gnome-session-properties

会打开以下界面:

点击添加

在命令中可以点击浏览,选择你写好的开机自启动shell文件

名称和备注就随便了,不是很重要

5.编写一键终止程序

这是为了防止中途出现紧急情况人工接管后,让程序自动暂停,暂停的程序应该和一键启动的程序是呼应的,一键启动有哪些,一键终止就有哪些!所以编写时候注意程序的设计,把不需要暂停的放在自启动中!

一键终止程序如下:

#!/bin/bash

# PROCESS=`ps -ef | grep python | grep -v grep | awk '{print $2}' | xargs kill -9`

PROCESSE=`ps -ef | grep cw_start_stop_button.py | awk '{print $2}' | xargs kill -9`

PROCESSA=`ps -ef | grep cw_wiredcontrol_.py | awk '{print $2}' | xargs kill -9`

PROCESSB=`ps -ef | grep cw_control.py | awk '{print $2}' | xargs kill -9`

# PROCESSB=`ps -ef | grep cw_plan_old.py | awk '{print $2}' | xargs kill -9`

 这其实是一个信息传输的命令

grep cw_start_stop_button.py :是把关于cw_start_stop_button.py的位置寻找到之后传递给awk,最后通过kill杀死进程!其他的原理都是一样的

由此就完成了整个程序设计和功能实现,欢迎大家交流讨论!

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
Win10一键自动优化是一种操作系统的优化工具,旨在提升Windows 10操作系统的性能和稳定性。通过以管理员身份运行该工具,用户可以自动化执行一系列系统优化操作,以便为计算机提供更好的性能和响应速度。 首先,这个工具可以自动清理和优化注册表。注册表是Windows操作系统中存储配置设置和选项的关键部分。通过清理无效的和过时的注册表项,可以帮助提高系统的运行速度和响应能力。 其次,该工具可以自动清理临时文件和无用的系统文件。Windows操作系统会生成大量的临时文件,如浏览器缓存、临时下载文件和错误报告。自动清理这些临时文件可以释放磁盘空间,并提高计算机的整体性能。 此外,工具还可以自动禁用不必要的启动项。随着计算机使用时间的增长,安装的软件和程序会自动添加到启动项中,导致系统启动变慢。通过禁用不必要的启动项目,可以加快系统的启动速度。 最后,该工具还可以自动优化系统的网络设置。它可以帮助优化网络连接,提高网页加载速度以及下载和上传文件的速度。 总而言之,Win10一键自动优化以管理员身份运行可以自动执行一系列系统优化操作,包括清理注册表、清理临时文件、禁用启动项和优化网络设置。通过使用这个工具,用户可以提高计算机性能和稳定性,从而获得更好的用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你今天吃麻辣红油锅了吗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值