无人驾驶实践进阶——ROS

无人驾驶实践进阶——ROS

目录与Overview

目录:
无人驾驶实践进阶——ROS_第1张图片
Overview:
无人驾驶实践进阶——ROS_第2张图片

背景介绍

自动驾驶对于编程框架需求较高
ROS为一个机器人编程框架
无人驾驶实践进阶——ROS_第3张图片
无人驾驶实践进阶——ROS_第4张图片

概述

ROS历史

无人驾驶实践进阶——ROS_第5张图片

特点

松耦合,集中式管理的节点管理器(Master)
关键概念:nod(节点),Rescore(节点管理器),topic(节点通讯时的主题)
基于MSG格式

ROS nodes使用方法

无人驾驶实践进阶——ROS_第6张图片

ROS Topics使用方法

无人驾驶实践进阶——ROS_第7张图片

ROS Meggages使用方法

无人驾驶实践进阶——ROS_第8张图片
举例:
无人驾驶实践进阶——ROS_第9张图片

ROS编译系统

基于catkin
无人驾驶实践进阶——ROS_第10张图片
三个比较关键的文件夹:src,build,devel
src:存放源文件
build、devel:存放中间产生的临时文件
无人驾驶实践进阶——ROS_第11张图片
config:指令命令行的编译文件
无人驾驶实践进阶——ROS_第12张图片

ROS Example

无人驾驶实践进阶——ROS_第13张图片
无人驾驶实践进阶——ROS_第14张图片
无人驾驶实践进阶——ROS_第15张图片
无人驾驶实践进阶——ROS_第16张图片
在这里插入图片描述
无人驾驶实践进阶——ROS_第17张图片
无人驾驶实践进阶——ROS_第18张图片

ROS Launch

一个shell脚本文件
无人驾驶实践进阶——ROS_第19张图片
启动时可以提供参数配置:
无人驾驶实践进阶——ROS_第20张图片
example:
无人驾驶实践进阶——ROS_第21张图片

Gazebo Simulator

ROS提供的仿真工具,Gazebo底层实际上还是一个ROS包
无人驾驶实践进阶——ROS_第22张图片

References

无人驾驶实践进阶——ROS_第23张图片

Apollo ROS原理

ROS目前存在的问题
无人驾驶实践进阶——ROS_第24张图片

Apollo对ROS的改进

无人驾驶实践进阶——ROS_第25张图片

通信性能优化

无人驾驶实践进阶——ROS_第26张图片
无人驾驶实践进阶——ROS_第27张图片
百度Apollo做了一个基于共享内存的通信,来提高通信效率
减少了两次数据copy:用户态到内核态以及内核态到用户态
无人驾驶实践进阶——ROS_第28张图片
传感器下游会有很多节点订阅
无人驾驶实践进阶——ROS_第29张图片
通信优化结果
在这里插入图片描述

去中心化网络拓扑

ROS节点建立连接过程:
无人驾驶实践进阶——ROS_第30张图片
多机网络存在不足:
无人驾驶实践进阶——ROS_第31张图片
百度Apollo的改进:
无人驾驶实践进阶——ROS_第32张图片
使用RTPS服务实现P2P网络拓扑的原理:
无人驾驶实践进阶——ROS_第33张图片
无人驾驶实践进阶——ROS_第34张图片
无人驾驶实践进阶——ROS_第35张图片
无人驾驶实践进阶——ROS_第36张图片
无人驾驶实践进阶——ROS_第37张图片

数据兼容性扩展

Message模型:
无人驾驶实践进阶——ROS_第38张图片
ROS使用msg作为模块间的消息接口:
无人驾驶实践进阶——ROS_第39张图片
接口升级后,模块兼容性不足:
无人驾驶实践进阶——ROS_第40张图片
同时接口升级后,数据无法保留:
无人驾驶实践进阶——ROS_第41张图片
百度Apollo ROS对接口使用Protobuff消息格式进行转换:
无人驾驶实践进阶——ROS_第42张图片

ROS的相关基本概念

