rl_sar功能包详解

article/2025/7/28 6:09:13

文章目录

  • 1. 功能包概述
  • 2. 目录结构详解
    • 2.1 核心目录结构
    • 2.2 各目录功能
      • src/ 目录 - C++源代码实现
      • scripts/ 目录 - Python脚本实现
      • include/ 目录 - C++头文件
      • library/ 目录 - 核心库和第三方依赖
      • models/ 目录 - 预训练模型库
      • launch/ 目录 - ROS启动文件
      • worlds/ 目录 - Gazebo仿真世界
      • package.xml:ROS包配置文件
      • CMakeLists.txt:编译配置文件
  • 3. 支持的机器人平台
    • 3.1 仿真支持 (launch/)
    • 3.2 真实机器人支持
  • 4. 模型管理系统
    • 4.1 模型组织结构
    • 4.2 配置文件系统
  • 5. 高级功能
    • 5.1 执行器网络训练 (actuator_net.py)
    • 5.2 观测历史缓冲 (observation_buffer)
  • 6. 使用流程
    • 6.1 仿真运行
    • 6.2 真实机器人部署
    • 6.3 执行器网络训练

1. 功能包概述

rl_sar 是一个专门用于机器人强化学习算法仿真验证与实物部署的ROS功能包。它提供了从仿真训练到真实机器人部署的完整工具链。

2. 目录结构详解

2.1 核心目录结构

src/rl_sar/
├── src/                    # C++源代码
├── scripts/                # Python脚本
├── include/                # C++头文件
├── library/                # 核心库和第三方依赖
├── models/                 # 预训练模型
├── launch/                 # ROS启动文件
├── worlds/                 # Gazebo仿真世界
├── package.xml             # ROS包配置
└── CMakeLists.txt          # 编译配置

2.2 各目录功能

在这里插入图片描述

src/ 目录 - C++源代码实现

  • rl_sim.cpp:仿真环境控制程序

Gazebo仿真环境下的机器人控制
支持键盘和手柄控制
集成ROS话题通信
支持仿真重置和暂停/恢复

  • rl_real_go2.cpp:Unitree Go2真实机器人控制

基于Unitree SDK2
以太网通信
更先进的控制接口
支持网络接口配置

scripts/ 目录 - Python脚本实现

  • rl_sim.py :Python版本仿真控制

与C++版本功能对等
更易于调试和修改
支持相同的ROS接口

  • rl_sdk.py:核心RL SDK Python实现

完整的RL控制框架
观测处理和动作计算
状态机控制逻辑
安全保护机制

  • actuator_net.py :执行器网络训练工具

神经网络模型定义
数据加载和预处理
训练和验证流程
模型保存和加载

  • observation_buffer.py :观测历史缓冲区Python版本

时序观测数据管理
支持多帧历史存储

include/ 目录 - C++头文件

  • rl_sim.hpp :仿真控制类声明

RL_Sim类定义
ROS接口声明
Gazebo服务接口

  • rl_real_go2.hpp:Go2机器人控制类声明

更复杂的控制接口
网络配置选项
高级控制功能

library/ 目录 - 核心库和第三方依赖

  • library/core/ - 核心功能库

rl_sdk/:核心RL SDK C++实现
rl_sdk.hpp:类定义和接口声明
rl_sdk.cpp:完整实现,包括观测处理、控制逻辑、安全机制

  • observation_buffer/:观测缓冲区

observation_buffer.hpp:缓冲区类声明
observation_buffer.cpp:时序数据管理实现

  • loop/:循环控制系统

loop.hpp:高精度定时循环控制
支持多线程实时控制
线程优先级管理

  • matplotlibcpp/:C++绘图库

matplotlibcpp.h:Python matplotlib的C++封装
用于实时数据可视化和调试

  • library/thirdparty/ - 第三方SDK

unitree_legged_sdk_3.2/:Unitree A1 SDK
A1机器人官方SDK
低级控制接口
UDP通信协议

unitree_sdk2/:Unitree Go2 SDK
Go2机器人新版SDK
更高级的控制功能
DDS通信协议

