turtlebot 中的minimal.launch介绍

来源:互联网 发布:相片删除恢复软件 编辑:程序博客网 时间:2024/06/06 19:29

前导:ROS版本为indigo,turtlebot设备为kobuki

每次在kobuki运行一些例子前,都要执行roslaunch turtlebot_bringup minimal.launch这个命令,然后听见kobuki发出一串升序的声音,说明kobuki初始化成功。从现在开始慢慢深入了解kobuki

先从了解 minimal.launch开始:通过roscd turtlebot_bringup/launch命令进入minimal.launch所在文件夹,cat命令查看内容:

第1步:先根据设置的环境变量中的TURTLEBOT_XXX初始化一些参数。其中比较重要的是

<arg name="serialport"        default="$(env TURTLEBOT_SERIAL_PORT)"  doc="used by create to configure the port it is connected on [/dev/ttyUSB0, /dev/ttyS0]"/>  。
串口端口:如果开启kobuki并通过usb连上电脑,该值为/dev/kobuki ,是一个软链接,指向/dev/ttyUSB0。     

<arg name="3d_sensor"         default="$(env TURTLEBOT_3D_SENSOR)"    doc="3d sensor types [kinect, asux_xtion_pro]"/>
3D扫描传感器:当你更换3D传感器时,要在terminal窗口的环境变量中设置该值。


第2步:include robot.launch.xml ,跟踪robot.launch.xml里面先include description.launch.xml。

2.1 跟踪description.launch.xml,在里面设置了默认的urdf_file参数,默认的配置文件在(turtlebot_description)/robots/下面,最后保存在参数服务器中的robot_description中。

2.2 启动节点robot_state_publisher

这个节点维护并发布robot的关键(关节)位置的坐标系信息到tf上,一旦该这些信息被发布说明robot的各个关键(关节)坐标系的依赖关系确定,robot也就可以做各种动作。package也可以当成库文件用来发布自己robot的节点关键信息。

API

订阅的主题:

joint_states (sensor_msgs/JointState) :关键位置信息

参数信息:

robot_description (urdf map):urdf xml 机器人的类型

tf_prefix (string) :tf命令空间的前缀

publish_frequency (double) :推送频率, default: 50Hz.

ignore_timestamp (bool) :ture 忽略时间戳和推送频率,一收到订阅的joint_states就发布。默认为false

use_tf_static (bool) : 是否使用/tf_static静态锁定传输广播,默认true;

其余自己新加上的设备就可以用


2.3 启动节点diagnostic_aggregator

一个诊断器,收集tutlebot的信息在经过处理分类后发布出来。有两种分析方法GenericAnalyzer和AnalyzerGroup


订阅的主题:

/diagnostics (diagnostic_msgs/DiagnosticArray)  原始诊断的输入数据


发布的主题:

/diagnostics_agg (diagnostic_msgs/DiagnosticArray) 处理归类后的输出数据

/diagnostics_toplevel_state (diagnostic_msgs/DiagnosticStatus)  diagnostics_agg的最顶层状态


第3步 包括mobile_base.launch.xml

3.1启动节点mobile_base_nodelet_manager

mobile_base_nodelet_manager其实是一个nodelete节点,只是名字叫这么长。

见:ros中的nodelet

3.2include /kuboki/mobile_base.launch.xml

3.2.1 启动节点mobile_base

见:turtlebot的mobile_base节点,是一个nodelet


3.2.2 启动节点bumper2pointcloud

将保险杠(减震器)传感器和悬崖传感器上传的数据转化成点云数据,用来在navigation中。是一个nodelet

3.2启动节点cmd_vel_mux
一个速度命令选择器:当不同的node发送多个不同topic(不同topic中都有命令信息),同一时间robot只允许一个命令,该命令取决于当前nodes的优先级和是否超时在一个yaml配置文件,该文件可以在运行时加载。

订阅的主题:
~input/cmd_vel (geometry_msgs/Twist) 输入命令的topic

发布的主题:
~output/cmd_vel (geometry_msgs/Twist) 选择完命令后,发布
~active (std_msgs/String) 当前活跃的命令,如果无人控制robot则为idle。

参数:
~yaml_cfg_file (string)配置文件路径。

第4步 包括netbook.launch.xml
启动节点 turtlebot_labtop_battery:监控笔记本的电量

第5步 包括standalone.launch
这个文件没有在turtlebot_bringup下面,而在rocon_app_manager/launch/下面。用来做app管理使用在独立模式下,这里的独立模式是指“在非android模式,非多master中心模式下,用户可以运行演示基本的apps(包括chirp and talker等多个在rocon中的app,或者自己开发的app)
还需补充(rocon和remocon)

5.1启动capability_server节点
使能一个能力服务器用来支持rocon_app_manager
capability的配置文件默认为rocon_app_manager/param/capabilities.yaml

5.2启动app_manager节点
对于robot是一个公共接口和retaskable接口。对于rcon_app,rocon_app_manager基本封装了robot的底层一切信息,只需调用app_manager的接口就可以操控robot。

5.3启动master节点
master提供topic的命名和注册service功能,也提供跟踪sub/pub功能。这个节点的角色就是让A节点能够定位到B节点。然后两个节点AB之间进行点对点的通信。
也提供“参数服务器”功能。
简单来说就是注册服务器+参数服务器

5.4启动interactions节点
一个交互服务器与app manager串行工作。主要用于rapps之间的通信服务

5.5启动zeroconf/zeroconf节点
用户在配对模式中找到app_manager。并且只工作在app manager的standalone模式下。当配置被使能时,zeroconf会在本地局域网中广播ros master,并且remocon会使用广播的信息初始化配对连接。


原创粉丝点击