当前位置: 首页 > news >正文

Apollo学习——planning模块(3)之planning_base

planning_componentplanning_baseon_lane_planningnavi_planning 的关系


1. 模块关系总览

继承层次
  • PlanningComponent:Cyber RT 框架中的 入口组件,负责调度规划模块的输入输出和管理生命周期。
  • PlanningBase:规划算法的 抽象基类,定义通用接口(如 Init(), RunOnce())。
  • OnLanePlanningNaviPlanning:继承自 PlanningBase具体规划器实现,分别针对不同场景设计的动态多态子类。
调用关系
PlanningComponent → (通过指针调用) PlanningBase → OnLanaPlanning/NaviPlanning → 具体规划算法

2. 各模块作用详解

(1) PlanningComponent
  • 功能定位

    • 数据集成:接收上游模块的输入(如 PredictionObstacles 障碍物预测、LocalizationEstimate 定位数据、Chassis 底盘信息)。
    • 生命周期管理:通过 Init() 初始化规划器(选择 OnLanePlanningNaviPlanning),在 Proc() 中触发规划主流程。
    • 消息发布:输出规划轨迹 ADCTrajectory、路由请求 RoutingRequest 和学习数据 PlanningLearningData
  • 核心代码逻辑

    // 初始化时根据配置选择规划模式
    if (FLAGS_use_navigation_mode) {planning_base_ = std::make_unique<NaviPlanning>(injector_);
    } else {planning_base_ = std::make_unique<OnLanePlanning>(injector_);
    }
    
(2) PlanningBase
  • 功能定位

    • 抽象接口定义:提供规划算法的统一接口(如 RunOnce()Plan()),确保子类实现一致性。
    • 数据封装:管理 Frame 对象(包含车辆状态、环境信息)和 DependencyInjector(依赖注入容器,集成场景、车辆模型等)。
    • 多态支持:通过虚函数机制实现动态绑定,允许运行时切换 OnLanePlanningNaviPlanning
  • 关键成员

    • Frame:整合当前车辆状态、障碍物信息、参考线等上下文数据。
    • ReferenceLineInfo:存储参考线及其动态决策信息,供轨迹规划使用。
(3) OnLanePlanning
  • 功能定位

    • 高精地图规划:基于高精地图生成参考线,适用于 城市道路复杂交通场景(如红绿灯路口、人行道)。
    • 场景机制:内置双层状态机(Scenario + Stage),支持 LaneFollowScenario(车道保持)、TrafficLightProtectedScenario(交通灯路口)等场景。
    • 任务调度:调用 PublicRoadPlanner 等规划器,执行具体的路径优化算法(如 EM Planner、Lattice Planner)。
  • 典型流程

    1. 生成参考线(ReferenceLineProvider)。
    2. 场景切换判定(ScenarioManager::Update())。
    3. 执行场景内的多阶段任务(Stage + Task)。
(4) NaviPlanning
  • 功能定位

    • 相对地图规划:基于实时生成的相对地图(relative_map),适用于 高速公路 或其他 规则简单场景
    • 轻量化设计:简化参考线生成逻辑,依赖车道级导航信息而非全局高精地图。
    • 高效处理:优化算法复杂度,适合长距离、低动态障碍物的场景。
  • 与 OnLanePlanning 的差异

    特性OnLanePlanningNaviPlanning
    地图依赖高精地图相对地图(动态生成)
    适用场景城市道路、复杂交通高速公路、规则简单道路
    场景切换机制支持多场景状态机场景逻辑简化
    计算资源消耗较高较低

3. 数据流与功能协作

协作流程
  1. 输入触发
    • PlanningComponentProc() 由上游消息(如障碍物预测)触发,整合 LocalView 数据包。
  2. 规划执行
    • 调用 planning_base_->RunOnce(),由具体子类(OnLanePlanningNaviPlanning)实现规划逻辑。
  3. 场景与任务
    • OnLanePlanning 中通过 ScenarioManager 切换场景,执行阶段任务(如绕障、停车)。
    • NaviPlanning 直接生成参考线并规划轨迹,跳过复杂场景判定。
  4. 结果输出
    • 发布 ADCTrajectory 轨迹至控制模块,完成闭环。