models/ 目录 - 预训练模型库

  • a1/:Unitree A1四足机器人

legged_gym/:基于legged_gym训练的模型
robot_lab/:基于robot_lab(IsaacLab)训练的模型

  • go2/:Unitree Go2四足机器人

himloco/:HiMLoco算法训练的模型
robot_lab/:robot_lab训练的模型

  • g1/:Unitree G1人形机器人
    robot_lab/:robot_lab训练的模型

launch/ 目录 - ROS启动文件

为每种机器人提供专用启动文件:
gazebo_a1.launch:A1仿真启动
gazebo_g1.launch:G1人形仿真启动
gazebo_go2.launch:Go2仿真启动

worlds/ 目录 - Gazebo仿真世界

earth.world:基础平地环境
简单的平坦地面
基础物理设置
适合基本测试

stairs.world:楼梯环境
复杂的楼梯地形
挑战性测试环境
包含多种障碍物

package.xml:ROS包配置文件

包依赖关系定义
版本信息
维护者信息

CMakeLists.txt:编译配置文件

编译选项和依赖
可执行文件定义
库链接配置

3. 支持的机器人平台

3.1 仿真支持 (launch/)

A1, B2, Go2系列:四足机器人
B2W, Go2W, L4W4:轮足机器人
GR1T1, GR1T2, G1:人形机器人

3.2 真实机器人支持

Unitree A1:通过unitree_legged_sdk_3.2
Unitree Go2:通过unitree_sdk2
L4W4轮足机器人:通过l4w4_sdk

4. 模型管理系统

4.1 模型组织结构

models/
├── a1/
│   ├── legged_gym/        # legged_gym训练的模型
│   └── robot_lab/         # robot_lab训练的模型
├── go2/
├── b2/
└── ...

4.2 配置文件系统

每个模型都有独立的config.yaml:

a1/legged_gym:model_name: "model.pt"framework: "isaacgym"          # 训练框架dt: 0.005                      # 控制频率decimation: 4                  # RL推理频率num_observations: 45           # 观测维度observations: ["ang_vel", "gravity_vec", "commands", "dof_pos", "dof_vel", "actions"]rl_kp: [20.0, ...]           # RL控制器增益rl_kd: [0.5, ...]            # RL控制器阻尼action_scale: [0.125, ...]    # 动作缩放torque_limits: [33.5, ...]    # 扭矩限制

5. 高级功能

5.1 执行器网络训练 (actuator_net.py)

用于补偿电机动态特性:

class ActuatorNetwork:# 输入:位置误差、速度、历史信息# 输出:扭矩补偿# 用途:提高sim-to-real的性能

5.2 观测历史缓冲 (observation_buffer)

支持时序观测:

class ObservationBuffer {// 存储多帧历史观测// 支持LSTM等时序模型
};

6. 使用流程

6.1 仿真运行

# 启动仿真环境
roslaunch rl_sar gazebo_a1.launch cfg:=legged_gym# C++版本控制
rosrun rl_sar rl_sim# Python版本控制  
rosrun rl_sar rl_sim.py

6.2 真实机器人部署

# A1机器人
rosrun rl_sar rl_real_a1# Go2机器人
rosrun rl_sar rl_real_go2 <网络接口>

6.3 执行器网络训练

# 训练
rosrun rl_sar actuator_net.py --mode train --data a1/motor.csv --output a1/motor.pt# 验证
rosrun rl_sar actuator_net.py --mode play --data a1/motor.csv --output a1/motor.pt

http://www.hkcw.cn/article/CLZYuxAdBo.shtml

相关文章

InternVL2.5-多模态大模型评估专业图片

具备图像理解功能的大模型InternVL2.5&#xff0c;能有效解析大部分图片。 对于专业图片如医学细胞切片&#xff0c;从专业角度解析&#xff0c;能推动模型应用到更广泛的领域。 InternVL2.5解析示例 prompt(胸部癌变细胞图片,来自PanNuke) 请评估这个组织的风险 InternVL2.…

