自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(134)
  • 收藏
  • 关注

原创 C++ 进程间通信举例

上述示例展示了 C++ 中几种常见的进程间通信方法。管道(Pipe):适用于父子进程间的简单通信。消息队列(Message Queue):适用于需要消息优先级和复杂通信的场景。共享内存(Shared Memory):适用于需要快速数据交换的场景,但需要注意同步问题。信号(Signals):适用于异步事件通知。这些方法各有优缺点,可以根据具体需求进行选择和组合使用。

2024-07-07 22:57:28 187

原创 强化学习与控制模型结合例子

通过结合控制模型(如LQR)和强化学习算法(如DQN),我们可以利用控制模型提供的动态信息和稳定性保障,同时利用RL的学习能力优化控制策略。这种结合方法不仅提高了系统的鲁棒性,还加快了学习速度,适用于各种复杂的机器人控制任务。

2024-07-07 22:42:36 371

原创 dreamerV3 控制人形机器人行走举例

DreamerV3 是一种先进的强化学习算法,它结合了模型预测控制(MPC)和深度学习,能够在复杂环境中实现高效的学习和控制。DreamerV3 通过构建环境的动态模型并使用该模型进行多步预测和优化,来学习复杂任务如人形机器人行走

2024-07-06 15:41:24 448

原创 TD-MPC(Temporal Difference Model Predictive Control)人形机器人行走举例

基于TD-MPC的人形机器人行走任务通过结合时序差分学习和模型预测控制,可以实现对复杂物理系统的有效控制。通过构建动力学模型,进行多步预测和优化,并结合TD方法更新策略,可以大大提高学习效率和模型的准确性。这种方法在处理如人形机器人行走等复杂任务时,展示了其独特的优势和潜力。

2024-07-06 15:29:45 181

原创 模型强化学习人形机器人行走任务

动力学约束强化学习方法通过显式地将物理动力学模型引入学习过程,结合模型学习和优化来提高学习效率和模型的准确性。

2024-07-06 15:20:24 377

原创 贝尔曼方程人形机器人举例

贝尔曼方程(Bellman Equation)是强化学习中的核心方程,用于表示状态值函数和动作值函数之间的关系。通过贝尔曼方程,可以递归地计算状态或状态-动作对的价值。为了更好地理解贝尔曼方程在强化学习中的应用,下面我们以人形机器人行走任务为例进行讲解。

2024-07-06 11:58:08 66

原创 贝尔曼方程(Bellman Equation)

贝尔曼方程(Bellman Equation)是动态规划和强化学习中的核心概念,用于描述最优决策问题中的价值函数的递归关系。它为状态值函数和动作值函数提供了一个重要的递推公式,帮助我们计算每个状态或状态-动作对的预期回报。

2024-07-06 11:50:29 122

原创 PPO控制人形机器人行走举例

PPO算法主要有两种变体:PPO-Clip 和 PPO-Penalty。这里主要介绍PPO-Clip,因为它更常用。继承HumanoidEnv并重写step方法。在step方法中,我们计算了原始的状态、奖励、终止标志和信息。forward_reward:机器人在x方向上的速度,鼓励机器人前进。control_cost:控制成本,惩罚动作幅度过大的行为。contact_cost:接触成本,惩罚机器人身体接触地面。

2024-07-06 11:24:55 266

原创 人形机器人强化学习控制分类

人形机器人(Humanoid Robot)的控制是机器人学中的一个重要研究方向,其中强化学习(Reinforcement Learning, RL)技术近年来得到了广泛的应用。

2024-07-06 09:59:49 469

原创 C++ 多线程举例

通过这些示例,我们展示了如何在C++中使用多线程,包括创建和启动线程、传递参数、线程间同步以及条件变量的使用。多线程编程在提高程序并发性能方面非常有用,但需要注意同步和数据竞争问题,以确保线程安全。

2024-06-20 10:38:24 148

原创 C++函数作为参数