关键交互点
  • DependencyInjector:注入全局依赖(如车辆状态、历史轨迹),供所有子类共享。
  • PlanningLearningData:在 RL_TEST 模式下收集强化学习训练数据。

总结

  • PlanningComponent 是入口,负责数据集成与调度。
  • PlanningBase 定义框架,实现多态支持。
  • OnLanePlanning 面向复杂场景,NaviPlanning 面向高速场景,二者通过继承实现功能差异化。

基类:planning_base

规划器(OnLanePlanning、NaviPlanning)需要重写的函数有

  //初始化virtual apollo::common::Status Init(const PlanningConfig& config);//可以不重写virtual std::string Name() const = 0;virtual void RunOnce(const LocalView& local_view, ADCTrajectory* const adc_trajectory) = 0;virtual apollo::common::Status Plan( const double current_time_stamp, const std::vector<common::TrajectoryPoint>& stitching_trajectory, ADCTrajectory* const trajectory) = 0;

不需要重写的有

  //判断规划是否完成bool IsPlanningFinished( const ADCTrajectory::TrajectoryType& current_trajectory_type) const;// 为轨迹添加设置路的左右边界bool GenerateWidthOfLane(const Vec2d& current_location, Vec2d& left_point, Vec2d& right_point);protected://规划模块生成轨迹数据时填充协议头信息(Header)的核心方法virtual void FillPlanningPb(const double timestamp, ADCTrajectory* const trajectory_pb);//加载规划器 默认使用apollo::planning::PublicRoadPlannervoid LoadPlanner();

代码解释

