自动驾驶之轨迹规划3——Apollo ROS公开课

Apollo ROS详解:通信优化与分布式框架
本文深入探讨了Apollo中对ROS的优化,包括通过共享内存提升通信性能,减少数据拷贝,以及去中心化的网络拓扑,增强了系统的稳定性和效率。此外,介绍了ROS的组件如节点、话题、服务、参数和可视化工具,并强调了Apollo在兼容性和异常恢复机制上的改进。

前言

本课程由Apollo资深工程师是夏黎明主讲,一共是7堂课,属于框架性讲解,需课后自行补充理论知识。下面是随堂记录。

Apollo_ROS背景介绍

  1. 课程目录
    在这里插入图片描述
  2. 背景
    在这里插入图片描述
    为了应对这么复杂的系统,因此选择了ROS:它是一种基于消息传递的分布式多进程框架。
    在这里插入图片描述

ROS概述

  1. 本节课程目录
    在这里插入图片描述
    在这里插入图片描述
  2. ROS比较明显的几个特征:点对点通信,支持分布式,跨语言(有专门的订阅接口),轻量级,开源。
  3. ROS的安装
    在这里插入图片描述
  4. ROS的master
    在这里插入图片描述
    节点的启动没有先后关系(但ROScore要在所有节点之前启动),如perception先启动,向ROScore(roscore作用是启动一个节点管理器(rosmaster),它是ros节点运行的前提,所以在执行启动ros节点前,第一步都需要执行roscore。)注册,并说明会发出obstacles的topic,然后planning启动向ROScore注册名说明会接收obstacles的topic。然后ROScore会向planning说明有个叫perception的节点发出该消息,planning则会寻找perception并与之握手,握手成功后通信建立(基于TCP协议)。MSG定义了通信的数据格式:基本类型和自定义类型。
    在这里插入图片描述
  5. ROS的node

在这里插入图片描述
6. ROS的topic:/topic是全局变量,所有人都可以看到这个topic。如果不加/,在发送时会自动在topic前加上发送node的namespace,以防命名冲突。
在这里插入图片描述
7. ROS的messages
在这里插入图片描述
8. 为解决太多节点启动(需要用启动窗口挨个启动),Apollo提出了ROSlaunch描述文件,用于描述所有节点启动行为。它会做两件事情:找到描述文件中节点的位置,并启动该节点。该描述文件中虽不包含启动ROScore,但ROSlaunch启动时会先检测ROScore,如果未启动则会自行启动core。后面会举个实例(序号11)
9. 实例演示
在这里插入图片描述
启动单独节点(如下图中的talker,如发送obstacles的perception),启动单独节点,除了通过ROScore启动外,还可以用rosrun命令,前面是package包,后面是可执行文件。
在这里插入图片描述
ROSout是ROScore启动时默认启动的隐藏节点,是记录日志相关的节点。并且每个节点会默认启动两个service:get_loggers和set_logger_level,为了设置节点的日志层级。
在这里插入图片描述
Rostopic echo相当其启用了一个lisener节点来展示某个topic中MSG的具体信息,hz是统计发送频率(一般激光雷达是10hz)
在这里插入图片描述
在这里插入图片描述
可以模拟发送节点,发送自己想要的topic
在这里插入图片描述
10. ROS所采用的编译系统,它是基于cmake的一套自己的catkin编译系统,catkin底层就是一些cmake的封装。类似Cpp工程的建立,使用catkin create建立一个节点工程包(会生成一个文件夹如src文件夹放cpp,cmakelist文件夹放整个package编译的过程)。使用catkin build可以编译工程包,该命令执行后会多两个文件

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值