解决 IDEA 在运行时中文乱码问题

直接说解决办法 编译 IDEA 所在目录的启动的 .vmoptions 文件&#xff0c;添加以下JVM 参数即可 -Dfile.encodingUTF-8如下图所示&#xff0c;Help > Edit Custom VM Options&#xff0c;随后在编辑框中添加-Dfile.encodingUTF-8 的 JVM 参数

【Linux】进程的生命之旅——诞生、消逝与守候(fork/exit/wait)

&#x1f3ac; 个人主页&#xff1a;谁在夜里看海. &#x1f4d6; 个人专栏&#xff1a;《C系列》《Linux系列》《算法系列》 ⛰️ 一念既出&#xff0c;万山无阻 目录 &#x1f4d6;一、进程创建 1.fork函数 &#x1f4da;高层封装特性 &#x1f4da;fork返回值 2.写时拷…

《Linux权威指南:从小白到系统管理员(上册)》深度解析与实践指南

&#x1f482; 个人网站:【 摸鱼游戏】【神级代码资源网站】【星海网址导航】摸鱼、技术交流群&#x1f449; 点此查看详情 引言 Linux 作为现代计算的核心操作系统之一&#xff0c;广泛应用于服务器、云计算、嵌入式开发等领域。《Linux权威指南&#xff1a;从小白到系统管理…

【Linux】信号

目录 一、信号的概念二、信号的产生2.1 通过键盘进行信号的产生2.2 通过系统调用进行信号的产生2.2.1 kill函数2.2.2 raise函数2.2.3 abort函数 2.3 通过异常的方式进行信号的产生2.4 通过软件条件的方式进行信号的产生2.4.1 关闭管道读端2.4.2 alarm函数 2.5 Core Dump&#x…

「模型部署系列」ubuntu 使用vllm部署Qwen3-8B模型

1、下载vllm v0.8.5&#xff08;此处已经下好了&#xff0c;去仓库拉资源&#xff09; 2、 下载Qwen3-8B 方式1: 在下载前&#xff0c;请先通过如下命令安装ModelScope pip install modelscope 命令行下载 下载完整模型库 modelscope download --model Qwen/Qwen3-8B 下…

亮数据与 AI 深度集成:构建电商策略自动化系统新范式

目录 1.引言&#xff1a;电商增长遇瓶颈&#xff0c;AI 能否破局&#xff1f;2.挖掘痛点&#xff1a;精准营销为何难以落地&#xff1f;3.解决之道&#xff1a;为什么选择亮数据而不是传统爬虫&#xff1f;3.1轻松绕过反爬机制&#xff0c;保障数据采集稳定性3.2 零代码门槛&am…

YOLOv12环境配置,手把手教你使用YOLOv12训练自己的数据集和推理(附YOLOv12网络结构图),全文最详细教程

文章目录 前言一、YOLOv12代码下载地址1.YOLOv12模型结构图 二、YOLO环境配置教程1.创建虚拟环境2.激活虚拟环境3.查询自己电脑可支持最高cuda版本是多少&#xff08;无显卡的同学可以跳过这个步骤&#xff09;4.pytorch安装5.验证 PyTorch GPU 是否可用&#xff08;没有显卡的…

Nginx下载与安装(Liunx环境)

1、Nginx下载 官网地址&#xff1a;https://nginx.org/en/download.html 2、安装依赖包 //安装gcc yum install gcc-c //安装PCRE pcre-devel yum install -y pcre pcre-devel //安装zlib yum install -y zlib zlib-devel //安装Open SSL yum install -y openssl openssl-deve…

雷达中实信号与复信号

一、什么是实信号和复信号 实信号是指信号的时域取值在数学表示和物理实现中始终为实数的信号&#xff0c;其基本的表达式为&#xff1a;&#xff1b;复信号是指时域取值在数学表示中始终为复数的信号&#xff0c;其基本的表达式为&#xff1a;。从实信号与复信号的定义可知&am…

【存储基础】NUMA架构

