- 博客(168)
- 收藏
- 关注
原创 半正定矩阵
半正定矩阵的奇异值就是其特征值的绝对值,由于特征值非负,奇异值就是特征值本身。这个分解提供了半正定矩阵的一种简洁的表示形式,也揭示了其特征值的重要性。一个对称矩阵是半正定的,当且仅当它的所有特征值都大于等于零。对于半正定矩阵,如果最小特征值为零,则条件数为无穷大,表示该矩阵是奇异的。如果一个对称矩阵的所有特征值都大于等于零,则该矩阵是半正定的。半正定矩阵与其特征值之间存在着深刻且紧密的联系,这种联系是理解和应用半正定矩阵的关键。如果一个对称矩阵的所有特征值都严格大于零,那么它不仅是半正定的,而且是正定的。
2025-02-07 14:25:22
637
转载 Frenet坐标系与Cartesian坐标系互转(一):公式推导
Frenet坐标系在无人驾驶领域被普遍使用,特别是在城市、高速等道路交通环境下无人驾驶的路径规划系统中。Frenet坐标系使用道路的中心线作为Base frame,使用参考线的切线向量和法线向量建立坐标系。相比笛卡尔坐标系,Frenet坐标系简化了路径规划问题。网上关于Frenet坐标系的博客或资料很多,此处不再赘述。本文先给出简单的转换公式推导过程,然后给出三对Frenet坐标系与Cartesian坐标系互转的python代码与使用示例方便自己查阅使用。详细推导参见博客。
2025-02-05 13:43:50
70
转载 IAR9.30以上版本安装、注册、新建工程和配置过程详细介绍
IAR 一般是指一款嵌入式软件的集成开发环境,类似于 MDK-Keil这款软件。IAR 对于不同的内核处理器,是对应不同的 IAR 软件的,IAR 到目前为止支持大部分的MCU,比如8051系列、ARM架构系列、MSP430系列、AVR系列等等这些常用的芯片架构。对于 ARM 架构的芯片,有对应的 IAR Embedded Workbench for ARM 软件平台,因为我主要是使用 ARM 架构芯片,下面安装、注册和使用都是基于这个版本进行介绍的。
2025-01-13 22:36:41
1154
1
转载 “深入解析脉冲宽度调制(PWM):理解频率、周期和占空比的作用“
例如,如果一个PWM信号的周期是10ms,而高电平的时间是8ms,那么低电平的时间就是2ms,总的占空比就是8ms/(8ms+2ms)=80%。例如,如果我们要调节一台电机的转速,我们可以通过改变PWM信号的占空比来改变电机的电压,从而改变电机的转速。的技术,通过在合适的信号频率下,改变占空比的方式,可以有效地控制输出的电压。无论是在LED灯的亮度控制,电机的转速控制,还是舵机的转角控制,PWM都有着广泛的应用。通过一个固定的频率,给舵机的控制信号提供不同的占空比,就可以控制舵机转到不同的角度。
2025-01-08 16:33:59
432
转载 【无刷电机学习】BLDC 基本驱动原理及FOC控制精讲(附DSP28335相关代码)
无刷直流电动机(BLDC,即Brushless DC Motor),也称为电子换向电动机,是一种没有电刷和换向器的电动机,根据转子永磁体位置调整定子电流以产生相应转矩。无刷电机系统的结构通常类似于永磁同步电机(PMSM,即Permanent Magnet Synchronous Motor)。
2024-12-26 16:12:45
978
1
原创 有刷直流电机与无刷直流电机的区别
https://www.bilibili.com/video/BV1ig411S7gX/?spm_id_from=333.337.search-card.all.click&vd_source=ab8dc100a6c0631e9d476795bd6b8f8e
2024-12-26 16:06:28
137
转载 无刷电机篇(一)无刷直流电机(BLDC)介绍
直流无刷电机(BLDC)按照转子分布可分为内转子电机、外转子电机;对于电机的分类有很多,篇幅原因,这里不作过来描述,感兴趣的兄弟可自行了解。直流无刷电机(BLDC)的定子由硅钢片组成(如下图),定子绕组置于沿内部轴轴向开凿的槽中(涉及铁芯极数(槽数N)参数)。其因具有高输出功率、低电噪声、高可靠性、高动态响应、电磁干扰少、更好的转速-转矩等优点,而被广泛使用。由前盖、中盖、磁铁、硅钢片、漆包线、轴承、转轴以及后盖组成。无刷电机根据转子和定子的排位结构,可分为外转子电机和内转子电机两种(如下图)。
2024-12-26 15:21:57
1940
转载 无刷直流电机与永磁同步电机比较
表面来看,BLDC和PMSM的基本结构是相同的:1)它们的电动机都是永磁电动机,转子由永磁体组成基本结构,定子安放有多相交流绕组;在PMSM中,需要正弦波电流,电机工作时所有三相绕组同时导通, 需要连续的位置传感器, 最常见的是精度很高的编码器。无刷直流永磁电动机(BLDCM)适用于功率等级在300W以下的单一速度和稳定速度运行的场合,例如,计算机软盘驱动器(FDD)、硬盘驱动器(HDD)、视听设备的主轴(SPINDLE)驱动、激光打印机、电动自行车、汽车电机、叉车、升降机构、电动缝纫机、风机、泵等。
2024-12-26 13:57:17
271
转载 Autosar CAN开发11-1(CAN控制器相关参数,位时间、Tq、采样点等)
生活不易,猫咪叹气。好久没更新,距离上次更新已经是快半年前了。毕业到现在,已经在这家公司呆了快2年了。快的话一个月,慢的话两个月,马上就是提桶的日子了。说回我们的正题。平时在工作上,对于通信工程师外的人来说,使用CAN分析仪(如CANoe、Can卡、Canpro等)采报文、分析报文是一件极其日常的事情。对于他们来说,从一块单板上电到电脑看见单板发出的报文,这中间的操作实际并不多(用Canoe举个栗子):步骤1、把单板的CAN线跟Canoe连接好并接上终端电阻。
2024-12-23 17:33:23
84
转载 SVPWM控制技术+Matlab/Simulink仿真详解
本章节首先介绍SVPWM控制技术的原理,然后详细分析SVPWM控制算法的具体实现方式,并通过Matlab/Simulink对SVPWM控制算法进行仿真分析,最后通过永磁同步电机矢量控制的实例进行算法实现。本章节首先介绍了SVPWM控制技术的原理,然后详细分析了SVPWM控制算法的具体实现方式,并通过Matlab/Simulink对SVPWM控制算法进行了仿真分析,最后通过永磁同步电机矢量控制的实例进行了算法实现,为后续章节的分析奠定基础。allv100。
2024-12-22 20:55:24
1049
1
转载 SVPWM算法原理及详解
因此载波频率越大,转速越小,电压旋转平面越接近圆形,反之,越接近多边形。PMSM的转子是永磁铁,定子是绕组,我们用电路控制定子绕组产生旋转的磁场,里面的转子磁铁就会跟着转动,这个磁场的大小最好恒定,不然一会儿大一会儿小,转子受到的牵引力也就一会儿大一会儿小,影响运动。可以看出 A,B,C 之间共有八种组合,但由判断扇区的公式可知 A,B,C 不会同时为 1 或同时为 0,所以实际的组合是六种,A,B,C 组合取不同的值对应着不同的扇区,并且是一一对应的,因此完全可以由 A,B,C 的组合判断所在的扇区。
2024-12-22 20:53:46
1567
转载 十、SVPWM原理详解
通过调整占空比使等效电流近似为正弦波,这种PWM也就是SPWM。SPWM不依赖开关顺序,3相独立调制,类似开环控制,是没有反馈的,只管生成正弦波。1.SPWM调试方式在。
2024-12-22 20:51:00
333
转载 深入理解SVPWM及其程序设计实例
VectorPulse Width Modulation)是一种高效率的电压矢量调制技术,它在电机驱动和逆变器控制领域得到了广泛应用。与传统的正弦波脉宽调制(SPWM)相比,SVPWM可以更有效地利用直流母线电压,进而提高电机驱动的效率和性能。在空间矢量脉宽调制(SVPWM)中,矢量是一个表示电压或电流等物理量方向和大小的数学概念。在三相交流电系统中,一个矢量可以表示为三相电压的综合,其大小与方向对应于三相绕组上的电压状态。矢量可以进一步分为有效矢量、零矢量和中矢量。
2024-12-22 20:48:38
497
转载 【电机控制】PMSM无感FOC控制(一)FOC入门
前段时间做了一个永磁同步电机1.FOC控制算法、坐标变换2.PID控制器3.SVPWM4.过调制5.相电流检测及重构(单电阻、双电阻及三电阻采样)6.转子位置及速度提取(滑膜观测器、低通滤波器、锁相环)7.PMSM无感控制的启动计划写完上述内容后再开始写一些别的控制算法(MTPA、弱磁控制、电流前馈补偿、高频注入等)FOC 是一种电机控制技术,全称为 Field Oriented Control(磁场定向控制),也称作矢量控制。
2024-12-22 20:45:50
664
转载 报文是什么?如何形象的理解这个概念?
当你的设备(例如电脑或手机)想要与远程服务器通信时,数据被封装成一个个的报文,每个报文上面包含源地址和目标地址。在传输过程中,信件会被封装成一个个的邮包,每个邮包上面标有发送地址和接收地址。报文的设计和解析遵循特定的通信协议,这些协议规定了报文的结构、格式和如何处理其中的数据。不同的应用和协议可能会使用不同的报文格式和规则,但它们都共同构成了现代网络通信的基础。报文可以是不同协议层中的数据包,例如在HTTP协议中是HTTP报文,在TCP协议中是TCP报文段,在IP协议中是IP数据包等。
2024-12-19 17:05:16
186
转载 CAN报文解析—案例
CAN报文是指发送单元向接受单元传送数据的帧。我们通常所说的CAN报文是指在CAN线(内部CAN、整车CAN、充电CAN)上利用ECU和CAN卡接收到的十六进制报文。
2024-12-19 17:03:24
2203
2
转载 详解CAN总线:CAN总线报文格式—数据帧
上传输的信息称为报文,当总线空闲时任何连接的单元都可以开始发送新的报文。是通过以下5种类型的帧进行的:数据帧遥控帧错误帧过载帧帧间隔另外,数据帧和遥控帧有标准格式和扩展格式两种格式。标准格式有 11 个位的标识符(Identifier: 以下简称 ID), 扩展格式有 29 个位的 ID。各种帧的用途如下表所示:关注公众号:美男子玩编程,优先推送最新技术博文~
2024-12-19 17:01:27
1993
转载 电路中的A与D
的学习中,经常碰到A与D(如AC,DC,A/D转换,D/A转换),到底那个是模拟,哪个是数字,我经常弄混,所以写这篇文章来加深记忆。有了这个解释就能很好地理解了。D:Digital 数字。A/D:模拟转换为数字。D/A:数字转换为模拟。
2024-12-19 09:42:10
27
转载 关于 Carsim/Trucksim <Send to Simulink>显示 MATLAB not found 的解决方法
一般而言,无论是Carsim还是Trucksim在首次与simulink建立联合仿真环境时,Carsim会直接搜索default MATLAB version,如下图所示。在MATLAB文件夹下新建一个项,命名为MATLAB的版本号,版本号查询如下图所示。这样就算完成了,接下来打开Carsim,看一下是否有刚刚添加的MATLAB版本。可以发现R20207b被添加进来了,至此,MATLAB被正确添加到路径中。文件夹中新建一个字符串值,双击后将MATLAB的。在注册表中添加上现在使用的MATLAB的。
2024-12-18 19:47:10
316
2
转载 【仿真】Carla之收集数据快速教程 (附完整代码)
看到仿真群对这类任务下(用carla收集数据收集什么数据,需要什么样的数据格式数据之间的时间戳一定要同步,这就意味着对carla的时间设置有一定的认知【仿真】Carla世界的时间 [2]收集数据时一般没啥意外的话 我们倾向于车自己自动跑,有时候可能会想着 不考虑红绿灯、速度快一点等等等。这意味着要对traffic manager有一定认知【仿真】Carla之Traffic Manager [3]怎样保证传感器之间的同步 → 同步模式设置。
2024-12-18 17:29:33
148
转载 CARLA 数据导出工具: 从CARLA驾驶模拟器生成训练数据
CARLA 数据导出工具是专为从CARLA模拟环境中高效生成多模态3D对象检测训练数据而设计的一个简单解决方案。这个GitHub仓库()提供了在论文《多模态3D目标检测从模拟预训练》中所使用的代码。它旨在简化自动驾驶研究中的数据准备流程,允许用户利用CARLA仿真平台生成符合KITTI数据格式的训练数据集。项目遵循MIT开源许可协议。
2024-12-18 17:27:05
160
转载 坐标系转换(仅作记载)
已知基坐标系XOY,把坐标系平移(a,b)得到一个新的坐标系X'O'Y',如果基坐标系中一点P(x,y),跟随坐标系一起平移,那么此时P点在基坐标系XOY中的坐标为(x+a,y+b)。假设已知基坐标系XOY中的一点P(x,y),坐标原点为O,绕点O旋转θ,可以求得点P在新坐标系X'OY'中。求解x'和y'的关键是坚持用已知的边做斜边来求解,结合上图利用三角。绕坐标原点逆时针旋转θ,上式θ值为正,顺时针旋转θ,上式θ值为负。那么点P在X'OY'中的坐标值为(x',y')。的坐标为(x+a,y+b)。
2024-12-17 17:26:41
41
转载 namespace介绍
2.7:无名命名空间,意味着命名空间中的标识符只能在本文件内访问,相当于给这个标识符加上了static,使得其可以作为内部连接。2.4:命名空间是开放的,即可以随时把新的成员加入已有的命名空间中(常用)4、单独 使用命名空间中的具体成员:using 命名空间名::成员名;3.5、不同命名空间中的 同名成员 使用的时候注意 二义性。2、使用命名空间的成员 最安全的方式 命名空间名::成员名。using直接使用 命名空间中的成员 会和 局部变量冲突。2.6:命名空间中的函数 可以在“命名空间”外 定义。
2024-12-17 13:38:47
133
转载 C++运算符优先级
有这个类一个对象的指针l_pthis,需要访问这个结构体(m_NotifyIconData)里面的成员(cbSize),代码肯定这样写:l_pthis->m_IconData.cbSize,大家有没有问题:要加一个小括号(l_pthis->m_IconData).cbSize表明先计算->运算符。表,2个运算符都处于一个优先级,而且是最高优先级,方向是从左向右。运算符)优先级仅次于-> . 结合选性从右向左。&(取地址运算符) *(,不用担心先对l_pthis取地址。假设有一个类,类里面又有一个。
2024-12-16 15:39:43
29
转载 【无标题】模型预测控制MPC详解(附带案例实现)
MPC(Model Predictive Control,模型预测控制)的基本思想是通过建立一个系统的动态模型,并在每一个控制时刻使用这个模型来预测系统未来的行为。基于这些预测,它可以生成一个优化控制序列,然后通过执行第一个控制动作来调整系统状态,接着在下一个时刻重新计算和执行。这个过程反复进行,以使系统能够在未来的一段时间内优化一个特定的性能指标。系统模型化:建立描述系统动态行为的数学模型,通常是差分方程或微分方程。预测:在当前时刻基于系统状态和控制输入,使用模型预测未来一段时间内的系统响应。优化。
2024-12-16 09:51:31
48
转载 MPC(模型预测控制)-Simulink仿真
小车的数学模型:iteminputsoutputsPlant Model(被控对象的数学模型)之后m个控制量之后p个时间步的预测输出优化器:iteminputsoutputs优化器(数学模型, 之后p个时间步的参考轨迹, 约束条件)之后m个控制量 优化器要考虑两点: ① 预测轨迹与参考轨迹偏差最小 ②控制量不突变CostFunction≐J∑i1p。
2024-12-16 09:48:38
1097
1
转载 C++中的继承与多态
继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。// 姓名int_age =18。
2024-11-25 15:35:18
92
转载 【C++指南】C++中nullptr的深入解析
是C++11引入的一个重要特性,它提供了一种类型安全、明确且易于理解的空指针表示方式。明确表示一个指针不指向任何对象,这种明确的表示方式提高了代码的可读性和可维护性。初始化指针是一种常见的做法,它明确表示该指针不指向任何有效的内存地址。,作为一种新的空指针字面量,旨在提供一种类型安全的方式来表示空指针。,用于表示空指针,这一改进极大地提升了代码的类型安全性和可读性。提供了一种类型安全的方式来表示空指针,适用于任何指针类型。在C++编程中,处理指针是常见的任务之一。,这是一个特殊的类型,专门用于表示空指针。
2024-11-25 15:22:53
151
转载 c++11 unique_ptr 与 make_unique源码剖析
所谓智能指针,可以从字面上理解为“智能”的指针。具体来讲,智能指针和普通指针的用法是相似的,不同之处在于,智能指针可以在适当时机自动释放分配的内存。也就是说,使用智能指针可以很好地避免“忘记释放内存而导致内存泄漏”问题出现。由此可见,C++ 也逐渐开始支持垃圾回收机制了,尽管目前支持程度还有限。c++11 中发布了shared_ptrunique_ptrweak_ptr用以资源的管理,都是定义在memory 这个头文件中。
2024-11-25 15:17:23
95
转载 电机分类与永磁电机
直流电动机采用直流电源供电,常见的如有刷直流电机,电机内磁场固定不动,洛伦兹力驱动电机内转子旋转,其独特的结构是换向器和电刷,通过电刷和换向器把电流引入转子电枢中,随着线圈的转动转换电流的方向,使转子在定子磁场中受力而产生旋转。总之,永磁电机的效率和功率因数可以达到很高,结构非常简单,但是,失磁故障是永磁电机不可回避的问题,当电流过大或温度过高时,会导致电机绕组温度瞬间不断攀升、电流急剧增大,永磁体迅速失磁。此外,起动电流过大时,将使电机本身受到过大电做力的冲击,如果经常起动,还有使绕组过热的危险。
2024-11-25 09:52:21
298
转载 神经网络中epoch、batch、batch_size、iteration理解
相对于正常数据集,如果Batch_Size过小,训练数据就会非常难收敛,从而导致underfitting。增大Batch_Size,相对处理速度加快。增大Batch_Size,所需内存容量增加(epoch的次数需要增加以达到最好的结果)这里我们发现上面两个矛盾的问题,因为当epoch增加以后同样也会导致耗时增加从而速度下降。因此我们需要寻找最好的Batch_Size。再次重申:Batch_Size的正确选择是为了在内存效率和内存容量之间寻找最佳平衡。
2024-11-23 21:47:08
210
转载 哈希表find end
在上面的代码中,find()函数返回一个迭代器it,接着我们使用if语句判断该迭代器是否等于end()函数返回的迭代器。如果不等于end(),说明键存在,可以通过it->second访问其值;在哈希表中,find()函数用于查找指定键是否存在,并返回指向该键值对的迭代器。如果键存在,则返回指向该键值对的迭代器;如果键不存在,则返回指向哈希表尾部的迭代器end()。
2024-11-21 17:40:47
102
原创 RuntimeError: CUDA out of memory. 已解决
跑代码遇到了这个错误,很烦。问了下GPT这个问题是由于CUDA内存不足导致的。你可以尝试以下几种方法解决这个问题:1. 减小批次大小:减小每个训练批次的大小,可以减少对CUDA内存的需求量。可以尝试减小批次大小并重新运行代码。2. 减小模型参数:如果你的模型非常庞大,可以尝试减小模型的参数量。可以通过减少模型的宽度或深度来减小参数数量。3. 使用更小的模型:尝试使用更小的模型或者使用轻量级模型来减小对CUDA内存的需求。
2024-11-20 16:13:37
429
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人