ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2021-05-27

2021-05-29 22:57:44  阅读:312  来源: 互联网

标签:文件 27 launch 05 robot start 自启 2021 ros


  本科毕业季,老板给我分配了三个人,其中有一个是实现小车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/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

 

标签:文件,27,launch,05,robot,start,自启,2021,ros
来源: https://blog.csdn.net/weixin_53293018/article/details/117320108

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有