文章目录 1. 前置知识:物理CPU和CPU核心物理CPUCPU核心关系 2. NUMA架构2.1 NUMA架构是什么&#xff1f;2.2 NUMA架构详解2.3 查看NUMA信息2.4 NUMA架构在分布式存储中的应用数据本地化 Data Locality计算与存储协同调度NUMA感知的网络通信内存池优化与跨节点均衡 3 补充&#…

HTTP协议解析

HTTP&#xff08;超文本传输协议&#xff09;是万维网的基础协议&#xff0c;自1991年诞生以来&#xff0c;已成为最广泛使用的应用层协议。本文将深入解析HTTP协议的核心概念、工作原理及实际应用。 HTTP协议基础 什么是HTTP&#xff1f; HTTP (全称为 "超文本传输协…

小麦“颗粒归仓”有了“最强大脑”

全国小麦主产区自南向北陆续进入紧张抢收阶段,夏种也全面展开。河南夏种已完成四成,以玉米、花生为主。安徽夏种已完成近三成,以水稻和玉米为主。各地如何针对天气情况抢抓收获“窗口期”,确保粮食“颗粒归仓”?目前,安徽4300多万亩的小麦收获已接近尾声。当记者来到安徽…

数据结构:递归(Recursion)

目录 示例1&#xff1a;先打印&#xff0c;再递归 示例2&#xff1a;先递归&#xff0c;再打印 递归的两个阶段 递归是如何使用栈内存 复杂度分析 递归中的静态变量 内存结构图解 递归&#xff1a;函数调用自己 必须有判断条件来使递归继续或停止 我们现在通过这两个示…

Python入门手册:类和对象

在Python中&#xff0c;面向对象编程&#xff08;OOP&#xff09;是一种核心的编程范式。通过类和对象&#xff0c;我们可以模拟现实世界中的事物和行为&#xff0c;使代码更加模块化、可复用和易于维护。今天&#xff0c;就让我们深入探讨Python中的类和对象&#xff0c;包括它…

从冷上电到main()函数,Bootloader都做了什么?

目录 1、硬件初始化 2、引导模式与应用模式的抉择 3、启动代码 在嵌入式系统中&#xff0c;从设备上电到执行应用程序的main()函数&#xff0c;Bootloader扮演着至关重要的角色。作为系统启动的首个程序&#xff0c;Bootloader负责初始化硬件、设置运行环境&#xff0c;并最…

电路图识图基础知识-保护环节、自锁环节及互锁环节(十)

1 电路中的自锁环节 自锁环节是指继电器得电后能通过自身的常开触点闭合&#xff0c;给其线圈供电的环节。如图所示的电路图中&#xff0c;辅助电路中并联于启动按钮开关SB2 旁边的KM 常开触点就是自锁环节(此触 电称为自锁触电)。 图中所示的自锁过程是&#xff1a;当QK 闭合后…

Linux Windows之wsl安装使用简介

参考资料 如何使用 WSL 在 Windows 上安装 Linuxwindows11 安装WSL2全流程旧版 WSL 的手动安装步骤 目录 一. 前期准备1.1 确认windows的版本1.2 开启Linux子系统的支持1.2.1 图形化方式1.2.2 命令行方式 1.3 安装wsl软件1.4 安装Linux分发版 二. 基本配置2.1 Windows Termina…

网红家装企业上海总部人去楼空 欠款风波引关注

端午节放假前,每天有上百人来找住范儿,因为公司欠了不少钱。6月1日下午,记者来到住范儿上海公司所在地,发现公司大门被木板封得严严实实。守在门口的保安指着木板上的通知对记者说:“也省得你报警了,直接打派出所电话吧。”据官网介绍,住范儿是家居建材新零售服务商,成…

正则表达式笔记

正则表达式笔记 前言一、基本字符匹配二、字符类三、量词四、定位符五、贪婪匹配和非贪婪匹配六、旗标七、分组和引用八、前瞻九、后顾 前言 参考GeekHour视频和资料&#xff0c;讲的挺好的&#xff0c;B站有[GeekHour正则表达式] 正则表达式在线工具网站&#xff1a;https://…