# 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关节顺序| |-|-| |![逻辑图](./assets/figures/rl_control_graph.png)|![Kuavo42关节信息](./assets/figures/leju_kuavo42_joints.png)| > 使用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)