SLAM+语音机器人DIY系列:(二)ROS入门——8.理解roslaunch在大型项目中的做用

摘要                                          

ROS机器人操做系统在机器人应用领域很流行,依托代码开源和模块间协做等特性,给机器人开发者带来了很大的方便。咱们的机器人“miiboo”中的大部分程序也采用ROS进行开发,因此本文就重点对ROS基础知识进行详细的讲解,给不熟悉ROS的朋友起到一个抛砖引玉的做用。本章节主要内容:html

1.ROS是什么node

2.ROS系统总体架构python

3.在ubuntu16.04中安装ROS kineticnginx

4.如何编写ROS的第一个程序hello_worldc++

5.编写简单的消息发布器和订阅器算法

6.编写简单的service和clientdjango

7.理解tf的原理ubuntu

8.理解roslaunch在大型项目中的做用centos

9.熟练使用rvizbash

10.在实际机器人上运行ROS高级功能预览



8.理解roslaunch在大型项目中的做用

1roslaunch的做用

在一个大型的机器人项目中,常常涉及到多个node协同工做,而且每一个node都有不少可设置的parameter。好比咱们的机器人miiboo_nav导航项目,涉及到地图服务节点、定位算法节点、运动控制节点、底盘控制节点、激光雷达数据获取节点等众多节点,和几百个影响着这些node行为模式的parameter。若是所有手动rosrun逐个启动node并传入parameter,工程的复杂程度将不可思议。因此这个时候就须要用roslaunch来解决问题,将须要启动的节点和须要设置的parameter所有写入一个*.launch文件,而后用roslaunch一次性的启动*.launch文件,这样全部的节点就垂手可得的启动了。miiboo_nav导航项目的miiboo_nav.launch文件内容如图28

(图28miiboo_nav导航项目的miiboo_nav.launch文件内容

2launch标签介绍

launch文件采用xml文本标记语言进行编写,对比较经常使用的标签进行介绍。

<launch>标签:

这个是顶层标签,全部的描述标签都要写在<launch></launch>之间。

<launch>
...
</launch> 

<node>标签:

这个是最多见的标签,每一个node标签里包含了ROS图中节点的名称属性name、该节点所在的包名pkg、节点的类型typetype为可执行文件名称,若是节点用c++编写;type*.py,若是节点用python编写)、调试属性output(若是output=screen”,终端输出信息将被打印到当前控制台,而不是存入ROS日志文件)。

<node name=”xx” pkg=”xx” type=”xx” output=”xx”>
...
</node> 

<include>标签:

这个标签是用于导入另外一个*.launch文件到当前文件。也就是说高层级的launch文件能够经过include的方法调用其它launch文件,这样可使launch文件的组织方式更加模块化,便于移植与复用。

<include file=”$(find pkg_name)/launch/xx.launch”/>

<remap>标签:

这个标签是用于将topic的名称进行重映射, from中填入原来的topic名称,to中填入新的topic名称。<remap>标签根据放置在launch文件的层级不一样,在相应的层级起做用。

<remap from=”orig_topic_name” to=”new_topic_name”/>

<param>标签:

这个标签用于在参数服务器中建立或设置一个指定名称的参数值。

<param name=”param_name” type=”xx” value=”xx”/>

<rosparam>标签:

这个标签用于从yaml文件中一次性导入大量参数到参数服务器中。

<rosparam command=”load” file=”$(find pkg_name)/path_to_file.yaml”/>

<arg>标签:

这个标签用于在launch文件中定义用于存储的临时变量,该标签订义的变量只在当前launch文件中使用。推荐使用第一种方式赋值,这样能够方便从命令行中传入参数。

<arg name=”xx” default=”xx”/>
或者
<arg name=”xx” value=”xx”/>

<group>标签:

这个标签用于将node批量划分到某个命名空间。便于大项目中节点的批量管理。

<group ns=”group_one”>
< node ... />
< node ... />
</group>

<group ns=”group_two”>
< node ... />
< node ... />
</group>

3launch的使用方法

首先在相应功能包目录下新建一个launch文件夹。

而后在launch文件夹中新建*.launch文件,并按照上面的launch标签规则编写好launch文件的内容。

最后在终端中用roslaunch命令启动launch文件,命令以下:

cd ~/catkin_ws/
source devel/setup.bash
roslaunch <pkg_name> <file_name.launch> 

特别说明,因为roslaunch命令会自动去启动roscore,因此不须要像以前使用rosrun那样特地先去手动启动roscore

后记                

------SLAM+语音机器人DIY系列【目录】快速导览------

第1章:Linux基础

1.Linux简介

2.安装Linux发行版ubuntu系统

3.Linux命令行基础操做

第2章:ROS入门

1.ROS是什么

2.ROS系统总体架构

3.在ubuntu16.04中安装ROS kinetic

4.如何编写ROS的第一个程序hello_world

5.编写简单的消息发布器和订阅器

6.编写简单的service和client

7.理解tf的原理

8.理解roslaunch在大型项目中的做用

9.熟练使用rviz

10.在实际机器人上运行ROS高级功能预览

第3章:感知与大脑

1.ydlidar-x4激光雷达

2.带自校准九轴数据融合IMU惯性传感器

3.轮式里程计与运动控制

4.音响麦克风与摄像头

5.机器人大脑嵌入式主板性能对比

6.作一个能走路和对话的机器人

第4章:差分底盘设计

1.stm32主控硬件设计

2.stm32主控软件设计

3.底盘通讯协议

4.底盘ROS驱动开发

5.底盘PID控制参数整定

6.底盘里程计标

第5章:树莓派3开发环境搭建

1.安装系统ubuntu_mate_16.04

2.安装ros-kinetic

3.装机后一些实用软件安装和系统设置

4.PC端与robot端ROS网络通讯

5.Android手机端与robot端ROS网络通讯

6.树莓派USB与tty串口号绑定

7.开机自启动ROS节点

第6章:SLAM建图与自主避障导航

1.在机器人上使用传感器

2.google-cartographer机器人SLAM建图

3.ros-navigation机器人自主避障导航

4.多目标点导航及任务调度

5.机器人巡航与现场监控

第7章:语音交互与天然语言处理

1.语音交互相关技术

2.机器人语音交互实现

3.天然语言处理云计算引擎

第8章:高阶拓展

1.miiboo机器人安卓手机APP开发

2.centos7下部署Django(nginx+uwsgi+django+python3)

----------------文章将持续更新,敬请关注-----------------

 

若是你们对博文的相关类容感兴趣,或有什么技术疑问,欢迎加入下面的《SLAM+语音机器人DIY》QQ技术交流群,一块儿讨论学习^_^

关于咱们:

视频教程:

 

https://www.bilibili.com/video/av61448040

相关文章
相关标签/搜索