TF坐标系转换

目的:为了使每一个模块拼接时使坐标系对应
无人驾驶实践进阶——ROS_第43张图片
TF转换通过转换树来感知各个坐标系的位置
无人驾驶实践进阶——ROS_第44张图片
TF提供了一些基本功能,用于查看TF内的运行机制
无人驾驶实践进阶——ROS_第45张图片
TF提供了一个Plugin的插件
无人驾驶实践进阶——ROS_第46张图片
Plugin要结合Publisher或Subscriber的一些程序使用
无人驾驶实践进阶——ROS_第47张图片

RQT:ROS的可视化界面

无人驾驶实践进阶——ROS_第48张图片
rqt image:顶层传感器
无人驾驶实践进阶——ROS_第49张图片
rqt multiplot:二维数据可视化界面
无人驾驶实践进阶——ROS_第50张图片
rqt graph:图形化显示网络拓扑
无人驾驶实践进阶——ROS_第51张图片
rqt console:ROS日志系统
无人驾驶实践进阶——ROS_第52张图片
rqt logger level:实时调试输出数据
无人驾驶实践进阶——ROS_第53张图片

机器人开源架构

无人驾驶实践进阶——ROS_第54张图片
机器人架构的两个核心概念:Link,Joint
无人驾驶实践进阶——ROS_第55张图片
SDF:机器人的调试工具
无人驾驶实践进阶——ROS_第56张图片

ROS开发中的相关概念

ROS Services:ROS三种节点间的通讯方式
无人驾驶实践进阶——ROS_第57张图片
ROS Services举例:启动节点、注册节点
无人驾驶实践进阶——ROS_第58张图片
无人驾驶实践进阶——ROS_第59张图片
无人驾驶实践进阶——ROS_第60张图片
ROS结合C++的实际展示:
无人驾驶实践进阶——ROS_第61张图片
ROS提供的Action通讯方式:
无人驾驶实践进阶——ROS_第62张图片
ROS Time机制:机制来源于PC的系统时间,提供仿真时间功能
无人驾驶实践进阶——ROS_第63张图片
ROS Bags:提供回放功能
无人驾驶实践进阶——ROS_第64张图片
诊断程序:
无人驾驶实践进阶——ROS_第65张图片

Contact Information

无人驾驶实践进阶——ROS_第66张图片

ROS深入介绍

ROS Packages

文件组织方式以及信息存放
无人驾驶实践进阶——ROS_第67张图片
特别注意两个文件:package.xml与CmakeLists.xml
无人驾驶实践进阶——ROS_第68张图片
无人驾驶实践进阶——ROS_第69张图片
CMakeLists.xml举例:
无人驾驶实践进阶——ROS_第70张图片

Eclipse中建立ROS工程

无人驾驶实践进阶——ROS_第71张图片
无人驾驶实践进阶——ROS_第72张图片
无人驾驶实践进阶——ROS_第73张图片
无人驾驶实践进阶——ROS_第74张图片
无人驾驶实践进阶——ROS_第75张图片

ROS C++

C++ ROS最基本框架输出Hello World:
无人驾驶实践进阶——ROS_第76张图片
C++下的Node句柄指针:
无人驾驶实践进阶——ROS_第77张图片
C++下 ROS info:ROS日志系统
无人驾驶实践进阶——ROS_第78张图片
具体的写Subscriber的实例:
无人驾驶实践进阶——ROS_第79张图片
具体的写Publisher的实例:
无人驾驶实践进阶——ROS_第80张图片

ROS Parameter与Server通讯方式

ROS Server通讯方式
无人驾驶实践进阶——ROS_第81张图片
ROS Parameter通讯方式
无人驾驶实践进阶——ROS_第82张图片
API接口:
无人驾驶实践进阶——ROS_第83张图片

RViz

可视化工具
无人驾驶实践进阶——ROS_第84张图片
RViz提供了一些插件:
无人驾驶实践进阶——ROS_第85张图片

你可能感兴趣的:(人工智能实践,自动驾驶)