2021-05-27

  本科毕业季,老板给我分配了三个人,其中有一个是实现小车4G通讯,师姐给我的思路是在ros主控端实现发布数据的launch文件开机自启,并通过qt将数据读取到。今天就讲一下如何实现launch文件开机自启吧。虽然没少看博客,但是第一次写博客还是心情忐忑的,万一写到一半不想写了hhhh。

  之前上网找了很多方法问了很多人,launch文件的开机自启大致两种方法。

1、用ros自带的功能包robot_upstart,这个真的是让我伤心透了,调了1天,和网上的步骤一模一样,也都会确认返回指令

sudo systemctl daemon-reload && sudo systemctl start turn

 输入上面的指令也都会显示成功添加,并且看过之前的博客有写,可以查看etc/ros/melodic/start.d/.installed_files文件是否存在来确定自启任务是否添加成功。我的都有,但是就是开机不自启,俺也不知道为啥。含泪把具体步骤列下来吧,希望有大佬看到后可以给我个解答。

安装robot_upstart

melodic版本的ros系统直接在ros端输入如下指令就可以安装robot_upstart。

sudo apt install ros-melodic-robot-upstart

添加自启任务

(1)先在终端输入roscore启动ros

(2)将需要启动的所有ros节点写在一个launch文件,我是单独的一个launch文件,如果是要启动多个launch文件可以用include进行嵌套,具体查看launch文件的写法~ 

我用到的launch文件是 wheeltec_robot工作空间下的turn_on_wheeltec_robot/launch/start.launch

(3)添加launch文件

rosrun robot_upstart turn_on_wheeltec_robot/launch/start.launch 

添加成功后,输入屏幕上给出的指令进行确定启动

** To complete installation please run the following command:​
sudo systemctl daemon-reload && sudo systemctl start turn

重启、停止、卸载自启任务

因为robot_upstart的开机自启没有成功,所以输入这一部分指令也看不出效果,我就把这些demo放在下面吧

sudo systemctl restart start   #重启任务 后面的start是对应的launch文件名
sudo sysremctl stop start      #关闭任务 
rosrun robot_upstart uninstall start     #卸载任务

确认任务是否添加成功

查看etc/ros/melodic/start.d/.installed_files文件是否存在。其中melodic是什么俺想大家应该都知道,start.d是start.launch开机自启任务生成的文件。

 

2、用Linux系统对应的开机启动程序Startup Applications(18.04版本的Ubuntu系统)

2021-05-27

创建一个sh脚本文件

sudo su   #进入超级用户模式
nano start.sh   #使用nano编辑器编辑一个名为start的脚本文件

在start.sh脚本文件中添加以下内容

#!/bin/bash
 
source /opt/ros/melodic/setup.sh    #声明系统环境
source /home/wheeltec/wheeltec_robot/devel/setup.sh     #声明所在的工作空间

roslaunch turn_on_wheeltec_robot start.launch     #运行launch文件脚本内容

exit 0

保存后给脚本添加执行权限

sudo chmod 777 start.sh

启动Ubuntu自带程序Startup Applications,添加新program

Name:start   #随便起名
Command:gnome-terminal -x /home/wheeltec/start.sh    #gnome-terminal  执行打开终端命令  后面是start.sh脚本文件的所在路径

这样,每次开机系统就会打开一个终端,并执行start.sh脚本文件里面的内容,并且开机自启的文件是launch文件,所以不用输入roscore指令启动ros

上面一切操作都是在jetson TX2上面操作的,将他连接无人车,开机自启就会运行start.sh脚本,而脚本里面的launch文件是启动初始化节点,通过此指令就可以开启无人车的话题,用虚拟机连接TX2的wifi,就可以直接直接rostopic list查看无人车的话题。

2021-05-27

参考了一些博客,附在下面

https://blog.csdn.net/jiangsala/article/details/88796261?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.control

https://blog.csdn.net/swust_long/article/details/7285147

https://blog.csdn.net/weixin_34246474/article/details/112713471

 

上一篇:robot FrameWork的关键字使用


下一篇:selenium常用封装方法