ROS的应用
TF坐标转换
从上面知道,得益于松耦合的特点,每个节点独立运行,每一个节点都有属于自己的XYZ坐标,当他们成为一个整体时,每个节点的坐标系都是相互独立的,但实际上计算需要的坐标系是唯一的,这个时候就需要进行TF坐标转换
例如,当下游的Planning节点想使用Obstacle信息时,需要将Obstacle信息转化到同一个世界坐标系,这时候它会发起一个TF去查询Obstacle处于哪一个世界坐标系里面的哪一个位置,从而感知整个车身周围的情况,基于此再做一个合理的规划和决策行为。
RQT用户接口
R实质是ROS的缩写,QT是可视化的图形工具,RQT是ROS给开发者提供的一套比较方便的图形化相关展示的一套工具。RQT的主要功能如下
- RQT imageview
- Multipot,可以将二维的数据在一个二维坐标系里面进行实时展示
- RQT的graph工具,在开发的实际过程当中使用得比较广泛,这个工具把整个网络拓扑用图形化的方式展现出来
- RQT console是对应ROS日志系统所提供的一套可视化工具
- RQT logleve是为ROS日志系统所提供的另外一个可视化工具
Robot Models URDF
在进行实际模拟的时候,可以用一套语言来定义机器人模型,这套语言被定义为统一机器人描述格式语言URDF
SDF Simulation Description Format
Simulation Description Format(SDF)是另外一个调试工具。
ROS通信
ROS提供了三种节点之间通信的方式:
- 第一种是基于消息的订阅发布模型
- 第二种就是ROS Service;
- 第三种Param,它借鉴了Service的思想;
ROS Action
ROS还提供了另外一种通讯方式,这种不常见通讯方式就是Actions,相比Service,它多了一个取消的功能和带有反馈机制。对于Service,发起一个Service请求需要等到返回一个正确的Response结果才会退出。Actions在发送一个Service请求之后,它可以发送取消的命令,取消这个Service请求,可用于一些较长时间的Service场景。当然目前这种场景在Apollo自动驾驶系统里面比较少。
ROS Time
ROS系统供了一套time机制,这个time的时间源来自于PC机的系统时间。Rostime基于此提供了一个重要的功能点:仿真时间。
ROS Bags
ROS Bags有个比较重要的功能,是把实际车上调试的数据或者是把自动驾驶进行道路测试的原始传感器数据按一定格式录制到某个bag文件里。