namespace apollo {
namespace planning {using apollo::common::Status;PlanningBase::PlanningBase(const std::shared_ptr<DependencyInjector>& injector): injector_(injector) {}PlanningBase::~PlanningBase() {}
//如果不重写,则使用基类Init,加载参数
Status PlanningBase::Init(const PlanningConfig& config) {injector_->planning_context()->Init();config_ = config;return Status::OK();
}
//判断规划状态是否完成
bool PlanningBase::IsPlanningFinished(const ADCTrajectory::TrajectoryType& current_trajectory_type) const {const auto frame = injector_->frame_history()->Latest();//判断当前轨迹类型是否为OPEN SPACE 泊车if (current_trajectory_type == apollo::planning::ADCTrajectory::OPEN_SPACE) {AINFO << "Current trajectory type is: OPEN SPACE";if (frame->open_space_info().openspace_planning_finish()) {AINFO << "OPEN SPACE: planning finished";return true;} else {AINFO << "OPEN SPACE: planning not finished";return false;}} else {// const auto frame = injector_->frame_history()->Latest();if (nullptr == frame || frame->reference_line_info().empty() ||nullptr == local_view_.planning_command) {AINFO << "Current reference point is empty;";return true;}const auto& reference_line_info = frame->reference_line_info().front();// Check if the ReferenceLineInfo is the last passage.const auto& reference_points =reference_line_info.reference_line().reference_points();if (reference_points.empty()) {AINFO << "Current reference points is empty;";return true;}const auto& last_reference_point = reference_points.back();const std::vector<hdmap::LaneWaypoint>& lane_way_points =last_reference_point.lane_waypoints();if (lane_way_points.empty()) {AINFO << "Last reference point is empty;";return true;}// Get the end lane way point.if (nullptr == frame->local_view().end_lane_way_point) {AINFO << "Current end lane way is empty;";return true;}bool is_has_passed_destination = injector_->planning_context()->planning_status().destination().has_passed_destination();AINFO << "Current passed destination:" << is_has_passed_destination;return is_has_passed_destination;}
}
// 规划模块生成轨迹数据时填充协议头信息(Header)的核心方法
// 时间戳同步:设置轨迹消息的全局时间戳
// 多传感器时间对齐:记录激光雷达、摄像头、雷达等传感器的原始数据时间戳
// 路由信息传递:复制当前路由请求的元数据
void PlanningBase::FillPlanningPb(const double timestamp,ADCTrajectory* const trajectory_pb) {trajectory_pb->mutable_header()->set_timestamp_sec(timestamp); // timestamp通常通过Clock::NowInSeconds()获取系统当前时间// 多传感器时间对齐if (local_view_.prediction_obstacles->has_header()) {trajectory_pb->mutable_header()->set_lidar_timestamp(local_view_.prediction_obstacles->header().lidar_timestamp());trajectory_pb->mutable_header()->set_camera_timestamp(local_view_.prediction_obstacles->header().camera_timestamp());trajectory_pb->mutable_header()->set_radar_timestamp(local_view_.prediction_obstacles->header().radar_timestamp());}// local_view_.planning_command包含来自Routing模块的全局路径请求trajectory_pb->mutable_routing_header()->CopyFrom(local_view_.planning_command->header());
}
//加载规划器默认apollo::planning::PublicRoadPlanner
void PlanningBase::LoadPlanner() {// Use PublicRoadPlanner as default Plannerstd::string planner_name = "apollo::planning::PublicRoadPlanner";if ("" != config_.planner()) {planner_name = config_.planner();planner_name = ConfigUtil::GetFullPlanningClassName(planner_name);}planner_ =cyber::plugin_manager::PluginManager::Instance()->CreateInstance<Planner>(planner_name);
}
//设置路的左右边界
bool PlanningBase::GenerateWidthOfLane(const Vec2d& current_location,Vec2d& left_point, Vec2d& right_point) {double left_width = 0, right_width = 0;const auto frame = injector_->frame_history()->Latest();if (nullptr == frame || frame->reference_line_info().empty()) {AINFO << "Reference lane is empty!";return false;}const auto& reference_line_info = frame->reference_line_info().front();// get current SLcommon::SLPoint current_sl;reference_line_info.reference_line().XYToSL(current_location, &current_sl);// Get the lane width of vehicle locationbool get_width_of_lane = reference_line_info.reference_line().GetLaneWidth(current_sl.s(), &left_width, &right_width);AINFO << "get_width_of_lane: " << get_width_of_lane<< ", left_width: " << left_width << ", right_width: " << right_width;if (get_width_of_lane && left_width != 0 && right_width != 0) {AINFO << "Get the width of lane successfully!";SLPoint sl_left_point, sl_right_point;sl_left_point.set_s(current_sl.s());sl_left_point.set_l(left_width);sl_right_point.set_s(current_sl.s());sl_right_point.set_l(-right_width);reference_line_info.reference_line().SLToXY(sl_left_point, &left_point);reference_line_info.reference_line().SLToXY(sl_right_point, &right_point);return true;} else {AINFO << "Failed to get the width of lane!";return false;}
}}  // namespace planning
}  // namespace apollo

相关文章:

Apollo学习——planning模块(3)之planning_base

planning_component、planning_base、on_lane_planning 和 navi_planning 的关系 1. 模块关系总览 继承层次 PlanningComponent&#xff1a;Cyber RT 框架中的 入口组件&#xff0c;负责调度规划模块的输入输出和管理生命周期。PlanningBase&#xff1a;规划算法的 抽象基类&…...

【SPIN】PROMELA语言编程入门基础语法(SPIN学习系列--1)

PROMELA&#xff08;Protocol Meta Language&#xff09;是一种用于描述和验证并发系统的形式化建模语言&#xff0c;主要与SPIN&#xff08;Simple Promela Interpreter&#xff09;模型检查器配合使用。本教程将基于JSPIN&#xff08;SPIN的Java图形化版本&#xff09;&#…...

Linux --systemctl损坏

