rl_sar功能包详解

文章目录

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

1. 功能包概述

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

2. 目录结构详解

2.1 核心目录结构

python 复制代码
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 模型组织结构

python 复制代码
models/
├── a1/
│   ├── legged_gym/        # legged_gym训练的模型
│   └── robot_lab/         # robot_lab训练的模型
├── go2/
├── b2/
└── ...

4.2 配置文件系统

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

python 复制代码
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)

用于补偿电机动态特性:

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

5.2 观测历史缓冲 (observation_buffer)

支持时序观测:

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

6. 使用流程

6.1 仿真运行

python 复制代码
# 启动仿真环境
roslaunch rl_sar gazebo_a1.launch cfg:=legged_gym

# C++版本控制
rosrun rl_sar rl_sim

# Python版本控制  
rosrun rl_sar rl_sim.py

6.2 真实机器人部署

python 复制代码
# A1机器人
rosrun rl_sar rl_real_a1

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

6.3 执行器网络训练

python 复制代码
# 训练
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
相关推荐
外域速览6 小时前
OpenAI 智能体「越狱」风波未平,苹果折叠屏 iPhone Ultra 下周三登场
人工智能·ios·iphone
william_yangshun10 小时前
【AI Agent 实战】agent-vision-toolkit 中文版:给纯文本模型(DeepSeek)装上视觉能力
人工智能·多模态
智能体与具身智能10 小时前
TVA具身智能的概念、架构与应用(19)
人工智能·python·具身智能
AI智能体工作室10 小时前
生产级 RAG 检索增强架构实战:向量数据库、混合检索(Hybrid Search)、RRF 融合与重排(Rerank)全链路
人工智能
geinvse_seg11 小时前
我做了个 AI 架构审查员,把整个微服务项目通读了一遍,还顺手做成了 Skill
人工智能
李帅朋11 小时前
微分基本定义笔记
人工智能·笔记·深度学习·神经网络
醍醐实验室11 小时前
下一代端到端全模态(Omni)模型解密:离散音频 Token 化与极速双工流式交互架构
人工智能
米小虾11 小时前
你的 Agent 有 1000 万上下文,为什么第 50 轮就开始失忆?
人工智能·agent
东风破_11 小时前
Text2SQL :用自然语言操作 SQLite 数据库
人工智能·后端
吴佳浩 Alben11 小时前
Agent 怎么做自动化评测?构建端到端的 Agent Evaluation 体系
人工智能·语言模型·架构·自动化·ai编程