动手人形机器人(RL)

1 PPO的讲解

核心步骤,如策略网络和价值网络的定义、优势估计、策略更新、价值更新等基础功能的实现

2 代码构成

可能涉及

初始化,Behavior Clone

3 动手强化学习

import pytorch as torch
class actorcritic ##等待补充

 

4 PD Gains

在机器人学中,PD gains(比例 - 微分增益) 是指比例控制(Proportional control)和微分控制(Derivative control)中的增益参数,分别称为 P gain(比例增益)D gain(微分增益),它们是 PD 控制算法的核心组成部分,对机器人的运动控制性能起着关键作用。具体如下:

1. P gain(比例增益)

  • 作用:与机器人当前的误差(如位置误差、角度误差等)成正比,用于快速响应误差。例如,当机器人的机械臂需要移动到某个目标位置时,若实际位置与目标位置存在误差,比例增益会根据误差大小输出一个控制量,推动机械臂向减小误差的方向运动。
  • 影响:比例增益越大,系统对误差的响应越迅速,但过大的比例增益可能导致系统超调(即运动超过目标位置),甚至产生震荡,使机器人运动不稳定。

2. D gain(微分增益)

  • 作用:与误差的变化率成正比,用于预测误差的变化趋势。它能根据误差变化的快慢调整控制量,抑制超调,增加系统的稳定性。例如,当机械臂接近目标位置时,微分增益会检测到误差变化率减小,提前降低控制量,使机械臂平稳停止,避免冲过目标位置。
  • 影响:合适的微分增益可以改善系统的动态特性,减少调整时间;但微分增益过大可能使系统对噪声过于敏感(如传感器噪声会被放大影响控制),过小则难以有效抑制超调。

机器人学中的应用示例

在机器人的关节控制中,PD 控制常用于调节电机的输出。例如,若机器人某关节需要从当前角度转动到目标角度:

  • 当角度误差较大时,比例增益起主导作用,快速驱动关节向目标角度转动;
  • 随着角度误差减小,微分增益根据误差变化率调整输出,使关节平稳地停在目标角度,避免来回晃动。
## 机器人关节电机控制模式及参数class control:## 控制类型:位置控制、速度控制、扭矩控制control_type = 'P' # P: position, V: velocity, T: torques## PD驱动的参数## stiffness代表刚度系数k_p damping代表阻尼系数k_dstiffness = {'joint_a': 10.0, 'joint_b': 15.}  # [N*m/rad]damping = {'joint_a': 1.0, 'joint_b': 1.5}     # [N*m*s/rad]## 公式如下,与action的转化为什么要有这样的比例因子暂未明白# action scale: target angle = actionScale * action + defaultAngleaction_scale = 0.5## decimation: Number of control action updates @ sim DT per policy DT## 仿真环境的控制频率/decimation=实际环境中的控制频率decimation = 4

5 相关研究分享

1 CMU的H2O

Learning Human-to-Humanoid Real-Time Whole-Body TeleoperationLearning Human-to-Humanoid Real-Time Whole-Body Teleoperationhttps://human2humanoid.com/

2 leggedgym

ETH开发的库函数

https://github.com/leggedrobotics/legged_gymhttps://github.com/leggedrobotics/legged_gym

如何使用?:

  1. Train:
    python legged_gym/scripts/train.py --task=anymal_c_flat
    • To run on CPU add following arguments: --sim_device=cpu, --rl_device=cpu (sim on CPU and rl on GPU is possible).
    • To run headless (no rendering) add --headless.
    • Important: To improve performance, once the training starts press v to stop the rendering. You can then enable it later to check the progress.
    • The trained policy is saved in issacgym_anymal/logs/<experiment_name>/<date_time>_<run_name>/model_<iteration>.pt. Where <experiment_name> and <run_name> are defined in the train config.
    • The following command line arguments override the values set in the config files:
    • --task TASK: Task name.
    • --resume: Resume training from a checkpoint
    • --experiment_name EXPERIMENT_NAME: Name of the experiment to run or load.
    • --run_name RUN_NAME: Name of the run.
    • --load_run LOAD_RUN: Name of the run to load when resume=True. If -1: will load the last run.
    • --checkpoint CHECKPOINT: Saved model checkpoint number. If -1: will load the last checkpoint.
    • --num_envs NUM_ENVS: Number of environments to create.
    • --seed SEED: Random seed.
    • --max_iterations MAX_ITERATIONS: Maximum number of training iterations.
  2. Play a trained policy:
    python legged_gym/scripts/play.py --task=anymal_c_flat
    • By default, the loaded policy is the last model of the last run of the experiment folder.
    • Other runs/model iteration can be selected by setting load_run and checkpoint in the train config.