我们展示了如何在C++中将函数作为参数传递给另一个函数,包括普通函数、std::function 和 std::bind、lambda表达式以及类成员函数

2024-06-20 10:13:48 448

原创 C++函数举例

C++函数是程序执行的基本单元,可以分为多种类型,包括普通函数、内联函数、递归函数、函数模板、成员函数等。下面我们详细介绍各种类型的函数及其用法。

2024-06-20 10:09:20 59

原创 C++ 宏定义(Macro Definition)用法举例

在C++中,宏定义(Macro Definition)是一种预处理器指令,主要用于定义常量、函数宏和条件编译。宏定义有多种形式,每种形式都用于不同的编程场景

2024-06-20 09:02:04 128

原创 C++ lambda表达式举例

Lambda表达式是一种简洁的方式来创建匿名函数,可以直接在函数调用的地方定义,主要用于简化代码

2024-06-19 22:03:17 192

原创 MPC与DDP结合案例

通过这种方式,我们结合了DDP和MPC的方法,利用DDP生成全局轨迹,MPC在执行过程中进行实时调整,以应对环境变化和不确定性。这种方法可以在保持全局最优性的同时,提供实时控制的灵活性和鲁棒性

2024-06-19 18:54:28 506

原创 DDP算法之反向传播(Backward Pass)

在DDP(Differential Dynamic Programming)算法中,反向传播(Backward Pass)是关键步骤之一。这个步骤的主要目的是通过动态规划递归地计算每个时间步上的值函数和控制策略,以便在前向传播(Forward Pass)中使用。

2024-06-19 16:34:58 98

原创 DDP算法之线性化和二次近似(Linearization and Quadratic Approximation)

在DDP算法中,第三步是线性化系统动力学方程和二次近似代价函数。这一步是关键,它使得DDP能够递归地处理非线性最优控制问题。通过线性化和二次近似,我们将复杂的非线性问题转换为一系列简单的线性二次问题,逐步逼近最优解

2024-06-18 23:38:01 133

原创 DDP(Differential Dynamic Programming)算法举例

DDP(Differential Dynamic Programming)是一种用于求解非线性最优控制问题的递归算法。它基于动态规划的思想,通过线性化系统的动力学方程和二次近似代价函数,递归地优化控制策略。DDP的核心在于利用局部二次近似来简化全局非线性最优控制问题,从而高效地求解控制策略

2024-06-18 16:43:27 344

原创 DDP、FDDP、BOXDDP算法概要

DDP是一种递归的最优控制算法,基于动态规划原理。它在给定初始条件和目标的情况下,通过迭代改进控制策略,使系统的轨迹逐步逼近最优轨迹。DDP通过线性化系统的动态方程和二次近似代价函数来求解。FDDP是DDP的一种改进版本,重点在于确保每次迭代产生的控制输入和状态轨迹是可行的。它在每次迭代中调整控制输入,使系统轨迹尽可能满足动力学和约束条件。BOXDDP是在DDP算法基础上,进一步考虑了控制输入的范围约束(即控制输入的上下限)。这对于实际应用中常见的物理限制非常重要。

2024-06-18 12:44:53 233

原创 线性二次型调节器(LQR)举例

线性二次型调节器(LQR)是一种用于最优控制的问题,其中目标是通过最小化某个代价函数来找到最优控制策略。LQR特别适用于线性系统。为了在人形机器人上应用LQR进行建模,主要步骤包括建立系统模型、定义代价函数以及求解最优控制律。以下是详细步骤:首先,建立人形机器人的线性状态空间模型。一般形式如下:其中,x(t) 是状态向量,u(t) 是控制向量,A 是系统矩阵,B 是输入矩阵,C 是输出矩阵,D 是直接传输矩阵。LQR的目标是最小化以下二次型代价函数:为了找到最优控制律,需要求解Riccati方程:

2024-06-18 10:17:38 315

原创 pinocchio计算MPC控制状态方程AB矩阵

