ubuntu 开机启动ROS文件

7 篇文章 0 订阅
  1. 先启动应用程序里面添加:
    在这里插入图片描述
    在这里插入图片描述
gnome-terminal -x bash  -c " /home/jzi/devsh/gmh_test.sh;exec bash;"

-t 为打开终端的标题,便于区分。
-x 后面的为要在打开的终端中执行的脚本,根据需要自己修改就行了。 最后的exec bash;是让打开的终端在执行完脚本后不关闭。

tip:需要像上面一样新建一个终端再运行否则只是后台运行你看不到终端打印的内容。


  1. touch一个sh文件后chmod文件权限。
sudo chmod 777  /home/jzi/devsh/gmh_test.sh
  1. sh文件里面写shell脚本。先source环境,然后循环里面启动roscore,再启动自己的launch节点。
#!/bin/bash

#source ws_livox/devel/setup.sh

source /opt/ros/melodic/setup.bash
source /home/jzi/ws_livox/devel/setup.bash

sleep 1s

echo "jzi" | sudo -S chmod 777 /dev/tty*


sleep 3

while true
do
	echo `date`,"check status..."
		
	pid_roscore=$(ps -ef | grep 'roscore' |grep -v 'grep'| awk '{print $2}')
	pid_livox=$(ps -ef |grep 'livox_lidar.launch' |grep -v 'grep'| awk '{print $2}')
	
	if [ ! -n "$pid_roscore" ] ; then
		echo `date`,"roscore		[start]"
		gnome-terminal -- bash -c "roscore; exec bash"
		sleep 5
	else
		echo `date`,"roscore		[OK]"
	fi
		
	if [ ! -n "$pid_livox" ] ; then
		echo `date`,"livox_lidar	[start]"
		gnome-terminal -- bash -c "roslaunch livox_ros_driver livox_lidar.launch; exec bash"
	else
		echo `date`,"livox_lidar	[OK]"
	fi

	exec0=mqtt_bridge
	pid0=`ps -ef | grep $exec0 | grep -v "grep"`
	if [[ $pid0 == "" ]]
	then
	echo "mqtt_bridge run failed:" >> /home/jzi/restart_log.txt
	date >> /home/jzi/restart_log.txt
	gnome-terminal -x bash -c "roslaunch mqtt_bridge demo.launch;exec bash;"
	sleep 15
	fi

done

相关shell脚本简单总结:

  • ps命令将某个进程显示出来
    grep命令是查找
    中间的|是管道命令 是指ps命令与grep同时执行
    grep命令是查找,是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
    grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
    以下这条命令是检查java 进程是否存在:ps -ef |grep java
  • !叹号,一般在shell脚本中表示取反
    []方括号,这个叫条件表达式,简易版的if
  • $2:表示第二个字段
    print $2 : 打印第二个字段
    awk ‘{print $2}’ $fileName : 一行一行的读取指定的文件, 以空格作为分隔符,打印第二个字段,也就是进程的PID
  • $是表示变量
  • if-then-else语句:当if语句中的命令返回为0状态码则运行then后的命令,返回为非零状态码时,会执行else部分中的命令。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值