systemctlSegmentation fault (core dumped) 提示这个 Ubuntu/Debian sudo apt-get update sudo apt-get --reinstall install systemdCentOS/RHEL sudo yum reinstall systemd # 或 CentOS 8 / RHEL 8 sudo dnf reinstall systemd...

Vue3+ElementPlus 开箱即用后台管理系统,支持白天黑夜主题切换,通用管理组件,

Vue3ElementPlus后台管理系统&#xff0c;支持白天黑夜主题切换&#xff0c;专为教育管理场景设计。主要功能包括用户管理&#xff08;管理员、教师、学生&#xff09;、课件资源管理&#xff08;课件列表、下载中心&#xff09;和数据统计&#xff08;使用情况、教学效率等&am…...

Seata源码—3.全局事务注解扫描器的初始化二

大纲 1.全局事务注解扫描器继承的父类与实现的接口 2.全局事务注解扫描器的核心变量 3.Spring容器初始化后初始化Seata客户端的源码 4.TM全局事务管理器客户端初始化的源码 5.TM组件的Netty网络通信客户端初始化源码 6.Seata框架的SPI动态扩展机制源码 7.向Seata客户端注…...

Android Coli 3 ImageView load two suit Bitmap thumb and formal,Kotlin(七)

Android Coli 3 ImageView load two suit Bitmap thumb and formal&#xff0c;Kotlin&#xff08;七&#xff09; 在 Android Coli 3 ImageView load two suit Bitmap thumb and formal&#xff0c;Kotlin&#xff08;六&#xff09;-CSDN博客 的基础上改进&#xff0c;主要是…...

快速搭建一个electron-vite项目

1. 初始化项目 在命令行中运行以下命令 npm create quick-start/electronlatest也可以通过附加命令行选项直接指定项目名称和你想要使用的模版。例如&#xff0c;要构建一个 Electron Vue 项目&#xff0c;运行: # npm 7&#xff0c;需要添加额外的 --&#xff1a; npm cre…...

Python网络请求利器:urllib库深度解析

一、urllib库概述 urllib是Python内置的HTTP请求库&#xff0c;无需额外安装即可使用。它由四个核心模块构成&#xff1a; ​​urllib.request​​&#xff1a;发起HTTP请求的核心模块​​urllib.error​​&#xff1a;处理请求异常&#xff08;如404、超时等&#xff09;​​…...

2025认证杯第二阶段数学建模B题:谣言在社交网络上的传播思路+模型+代码

2025认证杯数学建模第二阶段思路模型代码&#xff0c;详细内容见文末名片 一、引言 在当今数字化时代&#xff0c;社交网络已然成为人们生活中不可或缺的一部分。信息在社交网络上的传播速度犹如闪电&#xff0c;瞬间就能触及大量用户。然而&#xff0c;这也为谣言的滋生和扩…...

IP地址、端口、TCP介绍、socket介绍、程序中socket管理

1、IP地址&#xff1a;IP 地址就是 标识网络中设备的一个地址&#xff0c;好比现实生活中的家庭地址。IP 地址的作用是 标识网络中唯一的一台设备的&#xff0c;也就是说通过IP地址能够找到网络中某台设备。 2、端口&#xff1a;代表不同的进程,如下图&#xff1a; 3、socket:…...

leetcode0621. 任务调度器-medium

1 题目&#xff1a;任务调度器 官方标定难度&#xff1a;中 给你一个用字符数组 tasks 表示的 CPU 需要执行的任务列表&#xff0c;用字母 A 到 Z 表示&#xff0c;以及一个冷却时间 n。每个周期或时间间隔允许完成一项任务。任务可以按任何顺序完成&#xff0c;但有一个限制…...

中小型培训机构都用什么教务管理系统?

在教育培训行业快速发展的今天&#xff0c;中小型培训机构面临着学员管理复杂、课程体系多样化、教学效果难以量化等挑战。一个高效的教务管理系统已成为机构运营的核心支撑。本文将深入分析当前市场上适用于中小型培训机构的教务管理系统&#xff0c;重点介绍爱耕云这一专业解…...