3 RL_rsl

https://github.com/leggedrobotics/rsl_rlhttps://github.com/leggedrobotics/rsl_rl

快速、简单地实现RL算法,旨在在GPU上完全运行。 这段代码是一个进化过程。rl-pytorchNVIDIA 的 Isaac GYM 发布。

使用框架的环境存储库:

  • Isaac Lab(建立在NVIDIA Isaac Sim之上):https://github.com/isaac-sim/IsaacLab
  • Legged-Gym(基于 NVIDIA Isaac Gym 构建):https://leggedrobotics.github.io/legged_gym/

PPO主要分支支持PPO和学生教师蒸馏,以及我们研究的其他功能。这些包括:

  • 随机网络蒸馏(RND)https://proceedings.mlr.press/v229/schwarke23a.html - 通过添加来鼓励探索 好奇心驱动的内在奖励。
  • 基于对称性的增强https://arxiv.org/abs/2403.04359 - 使学习的行为更加对称。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/900750.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mujoco xml模型

Mujoco xml模型 一个例子compileroptionassetmesh default基本使用childclass与class多个class worldbodybody关系inertialjointgeom XML主要分为以下三个部分&#xff1a; < asset> &#xff1a; 用 tag导入STL文件&#xff1b;< worldbody>&#xff1a;用tag定义…

【Redis】背景知识

一、Redis的特性 Redis是一种基于键值对&#xff08;key-value&#xff09;的NoSQL数据库&#xff0c;与很多键值对数据库不同的是&#xff0c;Redis中的值可以是由string&#xff08;字符串&#xff09;&#xff0c;hash&#xff08;哈希&#xff09;&#xff0c;list&#xf…

Redis的used_memory_peak_perc和used_memory_dataset_perc超过90%会怎么样

当Redis的used_memory_peak_perc&#xff08;当前内存占历史峰值的百分比&#xff09;和used_memory_dataset_perc&#xff08;数据集内存占比&#xff09;均超过90%时&#xff0c;可能引发以下问题及风险&#xff1a; 一、used_memory_peak_perc > 90% 的影响 内存交换风险…

嵌入式---灰度传感器

灰度传感器概览 一、定义与核心功能 1. 定义 灰度传感器是一种基于 光反射原理 的光电传感器&#xff0c;通过检测物体表面对入射光&#xff08;多为红外光或可见光&#xff09;的反射强度&#xff0c;将光信号转换为电信号&#xff0c;从而判断目标物体的 灰度值&#xff0…

0303hooks-react-仿低代码平台项目

文章目录 1. 副作用2.其他内置hooks2.1 useEffect2.2 useRef2.3useMemo2.4 useCallback 3.自定义hooks4. 第三方hooks5. hooks使用原则6. hooks闭包陷阱7. 总结结语 1. 副作用 当组件渲染完成时&#xff0c;加载一个Ajax网络请求当某个state更新时&#xff0c;加载一个Ajax网络…

Zephyr、FreeRTOS、RT-Thread 定时器区别分析

一、核心特性对比 特性ZephyrFreeRTOSRT-Thread定时器类型系统定时器&#xff08;k_timer&#xff09;、硬件定时器软件定时器&#xff08;基于系统tick&#xff09;软件定时器、硬件定时器定时模式单次、周期性单次、自动重载&#xff08;周期性&#xff09;单次、周期、自定…

手撕unique_ptr 和 shareed_ptr

