
ROS
文章平均质量分 84
ROS学习
OceanStar的学习笔记
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
自动驾驶目录
资料https://blog.csdn.net/sinat_52032317/article/details/126924375。原创 2023-02-15 20:18:52 · 560 阅读 · 1 评论 -
FastDDs: ubuntu源码方式安装
创建IDL文件定义 HelloWorld 数据类型,它有两个元素:类型为uint32_t的index类型为std::string 的message。转载 2023-08-07 19:07:25 · 1508 阅读 · 0 评论 -
Apollo:源码分析之cyber/service_discovery/warehouse
本文中我们分析WarehouseBase,SingleValueWarehouse,MultiValueWarehouse这三个类。然后我们看下MultiValueWarehouse,它跟几乎一模一样,只是它的记事本是unordered_multimap的。通过Size()可以查询到当前仓库中已经放置了多少个角色(或者说身份证更合适?还可以通过GetAllRoles()获取仓库中的所有角色或者角色属性。可以看到功能就是:使用身份证key把role注册到仓库中。转载 2023-03-19 15:03:49 · 355 阅读 · 0 评论 -
Apollo:源码分析之cyber/service_discovery/role
我们从role_test.cc学习role.cc是什么实现的。转载 2023-03-19 14:12:56 · 318 阅读 · 0 评论 -
Apollo:源码分析之cyber/service_discovery/communication
前置知识: 目录分析participant_listenersubscriber_listener.cc。转载 2023-03-14 22:30:00 · 303 阅读 · 0 评论 -
Apollo:qos_profile.proto配置dds的服务质量
定义在:qos_profile.protoQos 基本上负责了 DDS 的所有配置,无论是心跳,消息可靠性,流量控制,还是安全配置,甚至包括通道配置,全是通过 Qos 来实现的。我们可以为发布器、订阅器、提供服务的服务器和客户端配置QoS。因为每个节点的Qos是可以单独配置的,所以如果配置的Qos互相不兼容,节点间的通信将无法建立。转载 2023-03-10 23:25:36 · 679 阅读 · 0 评论 -
Apollo:源码分析之cyber\blocker\blocker.h
我们从cyber\blocker\blocker_test.cc入手,分析一下cyber\blocker\blocker.h。转载 2023-03-10 21:51:04 · 569 阅读 · 0 评论 -
Apollo:源码分析之signal.h
文件:cyber/base/signal.h从这个类可以学到变参是怎么写的有两个成员变量关键函数:关键自傲与重写了operator(),如果满足要求,那么调用了Slot(…转载 2020-07-06 09:00:42 · 1221 阅读 · 0 评论 -
Apollo:源码分析之TopologyManager
cyber中有一个重要的部分叫做,其主要实现在下。节点间通过读和写端建立数据通路。以channel为边,这样可以得到一个数据流网络。由于节点可能会退出,订阅情况也可能发生改变,所以这个网络是动态的。因此需要对这个拓扑网络进行监控。主要负责这件事的数据结构是TopologyManager,其定义在cyber\service_discovery\topology_manager.h它是个单例,因为每个进程只要有一个来负责监控网络拓扑就可以了。转载 2023-03-09 23:40:08 · 443 阅读 · 0 评论 -
Apollo:Cyber RT拓扑发现概述
是网络中各个站点相互连接的形式,在中明确一点讲就是文件服务器、工作站等的连接方式。反映出网络中各实体的结构关系,是建设计算机网络的第一步,是实现各种网络协议的基础,它对网络的性能,系统的可靠性与通信费用都有很大的营销。在P2P网络通信中,我们需要解决的两个首要问题就是——和谁进行通信以及如何进行通信。不管通信方式是选择TCP还是UDP,我们都需要获取对端的一些标识,如IP和端口号等,从而建立连接。本文我们主要研究第一个问:参与者的标志以及参与者的相互发现。转载 2023-03-09 23:01:07 · 837 阅读 · 0 评论 -
Apollo:源码分析之Writer
我们先看看这个类的功能是什么。通过注释可以知道:这个类只有一个功能,那就是往由RoleAttributes中指定的通道写数据。转载 2023-03-09 22:34:19 · 290 阅读 · 0 评论 -
Apollo:源码分析之Transmitter
一个基类。转载 2023-03-09 20:19:00 · 255 阅读 · 0 评论 -
Apollo:源码分析之WriterBase
WriterBase是写者最底层的基类,它只有一个头文件cyber/node/writer_base.h。我们先来看cyber/node/writer_base.h中引入的头文件接着往下看通过注释,我们可以知道,对于WriterBase类然后我们看下它有哪些成员。转载 2023-03-09 20:14:02 · 204 阅读 · 0 评论 -
Apollo:源码分析之NodeChannelImpl
通过注释我们可以看到这个类的作用是:可以使用 NodeChannelImpl为节点创建一些与channel相连的对象,比如 Reader 和 Writer。转载 2023-03-09 20:10:58 · 212 阅读 · 0 评论 -
Apollo:DDS与Fast-RTPS
Publisher-Subscriber层:RTPS上的简化抽象Writer-Reader层:对RTPS断点的直接控制相较而言,后者更底层。两个层次的核心角色如下图所示:Publisher-Subscriber层为大多数开发者提供了一个方便的抽象。它允许定义与Topic关联的发布者和订阅者,以及传输Topic数据的简单方法。Writer-Reader层更接近于RTPS标准中定义的概念,并且可以进行更精细的控制,但是要求开发者直接与每个断点的历史记录缓存进行交互。转载 2023-03-09 19:34:04 · 2342 阅读 · 0 评论 -
Apollo:源码分析之cyber/node/node
在cyber/examples/common_component_example/channel_test_writer.c实例中,除初始化cyber框架外外,第一步就是需要创建一个节点接下来,我们分析一下这个接口到底干了些啥官方文档在cyber/doxy-docs/source/CyberRT_API_for_Developers.md目录下:接下来我们看下apollo::cyber::CreateNode这个接口到底是怎么实现的这个接口是在cyber/cyber.cc中实现的。原创 2023-03-07 20:19:28 · 830 阅读 · 0 评论 -
Apollo:planning_gflags.h
【代码】Apollo:planning_gflags.h。转载 2023-03-06 21:30:00 · 387 阅读 · 0 评论 -
Apollo:cyber/class_loader类加载器
类加载器的实现在"cyber/class_loader"目录中,通过"Poco/SharedLibrary.h"库来实现动态库的加载,现代操作系统几乎都提供了共享库动态加载的功能。linux提供了dlopen函数来加载共享库。十分粗略地讲,共享库加载就是加载共享库文件,根据函数名符号找到函数的地址,然后调用函数。poco库是一个跨平台的通用C++库,封装了不同平台上的共享库加载功能。关于Poco动态库的加载可以参考一个简单的类动态加载案例。转载 2023-03-07 21:00:00 · 1476 阅读 · 1 评论 -
Apollo:Planning源码分析之PlannerDispatcher
在 apollo\modules\planning\planner\planner_dispatcher.h 文件中定义了PlannerDispatcher类,用来根据预先设定的配置文件,选择合适的planner。转载 2023-03-07 19:54:12 · 326 阅读 · 0 评论 -
Apollo:循迹规划器RTKReplayPlanner
RTK Replay Planner 是基于录制的轨迹进行循迹的 Planner,是 Apollo 比较原始的一种 Planner。需要事先录制好设定的轨迹再来规划行车路线。录制的轨迹文件格式可以参考 modules/planning/data/garage.csv。转载 2023-03-06 15:58:22 · 713 阅读 · 0 评论 -
Apollo:基于车道线的OnLanePlanning
该语句根据config_的配置从分配器中初始化好的规划器选择一个返回,配置由modules/planning/conf/planning_config.pb.txt文件决定,默认配置为:PUBLIC_ROAD,即分配PublicRoadPlanner规划器。可以看到所有的工作都是用planner_factory完成的。规划器初始化是需要planner_->Init(config_)语句即可实现,不同的规划器具体实现有所不同,在LatticePlanner::Init()中未实现深入逻辑。转载 2023-03-06 23:00:00 · 1158 阅读 · 0 评论 -
Apollo:modules/planning/planner/planner.h学习
在 apollo/modules/planning/planner/planner.h 文件中,定义了2个类:Planner类和 PlannerWithReferenceLine类。转载 2023-03-07 19:54:21 · 525 阅读 · 1 评论 -
Apollo:routing模块中的routing_gflags.cc分析
例如,Routing模块的代码中通过FLAGS_routing_conf_file便可以读取到值“/apollo/modules/routing/conf/routing_config.pb.txt“。定义在modules/routing/common/routing_gflags.cc。这里就是定义了5个常量并指定了它们的值,同时还包含了每个常量的描述。将模块常用的几个常量定义在一起可以方便修改,也方便模块里面使用。这是Routing模块的配置文件路径。后文中我们会提到这个配置文件的作用。转载 2023-03-06 20:00:00 · 169 阅读 · 0 评论 -
Apollo:多项式曲线类
多项式曲线由于其微分、积分计算方便,在自动驾驶的路径规划、速度规划中有着广泛的应用,apollo平台Planning算法中也为此单独做一个功能类供上层调用。转载 2023-03-06 19:15:00 · 591 阅读 · 0 评论 -
Apollo:modules/planning/common/obstacle.cc分析
Obstacle类是apollo planning模块下modules\planning\common\obstacle.cc/.h实现从名字来看,是障碍物类,表示将一个障碍物的所有相关信息封装成这个类。转载 2023-03-06 22:30:00 · 1088 阅读 · 2 评论 -
Apollo:modules/planning/common/path/frenet_frame_path.cc
主要是通过FrenetFramePath类的成员函数GetNearest(sl_boundary)去Frenet路径上寻找离给定SL边界的最近点,根据单元测试可以知道FrenetFramePath类对象通常定义为指针对象。即。转载 2023-03-06 19:45:00 · 231 阅读 · 0 评论 -
Apollo:planning/common/path/PathData类代码
PathData主要是将路径Path以及相关的一些操作抽象成一个类,其包含path的xy坐标形式,sl坐标形式,这些pathpoint路径点形式间的相互转化,路径path的裁剪,以及根据指定s去路径path上插值出曲率曲率变化率航向角等信息,以及设定阻塞该路径path的静态障碍物id等。转载 2023-03-06 20:45:00 · 221 阅读 · 0 评论 -
Apollo:参考线信息类ReferenceLineInfo
障碍物分为横向障碍物和纵向障碍物。此时在Planning模块中,会多个apollo::planning::Obstacle对象分别对应每一个轨迹。ReferenceLine主要是静态数据(路径点和限速)的存储,而ReferenceLineInfo中会包含动态信息(障碍物)和更多逻辑。障碍物在Planning模块中通过apollo::planning::Obstacle描述。交通规则的应用是在TrafficDecider::Execute方法中执行的。这里的指针类型的参数就意味着方法实现可能会修改参数的值。转载 2023-03-06 11:14:47 · 1794 阅读 · 0 评论 -
Apollo:参考线提供者ReferenceLineProvider
这个类为planning模块提供平滑的参考线。转载 2023-03-06 19:45:00 · 1428 阅读 · 0 评论 -
Apollo:参考线ReferenceLine是如何定义的
位于modules/planning/reference_line/reference_line.h其定义如下。转载 2023-03-03 20:30:00 · 2224 阅读 · 2 评论 -
Apollo:参考线上的点ReferencePoint
它定义在math/vec2d.h中由注释可以知道,这个类实现了一个二维变量。它表示二维平面上的一个点可以看到,它有两个变量x和y。转载 2023-03-02 19:51:59 · 1105 阅读 · 2 评论 -
Apollo:Planning源码分析之PlanningComponent
可以看到规划(planning)模块的上游是Localization, Prediction, Routing模块,而下游是Control模块。Routing模块先规划出一条导航线路,然后Planning模块根据这条线路做局部优化,如果Planning模块发现短期规划的线路行不通(比如前面修路,或者错过了路口),会触发Routing模块重新规划线路,因此这两个模块的数据流是双向的。转载 2023-02-28 21:45:00 · 1666 阅读 · 0 评论 -
Apollo:Component概述
我们首先需要清楚一点,,每个component有且只能有一个node。对用户隐藏的部分包括component的"Initialize()"初始化,以及"Process()"调用执行。component还可以动态的加载和卸载,这也可以对应到在dreamviewer上动态的打开关系模块。转载 2018-11-16 17:47:47 · 823 阅读 · 0 评论 -
Apollo:Planning源码分析之PlanningBase
PlanningComponent是规划模块的类,而PlanningBase是规划模型的基类。NaviPlanning和OnLanePlanning是PlanningBase的两个派生类。由于是抽象类,planning_base.h里定义了大量的虚函数。成员函数中也只定义了Init()、FillPlanningPb(),而RunOnce()、Plan()、Name()是纯虚函数。它没有私有成员变量。所有成员变量都是protect的,其中比较重要的成员变量包括:重要成员函数。转载 2023-03-01 19:45:00 · 540 阅读 · 0 评论 -
Apollo:Lattice Planner
Lattice算法隶属于规划模块。规划模块以预测模块、routing模块、高精地图和定位的结果作为输入,通过算法,输出一条平稳、舒适、安全的轨迹,交给控制模块去执行。我们可以看到,规划模块在Apollo中是一个承上启下的重要模块。在Apollo中,规划算法的输出是一系列轨迹点连成的轨迹。每一个轨迹点包含位置,速度,加速的等信息。转载 2023-02-16 15:26:01 · 887 阅读 · 0 评论 -
Apollo:pnc map
PncMap是Planning and Control Map的缩写,即用于规划控制使用的地图。转载 2023-02-14 18:41:41 · 2269 阅读 · 0 评论 -
Apollo:参考线
我们先介绍一下参考线在整个Planning模块中所处的位置:决策规划模块负责生成车辆的行驶轨迹。要做到这一点,决策规划模块需要从宏观到局部经过三个层次来进行决策。第一个层次是Routing的搜索结果。Routing模块的输入是若干个按顺序需要达到的途经点(也可能只有一个起点和一个终点)。Routing模块根据地图的拓扑结构搜索出可达的完整路径来,这个路线的长度可能是几公里甚至几百公里。因此这个是最为宏观的数据。另外,Routing的搜索结果是相对固定的。转载 2023-02-14 14:38:08 · 3889 阅读 · 0 评论 -
Apollo:决策模块
apollo中的planning模块的场景选择是通过scenario-stage-task并利用状态机对车辆状态和规划功能进行维护的。planning模块是基于Scenario、Stage、Task这样的层次结构的,针对不同的场景设计不同的算法细节。相应地,一个Scenario包含多个Stage,一个Stage包含多个Task。scenario代表当前所处的场景,包括正常的路上行驶场景、停车场景、红绿灯路口场景等。转载 2023-02-16 13:26:17 · 3053 阅读 · 0 评论 -
Apollo:行为决策与状态机
在自动驾驶系统中,与人类驾驶员对比,感知模块相当于人类眼和耳朵;地图搜索路径和车道级别的路径规划,相当于人脑对道路的记忆和搜索;最后决策规划功能,相当于人类对道路环境和客观世界的反应和判断。规划技术就是包括地图搜索路径,以及道路决策和规划这部分重要的功能。转载 2023-02-16 15:57:20 · 1318 阅读 · 0 评论 -
Apollo:Routing模块
Routing模块正如其名称所示,其主要作用就是根据请求生成路由信息。地图数据请求,包括:开始和结束位置路由导航信息Routing模块的实现文件结构如下图所示:这里就是定义了5个常量并指定了它们的值,同时还包含了每个常量的描述。routing_conf_file:Routing模块配置文件的路径。routing_node_name:Routing模块的节点名称。min_length_for_lane_change:在变道前,在当前车道上行驶的最短距离。转载 2023-02-13 23:20:28 · 1438 阅读 · 0 评论