# kuavo-rl-opensource
**Repository Path**: wty-yy/kuavo-rl-opensource
## Basic Information
- **Project Name**: kuavo-rl-opensource
- **Description**: fork from https://gitee.com/leju-robot/kuavo-rl-opensource/tree/beta/
- **Primary Language**: C++
- **License**: Not specified
- **Default Branch**: beta
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 8
- **Created**: 2025-02-21
- **Last Updated**: 2025-04-13
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 如何使用(tiny)
> 使⽤强化学习算法接收⼿柄信号控制机器⼈运动,运动⽅向包括:前后左右平移、左转、右转。
|乐聚原版的RL控制逻辑图|Kuavo 42关节顺序|
|-|-|
|||
> 使用rviz和joint_state_publisher_gui查看机器人关节, 编译后直接启动: `roslaunch /root/kuavo_ws/src/kuavo_assets/models/biped_s42/launch/display.launch`
## 真机预配置
> 此部分和[kuavo-ros-opensource](https://gitee.com/leju-robot/kuavo-ros-opensource/tree/dev/)类似
**版本确定**:在 `~/.bashrc` 或 `~/.zshrc` 中已经对 `export ROBOT_VERSION=42` 参数进行过配置,无需重复配置
**质量确定**:在机器人出场后会对机器人重新称重,例如我们这台重量为51.7kg,需要将该数字`51.7`写入到`~/.config/lejuconfig/TotalMassV${ROBOT_VERSION}`文件中,修改完成后,编译项目会自动修改相应文件(参考[commit-b379](https://github.com/wty-yy/kuavo-xjtu-controller/commit/b3797a96b0f3c38e2c7e0f648ebec3a55e8229cb))
**实机代码编译**:将[`ocs2_h12pro_monitor.service`](./src/humanoid-control/h12pro_controller_node/services/ocs2_h12pro_monitor.service)中三个绝对路径改为正确路径,执行下述命令进行编译
```bash
cd rl-controller-xjtu # 进入仓库目录
# 重要!! 每次重编译项目时, 必须source驱动
# bash
source installed/setup.bash
# zsh
source installed/setup.zsh
catkin init --workspace # 初始化catkin工作空间
catkin clean # 清理之前编译的内容
catkin build -DPYTHON_EXECUTABLE=/usr/bin/python3 rl_controller_xjtu humanoid_controllers
```
如果是**某种特殊**电机需要修改如下信息
修改 kuavo-rl-opensource/src/kuavo_assets/config/kuavo_v42/kuavo.json中的第40⾏(可以自动修改电机驱动的速度增益系数)
```json
# "use_anthropomorphic_gait":false,
# 改为:
"use_anthropomorphic_gait":true,
```
## Docker使用
可以直接使用我基于官方Docker镜像[kuavo_opensource_ocs2_mpc_wbc_img_0_3.tar](https://kuavo.lejurobot.com/docker_images/kuavo_opensource_ocs2_mpc_wbc_img_0_3.tar)配置好的镜像,已上传到Docker hub:[wtyyy/ros:ros1-noetic-leju-kuavo-v1(无torch,onnx)](https://hub.docker.com/repository/docker/wtyyy/ros/tags/ros1-noetic-leju-kuavo-v1/sha256:ff14a955aea13ef709959939510f6bfc9bd01541c136dba0a183e324387924c4), ,[wtyyy/ros:ros1-noetic-leju-kuavo-v2(含torch,onnx,支持python推理)](https://hub.docker.com/repository/docker/wtyyy/ros/tags/ros1-noetic-leju-kuavo-v2/sha256:932262098a227831ba3425c627507a304bf295793c65244791cfdf5a79fabe59)启动脚本如下:
- 无显卡,执行[./docker/run.sh](./docker/run.sh)
- 有Nvidia显卡,执行[./docker/run_gpu.sh](./docker/run_gpu.sh)
> 注:Nvidia显卡需要安装`nvidia-container-toolkit`,参考[我的blog - Docker Nvidia显卡渲染](https://wty-yy.github.io/posts/51856/#nvidia%E6%98%BE%E5%8D%A1%E6%B8%B2%E6%9F%93)
查看脚本可知,本项目`kuavo-rl-opensource`挂在在`~/kuavo_ws`下,因此下文中`cd kuavo-rl-opensource`变为`cd ~/kuavo_ws`即可
## 程序启动及⼿柄控制
```bash
#新开终端
cd kuavo-rl-opensource
sudo su
source devel/setup.bash
# 仿真
# joystick_type手柄配置选项有bt2, bt2pro, xbox_series
roslaunch rl_controller_xjtu load_kuavo_mujoco_sim.launch joystick_type:=xbox_series
# 启动rl控制器、wbc、仿真器
# 实物
roslaunch rl_controller_xjtu load_kuavo_real.launch cali:=true cali_arm:=true joystick_type:=bt2pro
# 可以选择cali:=true 进⾏标定,cali_arm:=true 进⾏机械臂标定。
```
### 仿真
在弹出的mujoco界面中,终端输入"l",即可开始强化学习控制。 可以通过修改launch文件wbc_frequency、sensor_frequency参数来调整控制器、传感器的频率,也可以通过修改launch文件wbc_rl_param参数来调整RL算法的参数。
```xml
```
### 真机
- 程序启动以后,确保⼿柄连接上仿真pc,或实物下位机。按下lb解锁,解锁后按下X,进入强化学习控制模式
- 此时可以通过摇杆控制机器⼈
## 手柄控制
该遥控器沿⽤了[kuavo-ros-opensource](https://gitee.com/leju-robot/kuavo-ros-opensource/tree/dev/)的遥控器控制,但有些按钮和功能有所不同:
- A: STANCE 同时会上锁
- B: TROT / STANCE 切换
- X: INTO RL-Control
- Y: NONE
- LB: 解锁,解锁后可以进⾏踏步或者其他动作
- 摇杆控制腿部运动
- 左摇杆控制前后左右
- 右摇杆控制左右转
- start键实物控制时⽤于从悬挂准备阶段切换到站立
- back键⽤于退出所有节点
## 代码设计
- 主要RL控制控制代码[`humanoidController.cpp`文件分析](./assets/docs/humanoidController分析.md)