centos7 基于yolov10的推理程序环境搭建

这篇文章的前提是系统显卡驱动已经安装 安装步骤参照前一篇文章centos7安装NVIDIA显卡 安装Anaconda 下载地址anaconda.com 需要注册账号获取下载地址 wget https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-x86_64.sh赋予权限 chmod ax Anaconda3-2024.10-1-…...

Web GIS可视化地图框架Leaflet、OpenLayers、Mapbox、Cesium、ArcGis for JavaScript

Mapbox、OpenLayers、Leaflet、ArcGIS for JavaScript和Cesium是五种常用的Web GIS地图框架&#xff0c;它们各有优缺点&#xff0c;适用于不同的场景。还有常见的3d库和高德地图、百度地图。 1. Mapbox 官网Mapbox Gl JS案列&#xff1a;https://docs.mapbox.com/mapbox-gl-…...

Kafka如何实现高性能

Kafka如何实现高性能 Kafka之所以能成为高性能消息系统的标杆&#xff0c;是通过多层次的架构设计和优化实现的。 一、存储层优化 1. 顺序I/O设计 日志结构存储&#xff1a;所有消息追加写入&#xff0c;避免磁盘随机写分段日志&#xff1a;将日志分为多个Segment文件&…...

如何通过partclone克隆Ubuntu 22系统

如何通过partclone克隆Ubuntu 22系统 一. 背景知识&#xff1a;为什么要克隆系统&#xff1f;二. 准备工作详解2.1 选择工具&#xff1a;为什么是partclone&#xff1f;2.2 制作定制化ISO的深层原因 三. 详细操作步骤3.1 环境准备阶段3.2 ISO改造关键步骤3.3 启动到Live环境3.4…...

语义化路径是什么意思,举例说明

下面的java代码输出结果是/a/b/../c/./a.txt/a/c/a.txt&#xff0c;语义化路径是什么意思呢&#xff1f;代码如下所示&#xff1a; import org.springframework.util.StringUtils; public class StringUtilsTest { /** 字符串处理 */ Test public void …...

Dockerfile构建镜像

Dockerfile 构建镜像 # 使用本地已下载的 java:8-alpine 镜像作为基础镜像 FROM java:8-alpine# 设置工作目录 WORKDIR /home/www/shop# 复制 JAR 文件到容器中 COPY ./fkshop-build.jar /home/www/shop/fkshop-build.jar# 复制配置文件&#xff08;如果需要&#xff09; COPY…...

vue3.0的name属性插件——vite-plugin-vue-setup-extend

安装 这个由于是在开发环境下的一个插件 帮助我们支持name属性 所以需要是-D npm i vite-plugin-vue-setup-extend -D在pasckjson中无法注释每个插件的用处 可以在vscode中下载一个JsonComments这样可以在json中添加注释方便日后维护和查阅API 引入 在vite.config.js中 im…...

gRPC为什么高性能

