自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 资源 (6)
  • 收藏
  • 关注

原创 自动驾驶之轨迹规划8——Apollo参考线和轨迹

概述本文主要讲解决策规划模块中是如何生成参考线和行车轨迹供车辆行驶的,参考线和轨迹直接影响了自动驾驶车辆对于方向和速度的控制。reference line怎么生成出来的?和rounting啥关系?Apollo是使用A star算法。route模块里A*算法的实现:节点定义在modules/routing/graph/topo_node.h文件,graph目录下还有计算用到的边和图的定义。主要算法实现在modules/routing/strategy/a_star_strategy.cc文件。re

2023-07-27 15:49:42 3644

原创 Python读取和处理mf4

Python读取和处理mf4# 处理mf4数据# 20220530 Fang qifei# 引入库文件from asammdf import MDF # 用于处理MDF文件import os # 用于获取文件路径import numpy as np # 用于数学处理import matplotlib.pyplot as plt # 用于绘图# 读取mf4path = 'C:/1_Project/2_DF/G59/6_VehicleTest/G59_

2022-05-30 20:29:57 4103 1

原创 控制算法简析8——被控系统 differential equation 分析

2022-02-20 14:21:32 821

原创 C++理论梳理10——部分Apollo代码关键字

finalC++11引入了关键字final,按官方的标准是该关键字是用来标识虚函数不能在子类中被覆盖(override),或一个类不能被继承。用法如下:struct Base{ virtual void foo();};struct A : Base{ void foo() final; // Base::foo 被覆盖而 A::foo 是最终覆盖函数 void bar() final; // 错误:非虚函数不能被覆盖或是 final};struct B fina

2021-11-09 14:48:09 1551 1

原创 C++理论梳理9——类之间的关系

概述类间关系是面向对象精华内容的基础,常见的类间关系分为六种:泛化 (generalization)实现 (Implementation)依赖 (Dependence)关联 (Association)聚合 (Aggregation)组合 (Composite)继承(泛化)泛化这个关系,说的通俗点就是继承。继承是面向对象的三大特征之一,是一种最能体现面向对象代码复用的类关系,对于继承,可以使用"is a"来表示,比如,小轿车(类B)"is a"车(类A),是对车(类A)的进一步刻画,那么

2021-11-09 14:13:56 1448

原创 控制算法简析8——被控系统的稳定性分析

概述本系列前几篇文章前面说了这么多关于控制工程的东西,还引入了ACC的被控系统分析,接下来想要针对得到的被控系统,分析一个很重要的问题:如何判定该被控系统是否稳定?该系统是发散还是收敛?什么叫稳定性稳定性是系统在收到扰动后回到正常状态的能力,这里扰动和响应都是有界的,因此也被称作 Bounded-input-bounded-output stability。稳定具体可分为三类:稳定,临界稳定和不稳定。下图就很好的解释了稳定、临界稳定和不稳定系统的区别。实际上,稳定是针对整个系统而言的,我们可以加入

2021-11-01 14:34:17 1539

原创 控制算法简析7——ACC被控系统分析

物理模型建立在现代车辆的反馈控制系统中,自动巡航控制一个典型的例子。巡航控制系统的目的是在不受外界干扰(如风或坡度变化)的情况下保持恒定的车速。可以通过测量测速,将其与期望速度或参考速度进行比较,并根据控制规律自动调节油门刹车来实现。这里我们考虑一个简单的车辆动力学模型,如上面的受力分析图。质量为m的车辆收到驱动力F的作用,阻力则为在道路阻力、坡度阻力、轮胎阻力和风阻等,对于这个简化的模型,我们将假定我们可以直接控制该力,而忽略产生该力的动力总成,轮胎等影响。假定由于滚动摩擦和风阻而产生的阻力随车速线

2021-09-28 15:19:06 2221

转载 控制算法简析6——PID的控制工程原理

承接上一篇(控制算法简析5——被控系统分析),也和《控制算法简析1——PID和负反馈的数学原理》有呼应关系。介绍完系统建模和基本的系统分析后,我们已经了解了被控对象的特性,这时,就需要用一个合理的控制器,让这个被控对象在该控制器下按照指定的给定来执行,最为广泛使用的那就是PID控制器了。在本教程中,我们将介绍一个简单而通用的反馈补偿结构,比例积分微分(PID)控制器,PID控制器之所以被广泛采用,是因为它非常容易理解并且非常有效,工程师不需要太理解控制论,只需要理解积分和微分就可以实施控制系统。此外,即

2021-09-28 13:26:24 1441

转载 控制算法简析5——被控系统分析

承接上一篇(控制教程 —— 介绍篇:1.建模)。 一旦获得了系统的状态空间或传递函数形式的数学模型,我们便可以分析这些模型来预测系统在时域和频域中的动态响应。通常将控制系统设计为高稳定性,高响应速度,低稳态误差,以及减小振荡。也就是“稳准快”。在本节中,我们将展示如何从系统模型中确定...

2021-09-27 15:43:58 9237

转载 控制算法简析4——物理世界与控制工程

介绍本文转自控制教程 —— 介绍篇:1.建模,框架主要是来自于密歇根大学的教程网站来,中间根据自己的理解做了增删补充。正文我们所要考察的系统是能够用外力作用来有目的地影响其运动行为的系统。这种系统叫做被控系统,或被控对象,简称对象。通常控制系统设计过程的第一步是要建立其数学模型,这些模型可以从物理定律或实验数据中得出。本节中,将用状态空间和传递函数来表示动态系统,并以一些机械和电气系统的例子来介绍建模的基本方法,并展示如何在MATLAB中生成这些模型来做进一步的分析。本教程中使用的主要MATLAB命

2021-09-26 12:36:40 933

原创 自动驾驶之轨迹规划7——A Real-Time Motion Planner with Trajectory Optimization for Autonomous Vehicles文献阅读

概述最近找了一些EM Motion Planner相关的参考文献阅读了一下以便深刻理解。1. A Real-Time Motion Planner with Trajectory Optimization for Autonomous VehiclesAbstract规划器首先把规划空间离散化,并根据一组代价函数搜索最优轨迹,然后对轨迹的path和speed进行迭代优化。文中提出了一种“post-optimization”的方法,可以弥补离散化难以求出最优解的问题(离散越密,越接近最优解),并可

2021-07-04 17:19:47 2502

转载 C++理论梳理7——虚函数

在学习C++的过程中我们经常会用到.和::和:和->,在此整理一下这些常用符号的区别。A.B则A为对象或者结构体;A->B则A为指针,->是成员提取,A->B是提取A中的成员B,A只能是指向类、结构、联合的指针;::是作用域运算符,A::B表示作用域A中的名称B,A可以是名字空间、类、结构;:一般用来表示继承。转自:https://blog.csdn.net/k_koris/article/details/80469956...

2021-06-30 10:56:58 601

原创 自动驾驶之轨迹规划6——Apollo EM Motion Planner

1. 路径规划P731.1 路径搜索DP(dynamic programming)又称动态规划,可以使指数级别的计算耗时转换成多项式级别的耗时。具体大家可以找网上关于DP原理的介绍,有很多的。这里简要说明一下,其基本思路是“2. 速度规划...

2021-06-26 21:03:51 12393 2

原创 Simulink自动代码生成-附录1——通过编程快速管理Data Dictionary

1. 概述自动代码生成的其中一个重点就是数据管理,实际上就是针对于model中的数据对象(signal、state和parameter),配置其初始值、值范围、数据类型、可调性以及其他特征等。2. 数据字典概述这里先讲一下matlab的数据管理思想框架。我之前的文章说了,MBD开发实际是基于3块:model、data和config,其中data在matlab中基本分为3类:signal、state和parameter。matlab中内置了一个包:Simulink,该包内定义了两个数据类,即 Simu

2021-06-19 22:44:14 2627

转载 控制算法简析3——LKA中PID控制的error选取

自动驾驶车辆总是在对应的高精地图车道里面去行驶的, 因此我们在建立动力学的时候需要增添状态变量考虑车辆相对于车道的位置, 首先我们考虑直线的情况https://blog.csdn.net/weixin_42143018/article/details/105833290...

2021-04-21 20:22:22 1818

原创 自动驾驶之轨迹规划2——高速超车场景下轨迹规划的量产方案

最近工作太忙了,导致好久没有更新,计划尽量本周更新,本篇整理德企大厂量产状态的高速超车场景下轨迹规划方案。

2021-04-15 19:39:38 2483 3

原创 Simulink模型测试1——基于模型的设计的测试概述

概述本系列整理simulink的单元测试,基本内容如下:基于模型的设计的测试概述开发测试用例分析测试结果建立test suites本篇先整理第一个:基于模型的设计的测试概述。模型测试的类型simulink模型测试分为两种:simulation-based testing和formal verification。simulation-based testing需要test case,验证模型的输出结果是否符合预期,一般用于认可测试。formal verification无需test

2021-03-28 18:32:25 3136

原创 自动驾驶之轨迹规划5——Apollo规划中的离散点曲线平滑数学原理

1. 前言本文详细讲解Apollo的曲线平滑的数学原理,原文在《开发者说丨离散点曲线平滑原理》,参考Apollo代码在此,以下为整理内容。2. 离散点曲线平滑的数学原理如下图所示,P0P_0P0​,P1P_1P1​,P2P_2P2​,P3P_3P3​,…,PnP_nPn​, 一共n+1n+1n+1个离散点组成原始参考线。本节介绍一种方法通过对原始参考线上离散点的有限偏移对原始参考线进行平滑。2.1. 优化变量优化变量:离散点坐标(xi,yi)(x_i,y_i)(xi​,yi​)2.2.

2021-03-13 10:37:48 7232 1

原创 自动驾驶之轨迹规划4——Apollo规划模块算法解析_20201219直播讲解

前言本课程由Apollo平台fuyiqun主讲,视频链接如下:现场录屏,另外有官方解析文章:直播回顾丨Apollo自动驾驶论坛①规划模块算法解析(本篇另增问答整理),视频官方PPT在此(可免费下载)。下面是随堂记录。Apollo规划模块算法解析本文将为大家介绍Apollo规划模块(Planning)的算法解析,主要内容包括:功能:基于预测的结果、路由模块(routing)的全局路线指引和地图信息,生成安全舒适的驾驶轨迹。首先输入来自3个模块,包括Prediction、Chassis、Loc

2021-03-11 00:22:42 4995 3

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

前言本课程由Apollo资深工程师是夏黎明主讲,一共是7堂课,属于框架性讲解,需课后自行补充理论知识。下面是随堂记录。Apollo_ROS背景介绍课程目录背景为了应对这么复杂的系统,因此选择了ROS:它是一种基于消息传递的分布式多进程框架。ROS概述本节课程目录ROS比较明显的几个特征:点对点通信,支持分布式,跨语言(有专门的订阅接口),轻量级,开源。ROS的安装:ROS的master节点的启动没有先后关系(但ROScore要在所有节点之前启动),如percepti

2021-03-06 12:48:40 1352 1

原创 自动驾驶之轨迹规划2——Apollo规划与控制公开课

前言本课程由Apollo平台架构是樊昊阳主讲,一共是7堂课,属于框架性讲解,需课后自行补充理论知识。下面是随堂记录。课程一 —— 规划基本概述规划的本质是搜索最优解问题现有常用方法如下:最基本的两种路径规划方法的基本思想:广度优先BFS、深度优先DFSA是BFS的基础上往DFS上靠:启发函数。A是目前最广泛最基础的算法。但A star是全局规划,需要对整个环境全知(fully observed)。但智能车很多时候是particularly observed dynamic en

2021-03-05 23:50:39 3400

原创 自动驾驶之轨迹规划1——算法综述

1. 概述本文立足于智能车领域的轨迹规划,根据自己的整理和理解输出,权当做一篇学习笔记。首先解释一下一些基本概念:环境感知与融合;驾驶行为决策:从驾驶员本身出发,包含心理学、认知学、统计学等多个学科交叉的一种决策过程,旨在研究“驾驶员实际是怎样进行决策的”和“为什么做出这样的决策”。轨迹规划:基于感知到的话你就拿个信息(如路况信息、路网结构、车辆状态等)对车辆的未来轨迹进行最优规划:路径规划和速度规划。车辆横纵向控制:2. 轨迹规划的问题本质轨迹规划的任务是计算出一个无碰撞可执行的轨迹(包

2021-03-05 11:26:44 31504 13

原创 Matlab求解数学优化问题

Matlab求解非线性规划最近在研究自动泊车的轨迹规划问题,水平泊车在规划路径时会遇到一个求解泊车起始位置的规划问题(以后会单独写一篇文章梳理下汽车的轨迹规划问题),于是研究了以下matlab的解法。现在梳理如下:fmincon函数matlab自带的fmincon函数专门用来求解线性和非线性规划问题,公式如下:[x fval exitflag] = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)。其中:输入参数:fun:目标函数x0:因变量的迭代起始点A,b

2021-02-11 20:05:11 2154 2

原创 C++练手小游戏4——见缝插针

概述实现效果和涉及的知识文件结构具体代码

2021-02-08 01:53:18 1307 5

原创 C++练手小游戏3——万花筒

概述实现效果和涉及的知识文件结构具体代码

2021-01-24 16:24:21 701

原创 C++练手小游戏2——简易版flappy bird

概述这个例子需要如下几个模块:小球,障碍物,得分计算,碰撞判断和游戏重启。代码的文件结构也是根据模块划分进行设置的。实现效果和涉及的知识本例子我们将模拟简易版的flappy bird。例子中我们会学习EasyX图形库的文本相关库函数、函数等。文件结构具体代码main.cpp// 初版flappy bird#include <graphics.h> // 绘图函数库,非cpp STL,是TurboC扩展库(EasyX)#include <conio.h> //

2021-01-23 21:10:26 1073 1

原创 C++练手小游戏1——模拟物理小球的运动

C++练手小游戏1——模拟物理小球的运动一直在学习C++,深感学习一门语言必须得下手实践,因此在网上找了很多小项目,但好多有都不感兴趣坚持不下来。近期突然发现河海大学童晶老师的书,是专门讲编写C++小游戏的例子,很感兴趣。我根据该书的例子然后也根据自己对C++的理解,尽量以新的方式重新实现。另外需要说明的是,这些例子用到了EasyX图形库,自认为这个图形库是亮点童晶老师的书最大的亮点,它是针对 C/C++ 的图形库,最大的好处是效果可视化,大大降低了直接用C++实现图形的难度,也增加了趣味性和成就感。网

2021-01-23 19:18:04 2108 1

原创 控制算法简析1——PID和负反馈的数学原理

概述搞了一段时间电机控制和车辆横纵向控制,发现好多人包括开发和标定工程师都只知道PID反馈控制可以比较有效的调整被控系统(如动力电机,转向系统,制动和动力系统)的工作性能,但都不知道其中的本质机理。关于这块儿我大致整理了一下自己的理解,写在本文中。水平有限,思路仅供参考。本文要解决的问题主要有两个:为何负反馈可以很好的消除误差,实现对目标信号的跟踪。PID为何能够调整被控系统的性能。便于理解,我想先从现实物理切入到数学,然后再回到现实物理当中,的方式进行阐述。描述物理系统的数学方程现实物理

2021-01-16 22:43:28 13047 2

原创 Simulink自动代码生成5——控制函数原型(control function prototype)

simulink可对生成的代码做深度定制化,主要从以下几个方面:控制函数原型(function prototypes)函数接口复用(reuse function interface)数据存储管理(storage class & memory section)函数模板(function templates)下面一一说明:控制函数原型(function prototypes)默认设置下,3个入口函数和为以下形式且输入输出和非内联变量会以全局结构体的形式被函数访问。函数名管理但

2020-12-14 23:51:15 3088

原创 Simulink自动代码生成4——集成生成代码和外部代码(integrating generated code with external code)

有些时候在生成代码后,可能需要和外部代码(如手写代码或其他工具生成的代码)进行集成,此时我们可做以下准备工作:确保模型输入输出接口正确确保入口函数可被调用多个模型生成的代码集成到一个工程里代码文件存储管理:代码打包、代码存放位置管理下面以官方提供的模型ETC_Controller为例说明模型输入输出接口如果模型中的input是从workspace中读取数据的,embedded coder是不会把这部分生成到代码中的,如下图,打开model properties查看模型的callback

2020-12-08 00:08:30 7301

原创 Simulink自动代码生成3——优化生成的代码(optimizing generated code)

使用simulink代码生成之后,如果需要进一步对执行效率或者内存优化,可以看下面提到的方法。代码优化综述可从以下几个方面考虑对代码进行优化:优化掉不必要的代码:数据初始化、中止、的标题static code metric用来统计生成代码的概况,如:代码行数、全局变量、入口函数等。remove initialization code用来把I/O初始化和内部变量初始化等代码优化掉。优化前该优化项的影响:removing termination code优化前:优

2020-12-06 23:24:37 5604 1

原创 Simulink自动代码生成2——生成嵌入式代码(generating embedded code)

深入分析simulink自动代码生成(code generation),拆解模型model与代码code的关系,解构代码文件的详细内容。以便更好的控制代码的生成。

2020-11-16 23:10:49 5644 2

原创 Simulink自动代码生成1——入门基本知识(Introduction)

simuink自动代码生成是很有弯弯道道的,涉及挺多知识,想要讲明白还是挺难的。先占个坑,但愿后续可以慢慢补上。

2020-11-16 20:51:43 2608 1

原创 calibration的“前世今生”——从simulink开发到CANape的XCP标定

整体思路备注:elf可简单的看作为hex和map的集合,其中包括可执行的程序、变量及其对应的地址(simulink生成代码是也可以勾选生成ASAP2的a2l文件,有变量但变量对应的地址为空,只有编译后才分配地址)定义变量是观测值还是标定值需要在simulink中的数据字典定义变量存储类型,详见simulink系列。1. 前期准备A2L的制作安装完成CanApe软件 , 插上CanApe硬件( 如:vector 1640A)。打开A2L编辑软件 ASAP2 Editor(注意不是ASAP2 Vi

2020-10-27 22:05:10 9798 5

原创 C++理论梳理8——容器(待补充)

C++理论梳理8——容器

2020-10-18 23:24:12 252

原创 C++理论梳理9——泛型编程的思维

C++理论梳理9——泛型编程STL概念standard template library(STL)主要有两部分构成:容器和操作这些容器的泛型算法。之所以叫泛型算法(generic programming),是因为该算法不受限于数据类型。具体是通过fuction template技术,实现“与操作对象的类型相独立”的目的...

2020-10-18 17:54:31 385

原创 C++理论梳理6——函数

C++理论梳理6——函数

2020-10-17 13:37:06 178

原创 C++理论梳理5——变量的存储类型(作用域、生命周期和链接性)

C++理论梳理5——变量的作用域和作用时间file scope(文件内)和local scope(函数内)尽量不要在file scope定义变量,一是会使函数过度依赖file scope变量从而降低在其他环境的复用性;二是会打乱函数之间的独立性。static...

2020-10-15 21:12:03 359

原创 C++理论梳理3——深刻理解头文件的作用

C++理论梳理3——深刻理解头文件的作用头文件一般定义类,且头文件名字和类名头文件通常也包含那些只能被定义一次的数据,如:const,constexpr(const默认只在当前文件内有效,若多个文件出现同名const变量,等同于不同文件内的独立变量。如果想实现文件间的共享,参考C++理论梳理2——声明&定义)针对头文件的重复包含,C++有头文件保护符:#define:把一个名字设定为预处理变量;#ifdef:当且仅当预处理变量已定义时为真;#ifndef:当且仅当预处理变量未定义时为真

2020-10-12 23:55:29 851

原创 C++理论梳理2——声明&定义(extern和文件间数据共享)

C++理论梳理2——声明&定义C++支持各个文件独立编译,最后链接。文件之间数据的通信就涉及”一次定义&多次声明“声明使得名字为程序所知,定义负责创建与名字关联的实体。如果多个文件使用同一个变量,就必须把声明和定义分开:变量的定义只能出现在一个文件中,而使用到它的文件必须对其声明。(不可重复定义,但可以多次声明)如何实现:extern可声明但不定义,如果对extern进行显式初始化则会抵消extern的作用:变成定义。int i; //声明并定义extern int i;

2020-10-12 23:38:12 226

Optimal trajectory generation for dynamic street scenarios in a Frenet Frame.rar

Apollo trajectory planning reference

2021-07-04

A Real-Time Motion Planner with Trajectory Optimization for Autonomous Vehicles

Apollo trajectory planning reference

2021-07-04

TDR-OBCA A Reliable Planner for Autonomous Driving in Free-Space Environment.pdf

Apollo规划模块(planning)官方参考文献

2021-03-11

DL-IAPS_and_PJSO_A_PathSpeed_Decoupled_Trajectory_.pdf

Apollo规划模块(planning)官方参考文献

2021-03-11

Baidu Apollo EM Motion Planner.zip

Apollo EM motion planner

2021-03-10

空空如也

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

TA关注的人

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