当前位置: 首页 > news >正文

具身智能系列教程——(三)gazebo环境配置与强化学习训练

系列的最后一篇教程,我来到自己比较擅长的gazebo环境中训练自己的go2机器人,这个也是借鉴了开源资料,我们现在来复现一下。https://github.com/fan-ziqi/rl_sar
通过gazebo来进行仿真,训练强化学习的控制器完成相关任务.
在这里插入图片描述

目录

  • 安装ros
  • 克隆项目并配置
  • 编译项目
    • 实际运行
      • 机器人
    • 控制模型
      • 机器狗

安装ros

我现在使用的是ros2版本下的,用习惯之后其实就能很快实现转换过程了,所以后续应该都是以ros2作为基础版本了.这里安装的是galactic版本.安装过程直接跳过,通过fishros快速安装即可,当然,最初使用的话还是可以使用ros1的,版本为noetic:

wget http://fishros.com/install -O fishros && . fishros.

克隆项目并配置

git clone -b ros2 https://github.com/fan-ziqi/rl_sar.git

安装一些ros的依赖项

sudo apt install ros-$ROS_DISTRO-teleop-twist-keyboard ros-$ROS_DISTRO-ros2-control ros-$ROS_DISTRO-ros2-controllers ros-$ROS_DISTRO-control-toolbox ros-$ROS_DISTRO-robot-state-publisher ros-$ROS_DISTRO-joint-state-publisher-gui ros-$ROS_DISTRO-gazebo-ros2-control ros-$ROS_DISTRO-gazebo-ros-pkgs ros-$ROS_DISTRO-xacrosudo apt install liblcm-dev libyaml-cpp-dev

由于训练使用了torch的cpp库,这里需要一并下载安装,我们通过wget下载:

wget https://download.pytorch.org/libtorch/cpu/libtorch-cxx11-abi-shared-with-deps-2.0.1%2Bcpu.zip

然后解压

unzip libtorch-cxx11-abi-shared-with-deps-2.0.1+cpu.zip -d ./

将libtorch的位置添加到.bashrc的环境变量中,注意修改为自己的路径:

export Torch_DIR=/path/to/your/libtorch

到此位置,项目就配置完毕了

编译项目

通过catkin build编译这个ros项目:

catkin build

source环境变量

source devel/setup.bash

然后运行自己的环境.这个的规则是:

source devel/setup.bashroslaunch rl_sar gazebo_<ROBOT>.launch cfg:=<CONFIG>

然后运行控制模块,包含cpp和python两个版本:

source devel/setup.bash
(for cpp version)    rosrun rl_sar rl_sim
(for python version) rosrun rl_sar rl_sim.py

实际运行

机器人

我们这里就主要运行机器人和机器狗两个内容,对于机器人,我们运行:

source devel/setup.bashroslaunch rl_sar gazebo_g1_12dof.launch cfg:=unitree_rl_gym

在这里插入图片描述
然后启动控制器

source devel/setup.bash
rosrun rl_sar rl_sim

在这里插入图片描述

控制模型

  • 然后进行实际的控制,这里推荐使用手柄来控制,也可用通过键盘,说明如下:
  • 按下可在 running 和 stopped 之间切换模拟器。
  • 按 0 将机器人从初始模拟姿势移动到使用位置控制插值的 YAML 文件中定义的 default_dof_pos。
  • 按 p 切换到强化学习模式。
  • 使用 W/S 向前/向后移动, 使用 J/L 向左/向右移动,使用 A/D 转动。按下可将所有控制命令重置为零。
  • 按 n 切换到导航模式,禁用游戏手柄命令并接收来自 cmd_vel 主题的命令。
  • 如果机器人掉落,请按 R 键重置 Gazebo 环境。
  • 按 1 可使用位置控制插值将机器人从其当前位置移回初始模拟姿势。

对于手柄来说:
按 LB 可在 running 和 stopped 之间切换模拟器。
按 RB + Y 使用位置控制插值将机器人从初始模拟姿势移动到 YAML 文件中定义的 default_dof_pos。
按 RB + B 切换到强化学习模式。
使用 LY 向前/向后移动, 使用 LX 向左/向右移动,使用 RX 转动。
按左侧的向下按钮切换到 Navigation 模式,禁用游戏手柄命令并接收来自 cmd_vel 主题的命令。
如果机器人掉落,请按 RB + X 重置 Gazebo 环境。
按 RB + A 使用位置控制插值将机器人从其当前位置移回初始模拟姿势。

如果是使用手柄,那么先回到rl_sim的终端回车启动simulation(或者LB)
在这里插入图片描述
实际就是控制gazebo环境的起停:
在这里插入图片描述
启动之后RB+Y将其初始化,初始化完成之后的姿态为:
在这里插入图片描述
没有站立,我们这里通过RB + X调用gazebo的reset函数
在这里插入图片描述
此时由于没有加入控制器,所以重置环境后还是会倒下,这时RB + B启动强化学习的控制器
在这里插入图片描述
就可以完美站立了,然后通过方向键来控制它的运动即可.

机器狗

类似的运行

source devel/setup.bashroslaunch rl_sar gazebo_go2.launch cfg:=robot_lab

在这里插入图片描述

然后启动控制器

source devel/setup.bash
rosrun rl_sar rl_sim

他的控制与机器人也是一样的,我们安装:
启动仿真->设置初始关节->启动强化学习控制器->重置gazebo环境的顺序就能够让狗正常站立了
接下来就能够正常运动我们的模型了
在这里插入图片描述
在这里插入图片描述

对于控制器的训练来说,我们也可以训练自己的控制器,这里先留着,后面继续完善强化学习控制器的训练部分.

相关文章:

  • 【git】撤销操作
  • C# 委托(调用带引用参数的委托)
  • 链表题解——删除链表的倒数第 N 个结点【LeetCode】
  • 鸿蒙5:自定义构建函数
  • 聊聊横向移动中的实际技术点 ----- ResponderSMB
  • matlab 渐进三角网(PTD)地面滤波(基础版)
  • Django ORM 2. 模型(Model)操作
  • 机器学习7——神经网络上
  • 高频SQL50题 第九天 | 1164. 指定日期的产品价格、1204. 最后一个能进入巴士的人、1907. 按分类统计薪水
  • pytorch--模型训练的一般流程
  • 1 Studying《Computer Vision: Algorithms and Applications 2nd Edition》11-15
  • MySQL之全场景常用工具链
  • MYSQL与PostgreSQL的差异
  • (Arxiv-2025)Qwen2.5-VL 技术报告
  • mybatis-plus从入门到入土(一):快速开始
  • Embedding模型微调实战(ms-swift框架)
  • 医疗AI智能基础设施构建:向量数据库矩阵化建设流程分析
  • 领域驱动设计(DDD)【28】之实践或推广DDD的学习
  • 左神算法之矩阵旋转90度
  • <STC32G12K128入门第二十二步>STC32G驱动DS18B20(含代码)