Pinocchio是一个用于机器人动力学和运动学计算的库,广泛应用于机器人控制和仿真中。为了在MPC控制中使用Pinocchio计算状态方程的线性化矩阵 A 和 B

2024-06-16 11:27:34 227

原创 MPC质心跟随控制(CoM Tracking Control)

在人形机器人中,质心(CoM)的跟随控制是保持机器人稳定和协调运动的关键技术之一。模型预测控制(MPC)是一种先进的控制方法,通过解决在线优化问题来控制机器人质心的位置和速度。下面我们详细介绍如何使用MPC实现质心跟随控制。

2024-06-16 11:12:09 249

原创 SQP序列二次规划(Sequential Quadratic Programming, SQP)

SQP是一种用于解决非线性优化问题的迭代方法。它通过将原始非线性优化问题分解为一系列的二次规划(Quadratic Programming, QP)子问题来近似求解。每个QP子问题在当前迭代点上构造并求解,以更新迭代点

2024-06-14 11:34:26 694

原创 C++智能指针举例

C++11标准引入了智能指针,旨在自动管理动态内存,避免内存泄漏和悬挂指针问题。C++标准库提供了三种主要的智能指针类型:std::unique_ptr、std::shared_ptr和std::weak_ptr。下面分别介绍它们的使用场景及示例代码。

2024-06-14 11:14:39 67

原创 C++ const关键字有多种用法举例

可以用来修饰变量、指针、函数参数、成员函数等。可以看到const在C++中有多种用法,主要用于保证数据的不可变性,增强代码的安全性和可读性。在实际编程中,根据需要选择适当的const用法,可以有效避免意外修改数据,提高程序的稳定性。

2024-06-14 11:05:43 140

原创 C++函数参数传递

按值传递:适用于传递简单数据类型(如int, double等),避免函数内部修改外部数据,缺点是对于大型对象会有复制开销。按引用传递:适用于需要在函数内部修改外部数据的场景,同时避免了复制开销,缺点是容易导致不小心修改外部数据。按指针传递:适用于动态内存管理或需要传递数组等数据结构的场景,指针需要进行空值检查,增加了程序复杂性。每种方式都有其适用场景和优缺点。

2024-06-14 10:50:02 44

原创 Kinodynamic RRT-connect(Rapidly-exploring Random Tree-Connect)算法例子

是一种结合了快速扩展随机树(RRT)和动力学约束的路径规划算法。它特别适用于需要考虑动力学和运动学约束的复杂机器人系统,如人形机器人、无人驾驶汽车等。

2024-06-14 10:27:15 179

原创 阻抗控制(Impedance Control)和导纳控制(Admittance Control)例子

是两种用于机械臂或机器人交互控制的策略。阻抗控制定义的是机器人端部的力和位置之间的关系,而导纳控制则定义的是外力和运动之间的关系。导纳控制常用于处理机器人与环境交互中的力控制问题。

2024-06-13 22:15:19 517

原创 雅可比矩阵奇异求解

在机械臂控制中,出现奇异矩阵(即不可逆矩阵)时,通常意味着雅可比矩阵在某些位置上失去了满秩性质,导致某些方向上的运动不可行或不可控。

2024-06-13 21:49:29 448

原创 卡尔曼滤波器例子

卡尔曼滤波器(Kalman Filter)是一种用于线性系统状态估计的递归算法,可以有效地融合传感器数据和系统模型来估计系统的状态。它在机器人学中广泛应用,尤其是位置和速度等状态的估计。通过卡尔曼滤波器,可以有效地估计机器人在二维平面内的真实位置,并减小测量噪声的影响。这在机器人导航、跟踪和定位等应用中非常有用。以下是一个使用卡尔曼滤波器来估计人形机器人位置状态的示例。

2024-06-09 22:53:18 162

原创 非线性模型预测控制NMPC例子

非线性模型预测控制(Nonlinear Model Predictive Control, NMPC)是一种用于控制非线性系统的高级控制策略。与线性MPC不同,NMPC需要处理系统的非线性特性,这使得优化问题更加复杂。NMPC通常使用迭代优化算法来求解非线性优化问题。

