本科毕业季,老板给我分配了三个人,其中有一个是实现小车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系统)
创建一个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查看无人车的话题。
参考了一些博客,附在下面
https://blog.csdn.net/swust_long/article/details/7285147
https://blog.csdn.net/weixin_34246474/article/details/112713471