- ROS概述
- Apollo ROS原理
- ROS深入介绍
- Apollo框架使用
目录
ROS概述
从不同模块的数据交互 到车的决策控制
ROS是基于消息机制的,从子模块都构建构成
ROS Overview
机器人操作系统的历史
松耦合、点对点,嵌入式,跨语言、轻量级、开源框架
核心概念
节点(node):算法模块(感知)—— 不同节点相互独立、相互通信
节点管理器(ROScore):cpu 节点之间建立通信连接
主题(topic):包含各种信息 通讯时候的不同数据类型文件
基础message 类型
首先启动 ROScore
- Roslaunch 启动各个节点
- Talker 启动发送节点程序
- Rostopic info 启动主题订阅
- listener 启动接受信息
编译系统——基于cmake
launch文件
Gazebo 仿真工具
Apollo ROS原理
ROS能否满足工程需求?
- 大数据量传输性能瓶颈
- 单中心的网络存在单点风险
- 数据格式缺乏后向兼容
通信性能优化
由于通信的性能问题,大数据量会在通信时会有延迟。
在自动驾驶中,一个传感器数据(camera)可能会有很多的节点去订阅。
之前的ROS在多个订阅 会做很多的复制。
Apollo 共享内存减少了多次数据copy。
去中心化网络拓扑
原生ROS以Master为中心(过程太多,建立联系时太依赖master)(在多机系统更加不适应)
Apollo建立一个点对点的复杂网络拓扑
RTPS服务 (通知各个节点,有新的节点加入/退出)
流程
数据兼容性扩展
原生ROS使用 Message 描述组件接口语言(接口升级,接口难以兼容)
Apollo引入一个新的消息买描述格式 Protobuf (tensorflow)
ROS深入介绍
ROS packages基本组成方式
package 定义了可执行文件中依赖的一些库,软件版本,开发信息
CMakeLists怎么去编译ROS工程
hello world
nodehaddle 句柄指针
subscriber例子
接收方。使用回调函数
Publisher例子
每个节点都是复杂的交互过程,既有发送,又有接收
其他通讯方式
service
parameter
主动去get 参数
可视化工具
rviz 也可以当作其中的一个节点
Apollo框架使用
TF坐标系转换
节点是松耦合的关系,在系统中是独立运行的。每个节点有其自己的坐标系。
相对独立的坐标系,转化到一个坐标系
控制行命令 TF转换树 可视化
RQT用户接口
R QT 可视化
常用工具
rqt_image_view 实时看camera中的图像数据
rqt_multiplot(转化为二维坐标系)
rqt_graph 节点显示(tensorflow)
日志系统
机器人模型(URDF)
统一机器人格式描述语言
仿真中的描述(SDF)
其他使用比较广泛的概念
Services(list call)
Actions(多一个取消的功能)
Time
Bags(录制数据,比较、)
Debug