2024-06-09 21:56:09 410

原创 二次规划问题(Quadratic Programming, QP)原理例子

一个标准的二次规划问题可以表示为:x 是待优化的变量向量。Q 是对称半正定矩阵,定义了目标函数的二次项。c 是线性项的系数向量。A 是不等式约束的系数矩阵。b 是不等式约束的边界向量。E 是等式约束的系数矩阵。d 是等式约束的边界向量。

2024-06-09 17:02:14 570

原创 连续状态方程的离散化例子

在控制系统中,连续状态方程的离散化是一个重要的步骤,用于将连续时间系统转换为离散时间系统,以便在数字控制器中实现。这通常涉及将连续时间的微分方程转换为离散时间的差分方程。常用的离散化方法运行上述代码后,你将得到连续时间系统离散化后的状态矩阵和输入矩阵。通过这些离散化方法,可以将连续时间系统转换为离散时间系统,以便在数字控制器中实现控制算法。这三种离散化方法各有优缺点,选择合适的方法取决于具体的应用场景和系统特性。

2024-06-09 16:44:52 357

原创 里卡提方程(Riccati Equation)例子

里卡提方程(Riccati Equation)在人形机器人控制中有重要的应用,特别是在最优控制和估计问题中。里卡提方程主要用于求解线性二次型调节器(LQR, Linear Quadratic Regulator)和卡尔曼滤波器(Kalman Filter)。这些方法有助于提高机器人控制的稳定性和性能。离散时间里卡提方程的一般形式为:LQR 是一种经典的最优控制方法,通过求解里卡提方程来最小化控制系统的性能指标。对于给定的线性系统:卡尔曼滤波器用于最优状态估计问题,通过求解里卡提方程来计算最优估计增益。对

2024-06-09 16:22:31 361

原创 步态控制之捕获点(Capture Point,CP)

捕获点(Capture Point,CP)是机器人学中的一个重要概念,用于评估和控制机器人步态的稳定性。捕获点表示机器人需要踏出的下一步位置,以确保在动态条件下的稳定性。它特别适用于步态控制和动态行走控制。

2024-06-09 16:02:49 161

原创 步态控制之足旋转点(Foot Rotation Indicator, FRI)

足旋转点是人形机器人步态规划中的一个关键概念,用于描述步态过程中机器人脚部的旋转和稳定性。FRI 可以帮助确定机器人在行走时是否稳定,以及如何调整步态以保持稳定。下面详细介绍FRI的原理,并举例说明其应用。

2024-06-09 15:47:03 79

原创 状态方程ABCD矩阵如何确定例子

确定状态空间表示中的状态矩阵A、输入矩阵 B、输出矩阵C 和直通矩阵D,需要从系统的动力学方程出发,并将其转换为状态方程的形式。我们可以通过一个具体的物理系统(如倒立摆系统)来说明这一过程。

2024-06-09 15:30:01 500

原创 拉格朗日乘子将不等式约束转化为等式约束例子

拉格朗日乘子法是求解带约束优化问题的一种方法。对于有不等式约束的问题,可以通过引入松弛变量将不等式约束转换为等式约束,然后构拉格朗日函数。

2024-06-09 11:50:27 204

原创 逆运动学IK原理举例说明

逆运动学(Inverse Kinematics, IK)是计算机器人各个关节的位置和角度,使机器人末端(如手或脚)达到目标位置的过程。IK 是机器人学中的一个重要问题,因为它允许我们从任务空间(如末端执行器的位置和姿态)控制机器人关节空间(如关节角度)。

2024-06-09 11:18:50 159

原创 MPC+WBC多任务优先级控制例子

该示例展示了如何使用CasADi库实现包含多个任务优先级的WBC,并结合MPC进行控制。

2024-06-09 10:57:29 357

空空如也

空空如也

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

TA关注的人

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