Legged_control 本地部署指南(小白友好版)

笔者最近看MIT的cheetah mini论文,看得头昏脑涨,头晕目眩,头重脚轻,灵魂出窍。相关开源代码因为体系过于复杂,且包含上下位机所有软件部分,实在难以下手研究。但天无绝人之路,这时看到了github上qiayuanl大佬做的legged_control项目。legged_control提供了一个清晰的步骤,帮助我们理解和操作基于OCS2和ros-controls的非线性MPC与WBC框架。且legged_control项目遵循标准的ROS工作空间结构,易于部署和理解。笔者从中受益匪浅,故整理自己在本地部署时的步骤细节和报错解决方案,方便大家在本地的部署。

关键子目录的概览

  • docs - 包含项目文档和说明。
  • legged_common - 共享的数据结构和函数库。
  • legged_control - 主控制堆栈的源码,实现了NMPC和WBC的核心算法。
  • legged_controllers - 控制器的具体实现,如腿部运动模式控制器。
  • legged_estimation - 估计相关的组件,可能涉及状态估计或传感器数据处理。
  • legged_examples - 示例代码,可能含有特定机器人的示例配置或仿真设置。
  • legged_gazebo - Gazebo仿真相关文件,用于虚拟环境中测试机器人。
  • legged_hw - 硬件交互层,用于实际机器人的控制。
  • legged_interface - 提供与机器人交互的API。
  • legged_wbc - Whole Body Control的相关代码。
  • qpoases_catkin - 可能是作为依赖项的QPOASES求解器的ROS集成。

前备条件

软件:

  1. Linux系统:Ubuntu 20.04
  2. ROS版本:ROS noetic
  3. 编译工具:catkin

硬件:

  • Intel NUC11

准备步骤

  1. 环境准备:
    确保你已安装了以下依赖项:
sudo apt install liburdfdom-dev liboctomap-dev libassimp-dev

  1. 新建工作空间:
mkdir -p 自定义空间名称/src
cd 自定义空间名称
catkin_make

然后cdsrc进行下一步安装

安装

代码源

源代码托管在github上:https://github.com/qiayuanl/legged_control.git
但国内源推荐csdn的gitcode加速<legged_control:Nonlinear MPC and WBC framework for legged robot based on OCS2 and ros-controls - GitCode>

# 克隆legged_control,使用HTTP协议
git clone https://gitcode.com/gh_mirrors/le/legged_control.git
OCS2

OCS2 是一个针对切换系统优化控制的 C++ 工具箱,适用于机器人任务,包括路径约束处理和 URDF 模型支持。它提供了高效算法如 SLQ、iLQR 和 SQP,并具有 ROS 接口。工具箱包含自动微分工具,确保在有限计算能力的机器人应用中实现数值稳定和高效控制。

OCS2是一个大型单库项目;请不要尝试编译整个仓库。您只需按照以下步骤编译ocs2_legged_robot_ros及其依赖项。

  1. 按照OCS2文档中的说明克隆OCS2,pinocchio和hpp-fcl、
# 克隆OCS2
git clone git@github.com:leggedrobotics/ocs2.git
# 克隆pinocchio
git clone --recurse-submodules https://github.com/leggedrobotics/pinocchio.git
# 克隆hpp-fcl
git clone --recurse-submodules https://github.com/leggedrobotics/hpp-fcl.git
# 克隆ocs2_robotic_assets
git clone https://github.com/leggedrobotics/ocs2_robotic_assets.git

src回到自定义空间目录下,编译构建各包:

# 编译`ocs2_legged_robot_ros`包
catkin config -DCMAKE_BUILD_TYPE=RelWithDebInfo
catkin build ocs2_legged_robot_ros ocs2_self_collision_visualization
# 构建`legged_control`的源代码:
catkin build legged_controllers legged_unitree_description

# 构建模拟
catkin build legged_gazebo

# 构建实际硬件接口机器人
catkin build legged_unitree_hw

上述工作完成后,工作空间文件分级大致如下:
在这里插入图片描述
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在这里插入图片描述

快速开始:

  1. 使用gedit打开~/.bashrc文件,在最后添加两条环境变量配置语句:
source /自定义空间/devel/setup.bash
export ROBOT_TYPE=a1
  1. 运行模拟:
roslaunch legged_unitree_description empty_world.launch
  1. 加载控制器
# cheater = true 即初始化`legged_cheater_controller`
 roslaunch legged_controllers load_controller.launch cheater:=false
  1. 在rqt 中启动legged_controllerlegged_cheater_controller
# 安装相关工具
sudo apt install ros-noetic-rqt-controller-manager

打开rqt,在Tool Boxes中找到Controller manager,并启用一个控制器。
5. 打开rviz,将Global Options 中的Fixed Frame 更为 odom里程计;并加载RobotModel,将Robot Description更为legged_robot_description。并勾选Collision Enable选项使模型显现。
在这里插入图片描述

在这里插入图片描述

结果大致如下:
在这里插入图片描述

  1. 打开rqt_robot_steering,将速度缓缓升高后降低为0。可以看到马缓缓站立。
  2. 在加载控制器的终端中输入相应步态,注意是输入步态而不是输入序号。
    在这里插入图片描述
    1727611297693)

在这里插入图片描述

至此,在本地的仿真部署已结束。

后续实物部署流程和代码研究,笔者还在入门阶段。随缘更新。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值