- 博客(67)
- 收藏
- 关注
原创 【强化学习】——策略梯度方法
这是一个根本性的变化。表格型 (Tabular):定义:对每一个状态sss,其价值vπsv_{\pi}(s)vπs都要比其他策略高。这是一个非常苛刻的逐点比较。函数型 (Function Based):定义:我们需要定义一个标量指标 (Scalar Metric)JθJ(\theta)Jθ。最优策略就是能让这个指标JθJ(\theta)Jθ最大化 的策略。我们不再纠结每一个状态是否完美,而是追求整体平均表现最好。为了评价策略π\piπ。
2025-12-17 22:48:32
1108
原创 【强化学习值函数近似】——目标函数和优化算法
我们有一个近似函数 v^(s,w)\hat{v}(s, w)v^(s,w)(比如一个神经网络或线性方程),它的形状由参数 www 决定。怎么衡量“接近”?我们需要一个数学公式来打分,这就是 目标函数 (Objective Function),记为 J(w)J(w)J(w)。最常用的评分标准是 均方误差 (Mean Squared Error, MSE):J(w)=E[(vπ(s)−v^(s,w))2]J(w) = \mathbb{E} \left[ (v_\pi(s) - \hat{v}(s, w))^2
2025-12-17 11:32:27
582
原创 【强化学习】值函数近似——曲线拟合
如果状态空间(State Space)非常大(例如围棋的状态数),或者是连续的(例如机器人关节的角度、速度),表格无法列举所有可能的状态。注:也可以使用非线性函数(如神经网络)来拟合,这属于 Deep RL 的范畴,但基本原理相同:调整。即使使用离散化(网格法),网格太密会导致计算量爆炸(维数灾难),太疏又会丢失精度。为了解决上述问题,我们不再用表格记录每个点的具体数值,而是用一个函数来拟合这些值。函数近似的代价是精度 (Precision)。是存储在一个**表格(Table)**中的。
2025-12-16 15:41:06
682
原创 【Mujoco安装入门1】
问题1:无法读取远程仓库,请确认您有正确的访问权限并且仓库存在。主要安装流程为下面连接中的文章。安装后配置一些环境变量。
2025-12-15 00:14:45
278
原创 【UR5机械臂仿真入门】ROS2+Gazebo仿真UR5 Robot(一)——环境搭建
前置条件:首先创建一个新的工作空间用于存放项目。我们需要 Universal Robots 的官方 ROS 2 驱动描述文件和 Gazebo 仿真包。务必使用 分支。https://github.com/UniversalRobots/Universal_Robots_ROS2_Description/tree/humblehttps://github.com/UniversalRobots/Universal_Robots_ROS2_Gazebo_Simulation使用 安装所有依赖项,然
2025-12-01 01:39:25
389
原创 【强化学习入门】n-步Sarsa
算法核心目标 (Target)特点适用场景RγQs′a′RγQs′a′简单,在线更新,方差略大入门首选,快速验证RγEQs′⋅RγEQs′⋅)]消除动作随机性,更稳定想要减少震荡,算力充足时R⋯γnQstn⋅R⋯γnQstn⋅平衡偏差与方差,视野更广追求极致性能,处理复杂回报延迟GtG_tGt(累计总回报)无偏差,方差极大,离线只有回合制任务,且对准确性要求高。
2025-11-27 09:28:00
784
原创 【强化学习入门】 TD-Sarsa学习
在强化学习中,我们经常看到形如Vs←VsαVs←Vsα的更新公式。这些公式并非凭空而来,它们背后数学基础——随机逼近理论(Stochastic Approximation)。数学本质:TD 学习本质上是利用Robbins-Monro 随机逼近算法来求解贝尔曼期望方程的根。核心机制:通过计算TD 误差(现实与预期的差),不断修正对状态价值的估计。Sarsa 特性:将VVV替换为QQQ,利用五元组sars′a′sars′a′进行在线学习。
2025-11-26 17:54:40
667
原创 强化学习——随机梯度下降
考虑一个随机变量XXX。EXEX。假设我们无法直接积分求解,但收集到了一个独立同分布 (i.i.d.) 的采样序列xii1Nxii1N。wk1wk−akgwkηkk12wk1wk−akgwkηkk12wkw_kwk:第kkk次迭代对根的估计。gwkηkgwkηkgwkηkgwkηk:第kkk。
2025-11-25 23:39:12
791
原创 零基础学强化学习——蒙特卡洛算法
作者为零基础,有错误的地方,请批评指正在强化学习中,我们面对的环境通常分为两类:和。📌 核心定义蒙特卡洛方法是一种基于经验 (Experience) 的学习方法。它不需要知道环境的转移概率 PPP 和奖励函数 RRR,而是通过与环境交互产生一串串完整的回合 (Episode),用这些实际发生的样本来估算价值。学习机制:必要条件:场景:我们要计算一枚硬币正面朝上的概率(期望)。上帝视角 (Model-Based):我知道硬币是均匀的,所以物理参数决定了 P(正面)=0.5P(\text{正面})=0.5P
2025-11-23 19:16:53
944
原创 四旋翼机器人手臂路径规划
在此示例中,设置与 “uav” rigidBody 关联的浮动关节的平移 PositionLimits ,使其被限制在工作区框架的笛卡尔边界(例如物理安全笼)内飞行,即 X 轴 [-1,3] 、Y 轴 [-2,2] 和 Z 轴 [-2.5,2.5]。要将其安装到无人机底部的机械臂上,请设置机械臂第一个主体的固定变换,使其在 y 轴上旋转 pi 弧度,并在 z 轴上施加较小的平移偏移。使用碰撞盒创建环境,并设置这些盒子的位置,使其在起始构型与目标构型之间形成一道墙。请注意,碰撞几何体是非凸的。
2025-10-28 23:13:57
667
原创 Uav toolbox使用
UAV 工具箱提供了用于设计、模拟、测试和部署无人机、无人驾驶飞行器(UAV)以及先进空中机动(AAM)应用的工具和参考应用程序。您可以设计飞行控制器、开发自主算法并规划无人机任务。飞行日志分析器应用程序允许您交互式地分析三维飞行路径、遥测信息和传感器数据。您可以生成并模拟无人机场景,用于桌面模拟以及飞行控制器和自主算法的硬件在环(HIL)测试。您可以在逼真的 3D 环境中,或者在 2.5D 模拟环境中模拟相机、激光雷达、惯性测量单元(IMU)和全球定位系统(GPS)传感器的输出。
2025-10-06 23:12:30
1001
3
原创 std::exception: Loading libmwlmgri : 应用程序控制策略已阻止此文件。 : unknown error: unknown error
文件,查看了属性中的数学签名,发现找不到数字签名。(原因应该是应该使用的非官方版本(poujie)的文件)在尝试了一部分方法后,找到一个较为直接但是有风险的办法,直接关闭window安全中心的。最近安装了的 “MATLAB 2025a”,昨天还能正常运行,上述方法仅是本人遇到的情况,仅供大家参考。同时,我发现系统右下角弹出一个提示。打开matlab安装路径下的文件。经过排查,看到这里显示提到。:MATLAB 成功启动!
2025-09-26 20:24:14
740
原创 华硕主板Z790 Windows11 + Linux (Ubuntu22.04) 双系统安装
上述的链接中博主已经写的非常详细啦,但是对于华硕Z790这些较新的主板来说,在关闭安全启动这一项中找不到这会选项。安装过程按照该博主的文章进行。
2025-09-18 15:16:22
396
原创 fatal: unable to access ‘https://github.com/ros-planning/moveit2_tutorials.git/‘
在安装MoveIt的时候使用git 无法访问Github。当终端第一次连接时,会询问。
2025-08-25 17:27:07
190
原创 2.FreeRTOS串口打印任务运行状态和CPU占有率
这个调用发生在 main() 函数中的 osKernelStart() 或 vTaskStartScheduler() 之后,但在任何一个用户任务开始执行之前。同时,这个值也作为下一个任务(即将开始运行的任务)的“开始时间”。这个函数会遍历所有任务,计算每个任务从系统启动到现在的总运行时间(单位是 CPU_RunTime 的计数)。函数,让内核根据这些记录,计算出每个任务在过去一段时间内的总运行时间和CPU利用率。,因为它会消耗CPU资源,影响系统的实时性,不应在最终产品中使用。,得到该任务的总运行时间。
2025-08-12 12:29:32
1105
原创 1.FreeRTOS编程风格——值得学习
学习并遵循这套风格,有利于在自己的项目中编写出更专业、更健壮、更易于团队协作的嵌入式代码。这不仅仅是写代码,更是一种工程素养的体现。FreeRTOS采通过变量名的前缀来明确其数据类型,可以增加代码的可读性。,其他FreeRTOS核心代码和应用代码完全不需要改动。FreeRTOS没有直接使用C语言的标准数据类型(如。:FreeRTOS内部使用的私有函数,其前缀为。)编写的FreeRTOS项目,移植到一个。,并且通过前缀来标识其定义的头文件。FreeRTOS中的所有宏都使用。),而是进行了重定义。
2025-08-11 16:38:48
993
原创 C语言高频面试题——嵌入式系统去访问某特定的内存位置
代码逐行解析定义绝对地址宏:使用 宏定义目标地址 ,提高代码可读性和维护性。如果后续需要修改地址,只需更改宏定义即可。定义指向绝对地址的指针: 关键字:告诉编译器该指针指向的内存可能会被外部因素(如硬件中断)改变,防止编译器优化。在嵌入式编程中, 是访问硬件寄存器时的常用修饰符。强制类型转换 :将整型地址 转换为指向 的指针。这样可以通过指针直接访问该地址的内容。设置地址内容:使用解引用操作符 ,将指针指向的内存地址赋值为 。编译器会生成对应
2025-05-05 19:18:05
635
原创 C语言高频面试题——局部变量和全局变量可以重名吗?
全局变量,即在局部变量的作用域内,全局变量不可见。如果需要访问被遮蔽的全局变量,可以通过。当局部变量和全局变量重名时,局部变量会优先于全局变量,这种现象被称为。当局部变量和全局变量重名时,局部变量会。或其他方式显式指定(C++ 中支持。,但 C 语言不支持)。
2025-04-28 12:39:14
793
原创 C语言面试高频题——不同类型数据相加
代码分析1. 变量声明与初始化(即 的补码解释为无符号数)。因此, 的计算变为:3. 比较 计算后的 值为 。比较表达式 显然成立,因此条件为真。4. 三元运算符执行条件为真时,执行 。条件为假时,执行 。由于条件为真,最终输出为:关键点总结无符号与有符号混合运算的规则:无符号整型的特性:潜在问题:
2025-04-26 11:16:17
366
原创 C语言高频面试题——指针赋值字符串与定义一个数组赋值字符串有什么区别?
【代码】C语言高频面试题——指针赋值字符串与定义一个数组赋值字符串有什么区别?
2025-04-26 11:15:53
633
原创 C语言面试高频题——strcat、strncat、strcmp、strcpy 哪些函数会导致内存溢出?
功能:将源字符串追加到目标字符串的末尾。原型:内存溢出风险:示例:改进方法:使用更安全的函数 ,并明确指定最大追加长度。(2) 功能:将源字符串的前 个字符追加到目标字符串的末尾。原型:内存溢出风险:示例:改进方法:手动计算目标缓冲区的剩余空间,避免超出范围。(3) 功能:比较两个字符串的字典顺序。原型:内存溢出风险:改进方法:确保输入字符串是合法的以 结尾的字符串。(4) 功能:将源字符串复制到目标字符串。原型:内存
2025-04-25 22:57:23
952
原创 C语言面试高频题——不使用第三方变量交换变量a 和b 的值
在C语言中,可以通过多种方法实现不使用第三方变量交换两个变量的值。以下是几种常见的实现方式及其原理讲解:原理利用数学运算 和 来保存和恢复变量的值。关键步骤:将 和 的和存储到 中。通过 恢复原来的 值并赋给 。再通过 恢复原来的 值并赋给 。注意事项如果 超出整型范围(如溢出),可能会导致错误结果。不适用于浮点数,因为浮点数可能存在精度问题。2. 使用异或运算(XOR)代码实现原理利用异或运算的性质:(相同值异或为0)。(任何值与0异
2025-04-24 11:09:25
476
原创 C语言面试高频题——static 全局变量与普通的全局变量、 static 局部变量和普通局部变量、static 函数与普通函数的区别
关键字可以用于修饰变量和函数,改变其作用域、生命周期或链接属性。修饰的全局变量、局部变量和函数与普通变量/函数的区别及其详细讲解。,可以更好地组织代码结构,增强模块化设计能力。
2025-04-24 11:06:02
653
原创 C语言高频面试题——用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)
通过#define表达式被括号包裹。使用类型后缀(如UL)保证数值安全。
2025-04-23 09:20:09
428
原创 C语言高频面试题——给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a 的bit 3,要保持其它位不变。
【代码】C语言高频面试题——给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a 的bit 3,要保持其它位不变。
2025-04-23 09:19:39
249
原创 C语言高频面试题——嵌入式系统中怎样用C编写无限循环
在嵌入式系统中,死循环(无限循环)是维持系统持续运行的核心结构,常用于主程序循环、任务调度或等待事件触发。
2025-04-23 09:18:43
377
原创 C语言高频面试题——malloc 和 calloc区别
都是用于动态内存分配的函数,但它们在。,都必须检查返回值是否为。两者分配的内存都必须通过。
2025-04-22 16:55:42
1241
1
原创 C语言高频面试题——结构体和联合体区别
是两种重要的复合数据类型,用于组织和管理多个相关的变量。尽管它们在语法上有些相似,但在内存布局、用途和行为上有显著的区别。理解两者的区别可以帮助你根据实际需求选择合适的数据结构!
2025-04-22 16:41:43
928
原创 C语言高频面试题——常量指针与指针常量区别
常量指针是指向一个常量数据的指针,即指针指向的内容不能通过该指针被修改。指针可以指向不同的地址。不能通过指针修改所指向的值。指针常量是一个固定的指针,指针本身的值(即指向的地址)不能改变,但可以通过该指针修改所指向的内容。指针的指向地址固定,不能改变。可以通过指针修改所指向的值。指针的指向地址固定,不能改变。不能通过指针修改所指向的值。
2025-04-21 21:44:58
514
电机工程基于ANSYS Maxwell的永磁同步电机建模与仿真:几何模型构建、材料属性设置及电磁场分析方法详解如何使用ANSYS
2025-04-17
qt串口通信上位机遇到的问题
2023-03-31
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