文章目录 unique_ptrshared_ptr unique_ptr template<class T> class Unique_ptr { private:T* ptrNULL; public://1、删除默认的拷贝构造函数Unique_ptr(Unique_ptr& u) delete;//2、删除默认的复制构造Unique_ptr& operator(Unique_ptr& u) delete; …

对比 HashMap 和 ConcurrentHashMap 扩容逻辑的差异

HashMap 和 ConcurrentHashMap 在 扩容逻辑 上有明显的差异&#xff0c;尤其是在并发环境下的处理策略&#xff0c;这是它们核心区别之一。 &#x1f9f1; 一、总体对比表&#xff08;JDK 8 为例&#xff09; 特性HashMapConcurrentHashMap线程安全❌ 否✅ 是是否支持并发扩容…

Linux 的准备工作

1.root用户登录 首先讲一下root账户怎么登陆 直接 ssh root 公ip地址就可以了 比如我的是腾讯云的 这个就是公ip 下面所有普通用户的操作都是在root账户下进行的 2.普通用户创建 创建用户指令 adduser 用户名 比如说这个指令 我创建了一个ly_centos的普通用户 3.普通用…

自动变为 VIP 文章

今天突然发现自己写的大部分文章都被自动设为了VIP文章。 我这才想起来以前好像填过一个什么表&#xff0c;说要允许CS-DN把自己写的文章自动设为VIP文章。 我也忘了为啥要允许CSDN动我写的文章了&#xff0c;把几乎所有文章都给设为VIP显然是不合适的&#xff0c;毕竟文章是给…

Vue3+Vite+TypeScript+Element Plus开发-08.登录设计

系列文档目录 Vue3ViteTypeScript安装 Element Plus安装与配置 主页设计与router配置 静态菜单设计 Pinia引入 Header响应式菜单缩展 Mockjs引用与Axios封装 登录设计 登录成功跳转主页 多用户动态加载菜单 文章目录 目录 系列文档目录 文章目录 前言 一、登录mo…

全新二手罗德SMCV100B信号发生器SMBV100A

全新二手罗德SMCV100B信号发生器SMBV100A SMCV100B信号发生器SMBV100A主要特点 适用于广播电视、导航、蜂窝和无线应用的多标准平台 全软件选件定义的矢量信号发生器&#xff0c;具备 5″ 触摸屏 全新的射频信号生成概念&#xff0c;频率范围介于 4 kHz 至 7.125 GHz 输出功率…

spring mvc @ResponseBody 注解转换为 JSON 的原理与实现详解

ResponseBody 注解转换为 JSON 的原理与实现详解 1. 核心作用 ResponseBody 是 Spring MVC 的一个注解&#xff0c;用于将方法返回的对象直接序列化为 HTTP 响应体&#xff08;如 JSON 或 XML&#xff09;&#xff0c;而不是通过视图解析器渲染为视图&#xff08;如 HTML&…

OpenCV——图像融合

OpenCV——图像融合 一、引言1.1 图像融合分类 二、C代码实现三、效果展示3.1 标准球3.2 铝制底座 一、引言 在许多计算机视觉应用中(例如机器人运动和医学成像)&#xff0c;需要将来自多幅图像的相关信息集成到一幅图像中。这种图像融合将提供更高的可靠性、准确性和数据质量…

机器学习之PCA主成分分析详解

文章目录 引言一、PCA的概念二、PCA的基本数学原理2.1 内积与投影2.2 基2.3 基变换2.4 关键问题及优化目标2.5 方差2.6 协方差2.7 协方差矩阵2.8 协方差矩阵对角化 三、PCA执行步骤总结四、PCA参数解释五、代码实现六、PCA的优缺点七、总结 引言 在机器学习领域&#xff0c;我…

springboot自动配置原理例子讲解

Spring Boot 的自动配置是其核心特性之一&#xff0c;它帮助开发者**"开箱即用"**地使用各种第三方库或 Spring 组件&#xff0c;而无需手动配置 Bean。这一切的背后&#xff0c;都依赖于 Spring Boot 的自动配置机制。 我们分两部分来说&#xff1a; Spring Boot 自…

一款基于 .NET 8 + Vue 开源的、企业级中后台权限管理系统

前言 今天大姚给大家分享一款基于 .NET 8 Vue 开源、前后端分离的企业级中后台权限管理系统&#xff0c;助力快速完成常规业务需求开发&#xff1a;ApeVolo.Admin。 项目介绍 ApeVolo.Admin 一款基于.NET 8、SqlSugar、Vue、Elment UI、RBAC、前后端分离、开源&#xff08;…

vue3腾讯云直播 前端推流

1、在index.html文件中引入&#xff08;在body体中&#xff09; <script src"https://video.sdk.qcloudecdn.com/web/TXLivePusher-2.1.1.min.js" charset"utf-8"></script> 2、vue文件中&#xff0c;添加video推流&#xff08;我用的推流地…

蓝叠模拟器过检测全攻略

BlueStacks蓝叠MagiskLsposed安装和过应用检测教程 蓝叠MagiskLsposed安装和过应用检测教程 引言 蓝叠模拟器凭借其出色的性能和兼容性&#xff0c;在电脑上运行安卓应用和游戏方面备受青睐。然而&#xff0c;众多应用和游戏为确保公平性与安全性&#xff0c;加入了模拟器检测…

Flutter Invalid constant value.

0x00 问题 参数传入变量&#xff0c;报错&#xff01; 代码 const Padding(padding: EdgeInsets.all(20),child: GradientProgressIndicator(value: _progress), ),_progress 参数报错&#xff1a;Invalid constant value. 0x01 原因 这种情况&#xff0c;多发生于&#xff…