gRPC 之所以具备高性能的特性,主要得益于其底层设计中的多项关键技术优化。以下从协议、序列化、传输机制、并发模型等方面详细解析其高性能的原因: 1. 基于 HTTP/2 协议的核心优势 HTTP/2 是 gRPC 的传输基础,相较于 HTTP/1.x,它通过以下机制显著提升了效率: 多路复用(…...

进度管理高分论文

2022年&#xff0c;xx县开展紧密型县域医共体建设&#xff0c;将全县县、镇两级医疗机构组建成2家医共体&#xff0c;要求医共体内部实行行政、人员、财务、业务、信息、绩效、药械“七统一”管理。但是卫生系统整体信息化水平较低&#xff0c;业务系统互不相通&#xff0c;运营…...

每日算法刷题计划Day7 5.15:leetcode滑动窗口4道题,用时1h

一.定长滑动窗口 【套路】教你解决定长滑窗&#xff01;适用于所有定长滑窗题目&#xff01; 模版套路 1.题目描述 1.计算所有长度恰好为 k 的子串中&#xff0c;最多可以包含多少个元音字母 2.找出平均数最大且 长度为 k 的连续子数组&#xff0c;并输出该最大平均数。 3.…...

C++核心编程--1 内存分区模型

C程序执行时&#xff0c;内存可以划分为4部分 代码区&#xff1a;存放函数体的二进制代码 全局区&#xff1a;存放全局变量、静态变量、常量 栈区&#xff1a;局部变量、函数参数值&#xff0c;编译器自动分配和释放 堆区&#xff1a;程序员自己分配和释放 1.1 程序运行前…...

产品更新丨谷云科技 iPaaS 集成平台 V7.5 版本发布

五月&#xff0c;谷云科技 iPaaS 集成平台保持月度更新&#xff0c; V7.5 版本于近日正式发布。我们一起来看看新版本有哪些升级和优化。 核心新增功能&#xff1a;深化API治理&#xff0c;释放连接价值 API网关&#xff1a;全链路可控&#xff0c;精准管控业务状态 业务状态…...

【AI论文】对抗性后期训练快速文本到音频生成

摘要&#xff1a;文本到音频系统虽然性能不断提高&#xff0c;但在推理时速度很慢&#xff0c;因此对于许多创意应用来说&#xff0c;它们的延迟是不切实际的。 我们提出了对抗相对对比&#xff08;ARC&#xff09;后训练&#xff0c;这是第一个不基于蒸馏的扩散/流模型的对抗加…...

欧拉计划 Project Euler 73(分数有范围计数)题解

欧拉计划 Project Euler 73 题解 题干分数有范围计数 思路code 题干 分数有范围计数 考虑形如 n d \frac{n}{d} dn​的分数&#xff0c;其中 n n n和 d d d均为正整数。如果 n < d n<d n<d且其最大公约数为1&#xff0c;则称该分数为最简真分数。 将所有 d ≤ 8 d\l…...

Quic如何实现udp可靠传输

QUIC&#xff08;Quick UDP Internet Connections&#xff09;是由 Google 设计并被 IETF 标准化的传输层协议&#xff0c;它基于 UDP 实现&#xff0c;但提供了类似 TCP 的可靠性和更高级的功能&#xff08;如多路复用、0-RTT 握手、TLS 加密等&#xff09;。 尽管 UDP 是不可…...

本地文件操作 MCP (多通道处理) 使用案例

## 概述 文件操作 MCP (Multi-Channel Processing) 是一种用于高效处理本地文件的框架和库&#xff0c;它提供了并行处理、批量操作、监控和异常处理等功能。通过多通道架构&#xff0c;MCP 能够显著提高大规模文件操作的效率&#xff0c;特别适用于需要处理大量文件或大型文件…...

Blender 入门教程(三):骨骼绑定

一、前言 不知道大家有没有玩过一些单机游戏的 Mod&#xff0c;比如《侠盗猎车》里主角变成奥特曼&#xff0c;各种新能源汽车乱入等等。 这些都是别人对原有模型就行修改换皮&#xff0c;并重新绑定骨骼完成的&#xff0c;所以如果会了骨骼绑定后&#xff0c;你也就可以自己…...

Java 异常处理之 BufferOverflowException(BufferOverflowException 概述、常见发生场景、避免策略)

一、BufferOverflowException 概述 BufferOverflowException 是 Java NIO 包中的一个运行时异常&#xff0c;是 RuntimeException 的子类 public class BufferOverflowException extends RuntimeException {... }# 继承关系java.lang.Object-> java.lang.Throwable-> j…...

密码学实验:凯撒密码

密码学实验&#xff1a;凯撒密码 一、实验目的 掌握凯撒密码的数学原理&#xff1a;理解字符移位与模运算的结合&#xff0c;实现加解密算法。理解暴力破解本质&#xff1a;通过穷举有限密钥空间&#xff0c;掌握利用语言特征破解密文的方法。编程实践&#xff1a;用Python实…...

C40-指针

一 指针的引入 什么是指针:指针是一个变量&#xff0c;其值是另一个变量的内存地址 简单的使用地址输出一个变量: 代码示例 #include <stdio.h> int main() {int a10;printf("a的地址是:%p\n",&a);printf("a%d\n",*(&a)); //*号是取值运算符…...

Cloudflare防火墙拦截谷歌爬虫|导致收录失败怎么解决?

许多站长发现网站突然从谷歌搜索结果中“消失”&#xff0c;背后很可能是Cloudflare防火墙误拦截了谷歌爬虫&#xff08;Googlebot&#xff09;&#xff0c;导致搜索引擎无法正常抓取页面。 由于Cloudflare默认的防护规则较为严格&#xff0c;尤其是针对高频访问的爬虫IP&…...

3.3 掌握RDD分区

本实战任务旨在掌握Spark RDD 的分区操作&#xff0c;包括理解 RDD 分区的概念、作用、分区数量的确定原则以及如何通过自定义分区器来优化数据处理。通过创建一个 Maven 项目并编写 Scala 代码&#xff0c;实现了一个自定义的科目分区器 SubjectPartitioner&#xff0c;该分区…...

以项目的方式学QT开发(二)——超详细讲解(120000多字详细讲解,涵盖qt大量知识)逐步更新!

API 描述 函数原型 参数说明 push_back() 在 list 尾部 添加一个元素 void push_back(const T& value); value &#xff1a;要添 加到尾部的元 素 这个示例演示了如何创建 std::list 容器&#xff0c;并对其进行插入、删除和迭代操作。在实际应用中&am…...

linux备份与同步工具rsync

版权声明&#xff1a;原创作品&#xff0c;请勿转载&#xff01; 文章目录 版权声明&#xff1a;原创作品&#xff0c;请勿转载&#xff01; 实验环境介绍&#xff1a; 1.工具介绍 2.详细介绍 2.1 本地模式&#xff08;用得少&#xff09; 2.2 远程模式 2.3 守护进程模式…...

Ascend的aclgraph(九)AclConcreteGraph:e2e执行aclgraph

1回顾 前面的几章内容探讨了aclgraph运行过程中的涉及到的关键模块和技术。本章节将前面涉及到的模块串联起来&#xff0c;对aclgraph形成一个端到端的了解。 先给出端到端运行的代码&#xff0c;如下&#xff1a; import torch import torch_npu import torchair import log…...

2025 OceanBase 开发者大会全议程指南

5 月 17 日&#xff0c;第三届 OceanBase 开发者大会将在广州举办。 我们邀请数据库领军者与AI实践先锋&#xff0c;与开发者一起探讨数据库与 AI 协同创新的技术趋势&#xff0c;面对面交流 OceanBase 在 TP、AP、KV 及 AI 能力上的最新进展&#xff0c;深度体验“打破技术栈…...

【深度学习之四】知识蒸馏综述提炼

知识蒸馏综述提炼 目录 知识蒸馏综述提炼 前言 参考文献 一、什么是知识蒸馏&#xff1f; 二、为什么要知识蒸馏&#xff1f; 三、一点点理论 四、知识蒸馏代码 总结 前言 知识蒸馏作为一种新兴的、通用的模型压缩和迁移学习架构&#xff0c;在最近几年展现出蓬勃的活力…...

Java大师成长计划之第23天:Spring生态与微服务架构之服务发现与注册中心

&#x1f4e2; 友情提示&#xff1a; 本文由银河易创AI&#xff08;https://ai.eaigx.com&#xff09;平台gpt-4-turbo模型辅助创作完成&#xff0c;旨在提供灵感参考与技术分享&#xff0c;文中关键数据、代码与结论建议通过官方渠道验证。 在微服务架构中&#xff0c;服务发现…...

list简单模拟实现

成员变量迭代器&#xff08;重点&#xff09;ListIterator运算符重载begin、end 插入、删除inserterase头插、尾插、头删、尾删 operator->const_iterator拷贝构造operator析构函数完整代码 由于前面已经模拟实现了vector&#xff0c;所以这里关于一些函数实现就不会讲的过于…...

undefined reference to `typeinfo for DeviceAllocator‘

出现“undefined reference to typeinfo”链接错误的原因及解决方法如下&#xff1a; class DeviceAllocator { public:explicit DeviceAllocator(DeviceType device_type){};virtual void* allocate(size_t n) 0;virtual void deallocate(void* p) 0;~DeviceAllocator() d…...

动态规划问题 -- 多状态模型(买股票的最佳时机II)

目录 动态规划分析问题五步曲题目概述利用状态机推导状态转移方程式代码编写 动态规划分析问题五步曲 不清楚动态规划分析问题是哪关键的五步的少年们可以移步到 链接: 动态规划算法基础 这篇文章非常详细的介绍了动态规划算法是如何分析和解决问题的 题目概述 链接: 买股票的最…...

【落羽的落羽 C++】进一步认识模板

文章目录 一、非类型模板参数二、模板的特化1. 函数模板特化2. 类模板特化 三、模板的编译分离 一、非类型模板参数 模板参数可以分为类型参数和非类型参数。我们之前使用的都是类型参数&#xff0c;即出现在模板参数列表中&#xff0c;跟在class或typename之类的参数类型名称…...

Java爬虫能处理京东商品数据吗?

Java爬虫完全可以处理京东商品数据。通过Java爬虫技术&#xff0c;可以高效地获取京东商品的详细信息&#xff0c;包括商品名称、价格、图片、描述等。这些信息对于市场分析、选品上架、库存管理和价格策略制定等方面具有重要价值。以下是一个完整的Java爬虫示例&#xff0c;展…...

#跟着若城学鸿蒙# web篇-初探

前言 先看下官方介绍&#xff0c;这里总结了比较重要的几点Web组件基础&#xff1a;加载与渲染网页全面解析Web组件是现代应用开发中不可或缺的重要元素&#xff0c;它允许开发者在原生应用中无缝集成Web内容。本文将全面介绍Web组件的基本功能&#xff0c;包括多种内容加载方…...

Top-p采样:解锁语言模型的创意之门

Top - p采样 是什么&#xff1a;核采样&#xff1a;排序&#xff0c;累计到0.7&#xff0c;随机选择 在自然语言生成和大规模语言模型推理中&#xff0c;Top - p采样&#xff08;又叫核采样&#xff0c;Nucleus Sampling&#xff09;是一种基于累积概率的采样策略。 Top - p介…...

周赛好题推荐

这周周赛很有质量的&#xff0c;上了一个很有意思的数学题目&#xff0c;推了半天..... 给定一个区间[l,r]&#xff0c;求出区间内所有满足x mod 2^i !k的所有正整数&#xff08;最后全部进行异或&#xff09; 首先我们不妨先算出[l,r]区间所有数字的异或&#xff0c;然后在算…...

【RabbitMQ】实现RPC通信的完整指南

文章目录 RPC 通信创建相关队列客户端代码声明队列发送请求接收响应完整代码 服务端代码设置同时只能获取一个消息接收消息完整代码 运行程序启动客户端启动服务端 RPC 通信 RPC (Remote Procedure Call), 即远过程调用。它是一种通过网络从远程计算机上请求服务&#xff0c;而…...

CK3588下安装linuxdeployqt qt6 arm64

参考资料&#xff1a; Linux —— linuxdeployqt源码编译与打包&#xff08;含出错解决&#xff09; linux cp指令报错&#xff1a;cp: -r not specified&#xff1b; cp: omitting directory ‘xxx‘&#xff08;需要加-r递归拷贝&#xff09; CMake Error at /usr/lib/x86_64…...