自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(4013)
  • 资源 (1)
  • 收藏
  • 关注

转载 golang:Kratos 微服务框架 API 工程化指南

工程

2023-03-24 22:11:27 708

转载 golang:深入理解 Go Modules 的 go.mod 与 go.sum

流行的现代编程语言一般都提供依赖库管理工具,如 Java 的 Maven 、Python 的 PIP、Node.js 的 NPM 和 Rust 的 Cargo 等。Go 最为一门新生代语言,自然也有其自己的库管理方式。

2023-03-20 12:26:56 2225

转载 Apollo:源码分析之cyber/service_discovery/warehouse

本文中我们分析WarehouseBase,SingleValueWarehouse,MultiValueWarehouse这三个类。然后我们看下MultiValueWarehouse,它跟几乎一模一样,只是它的记事本是unordered_multimap的。通过Size()可以查询到当前仓库中已经放置了多少个角色(或者说身份证更合适?还可以通过GetAllRoles()获取仓库中的所有角色或者角色属性。可以看到功能就是:使用身份证key把role注册到仓库中。

2023-03-19 15:03:49 292

转载 Apollo:源码分析之cyber/service_discovery/role

我们从role_test.cc学习role.cc是什么实现的。

2023-03-19 14:12:56 248

转载 Apollo:源码分析之cyber/service_discovery/communication

前置知识: 目录分析participant_listenersubscriber_listener.cc。

2023-03-14 22:30:00 236

转载 Apollo:qos_profile.proto配置dds的服务质量

定义在:qos_profile.protoQos 基本上负责了 DDS 的所有配置,无论是心跳,消息可靠性,流量控制,还是安全配置,甚至包括通道配置,全是通过 Qos 来实现的。我们可以为发布器、订阅器、提供服务的服务器和客户端配置QoS。因为每个节点的Qos是可以单独配置的,所以如果配置的Qos互相不兼容,节点间的通信将无法建立。

2023-03-10 23:25:36 538

转载 Apollo:源码分析之cyber\blocker\blocker.h

我们从cyber\blocker\blocker_test.cc入手,分析一下cyber\blocker\blocker.h。

2023-03-10 21:51:04 431

转载 Apollo:源码分析之TopologyManager

cyber中有一个重要的部分叫做,其主要实现在下。节点间通过读和写端建立数据通路。以channel为边,这样可以得到一个数据流网络。由于节点可能会退出,订阅情况也可能发生改变,所以这个网络是动态的。因此需要对这个拓扑网络进行监控。主要负责这件事的数据结构是TopologyManager,其定义在cyber\service_discovery\topology_manager.h它是个单例,因为每个进程只要有一个来负责监控网络拓扑就可以了。

2023-03-09 23:40:08 353

转载 Apollo:Cyber RT拓扑发现概述

是网络中各个站点相互连接的形式,在中明确一点讲就是文件服务器、工作站等的连接方式。反映出网络中各实体的结构关系,是建设计算机网络的第一步,是实现各种网络协议的基础,它对网络的性能,系统的可靠性与通信费用都有很大的营销。在P2P网络通信中,我们需要解决的两个首要问题就是——和谁进行通信以及如何进行通信。不管通信方式是选择TCP还是UDP,我们都需要获取对端的一些标识,如IP和端口号等,从而建立连接。本文我们主要研究第一个问:参与者的标志以及参与者的相互发现。

2023-03-09 23:01:07 657

转载 Apollo:源码分析之Writer

我们先看看这个类的功能是什么。通过注释可以知道:这个类只有一个功能,那就是往由RoleAttributes中指定的通道写数据。

2023-03-09 22:34:19 229

转载 Apollo:源码分析之Transmitter

一个基类。

2023-03-09 20:19:00 188

转载 Apollo:源码分析之WriterBase

WriterBase是写者最底层的基类,它只有一个头文件cyber/node/writer_base.h。我们先来看cyber/node/writer_base.h中引入的头文件接着往下看通过注释,我们可以知道,对于WriterBase类然后我们看下它有哪些成员。

2023-03-09 20:14:02 144

转载 Apollo:源码分析之NodeChannelImpl

通过注释我们可以看到这个类的作用是:可以使用 NodeChannelImpl为节点创建一些与channel相连的对象,比如 Reader 和 Writer。

2023-03-09 20:10:58 159

转载 Apollo:DDS与Fast-RTPS

Publisher-Subscriber层:RTPS上的简化抽象Writer-Reader层:对RTPS断点的直接控制相较而言,后者更底层。两个层次的核心角色如下图所示:Publisher-Subscriber层为大多数开发者提供了一个方便的抽象。它允许定义与Topic关联的发布者和订阅者,以及传输Topic数据的简单方法。Writer-Reader层更接近于RTPS标准中定义的概念,并且可以进行更精细的控制,但是要求开发者直接与每个断点的历史记录缓存进行交互。

2023-03-09 19:34:04 1759

转载 Apollo:cyber/class_loader类加载器

类加载器的实现在"cyber/class_loader"目录中,通过"Poco/SharedLibrary.h"库来实现动态库的加载,现代操作系统几乎都提供了共享库动态加载的功能。linux提供了dlopen函数来加载共享库。十分粗略地讲,共享库加载就是加载共享库文件,根据函数名符号找到函数的地址,然后调用函数。poco库是一个跨平台的通用C++库,封装了不同平台上的共享库加载功能。关于Poco动态库的加载可以参考一个简单的类动态加载案例。

2023-03-07 21:00:00 1080 1

原创 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 628

转载 Apollo:modules/planning/planner/planner.h学习

在 apollo/modules/planning/planner/planner.h 文件中,定义了2个类:Planner类和 PlannerWithReferenceLine类。

2023-03-07 19:54:21 439 1

转载 Apollo:Planning源码分析之PlannerDispatcher

在 apollo\modules\planning\planner\planner_dispatcher.h 文件中定义了PlannerDispatcher类,用来根据预先设定的配置文件,选择合适的planner。

2023-03-07 19:54:12 257

转载 Apollo:如何为apollo创建一个组件Component

本文的介绍主要基于cyber/examples/common_component_example中的例子.

2023-03-07 14:00:00 704 1

转载 Apollo:源码分析之cyber/component组件

Component的基类是ComponentBase(位于cyber/component/component_base.h),它有两个子类Component和TimerComponent,用户定义的组件都是继承这两个子类,然后需要实现其中的Init() & Proc()函数。

2023-03-07 09:48:29 645

转载 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 872

转载 Apollo:modules/planning/common/obstacle.cc分析

Obstacle类是apollo planning模块下modules\planning\common\obstacle.cc/.h实现从名字来看,是障碍物类,表示将一个障碍物的所有相关信息封装成这个类。

2023-03-06 22:30:00 866

转载 Apollo:planning_gflags.h

【代码】Apollo:planning_gflags.h。

2023-03-06 21:30:00 279

转载 Apollo:planning/common/path/PathData类代码

PathData主要是将路径Path以及相关的一些操作抽象成一个类,其包含path的xy坐标形式,sl坐标形式,这些pathpoint路径点形式间的相互转化,路径path的裁剪,以及根据指定s去路径path上插值出曲率曲率变化率航向角等信息,以及设定阻塞该路径path的静态障碍物id等。

2023-03-06 20:45:00 134

转载 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 128

转载 Apollo:参考线提供者ReferenceLineProvider

这个类为planning模块提供平滑的参考线。

2023-03-06 19:45:00 1168

转载 Apollo:modules/planning/common/path/frenet_frame_path.cc

主要是通过FrenetFramePath类的成员函数GetNearest(sl_boundary)去Frenet路径上寻找离给定SL边界的最近点,根据单元测试可以知道FrenetFramePath类对象通常定义为指针对象。即。

2023-03-06 19:45:00 179

转载 Apollo:多项式曲线类

多项式曲线由于其微分、积分计算方便,在自动驾驶的路径规划、速度规划中有着广泛的应用,apollo平台Planning算法中也为此单独做一个功能类供上层调用。

2023-03-06 19:15:00 469

转载 Apollo:循迹规划器RTKReplayPlanner

RTK Replay Planner 是基于录制的轨迹进行循迹的 Planner,是 Apollo 比较原始的一种 Planner。需要事先录制好设定的轨迹再来规划行车路线。录制的轨迹文件格式可以参考 modules/planning/data/garage.csv。

2023-03-06 15:58:22 529

转载 Apollo:参考线信息类ReferenceLineInfo

障碍物分为横向障碍物和纵向障碍物。此时在Planning模块中,会多个apollo::planning::Obstacle对象分别对应每一个轨迹。ReferenceLine主要是静态数据(路径点和限速)的存储,而ReferenceLineInfo中会包含动态信息(障碍物)和更多逻辑。障碍物在Planning模块中通过apollo::planning::Obstacle描述。交通规则的应用是在TrafficDecider::Execute方法中执行的。这里的指针类型的参数就意味着方法实现可能会修改参数的值。

2023-03-06 11:14:47 1477

转载 Apollo:参考线ReferenceLine是如何定义的

位于modules/planning/reference_line/reference_line.h其定义如下。

2023-03-03 20:30:00 1780 2

转载 数学:atan2

C++提供了两个求反正切的函数atan(y/x),atan2(y,x)

2023-03-03 18:30:00 560

转载 Apollo:参考线上的点ReferencePoint

它定义在math/vec2d.h中由注释可以知道,这个类实现了一个二维变量。它表示二维平面上的一个点可以看到,它有两个变量x和y。

2023-03-02 19:51:59 928 2

转载 Apollo:Planning源码分析之PlanningBase

PlanningComponent是规划模块的类,而PlanningBase是规划模型的基类。NaviPlanning和OnLanePlanning是PlanningBase的两个派生类。由于是抽象类,planning_base.h里定义了大量的虚函数。成员函数中也只定义了Init()、FillPlanningPb(),而RunOnce()、Plan()、Name()是纯虚函数。它没有私有成员变量。所有成员变量都是protect的,其中比较重要的成员变量包括:重要成员函数。

2023-03-01 19:45:00 417

转载 Apollo:Planning源码分析之PlanningComponent

可以看到规划(planning)模块的上游是Localization, Prediction, Routing模块,而下游是Control模块。Routing模块先规划出一条导航线路,然后Planning模块根据这条线路做局部优化,如果Planning模块发现短期规划的线路行不通(比如前面修路,或者错过了路口),会触发Routing模块重新规划线路,因此这两个模块的数据流是双向的。

2023-02-28 21:45:00 1321

转载 Apollo:CyberRT源码概览

在cyber.h 里面有一个CreateNode方法,里面返回了Node的引用。

2023-02-24 13:46:30 791

转载 Apollo:目录分析

apollo采用的是bazel来进行编译,相当于java中的maven。

2023-02-22 16:11:34 1620 1

转载 Apollo:Planning决策规划代码

的工程实现是三分策略:分场景,分阶段,分任务实现。即将运动规划问题,先划分到不同场景(泊车,左转等),再分阶段执行(减速,转弯灯),最后分任务执行。Apollo开源框架经过近几年的发展,已经开发了多种方案的规划器,此处采用基于车道线规划的LatticePlanner进行示例解读。

2023-02-20 17:14:20 1236 1

转载 Apollo:行为决策与状态机

在自动驾驶系统中,与人类驾驶员对比,感知模块相当于人类眼和耳朵;地图搜索路径和车道级别的路径规划,相当于人脑对道路的记忆和搜索;最后决策规划功能,相当于人类对道路环境和客观世界的反应和判断。规划技术就是包括地图搜索路径,以及道路决策和规划这部分重要的功能。

2023-02-16 15:57:20 1026

转载 Apollo:Lattice Planner

Lattice算法隶属于规划模块。规划模块以预测模块、routing模块、高精地图和定位的结果作为输入,通过算法,输出一条平稳、舒适、安全的轨迹,交给控制模块去执行。我们可以看到,规划模块在Apollo中是一个承上启下的重要模块。在Apollo中,规划算法的输出是一系列轨迹点连成的轨迹。每一个轨迹点包含位置,速度,加速的等信息。

2023-02-16 15:26:01 688

onvif摄像头对接鉴权

对应文章: https://blog.csdn.net/zhizhengguan/article/details/109325688

2022-08-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除