超越MIT Mini-Cheetah 的四足机器人开源项目(Quad-SDK)!

目录

1 四足机器人开源项目回顾

自从Mini Cheetah开源后似乎我们所能触及的国内大部分四足机器人都是基于该方案优化改进而来,而这两年MIT原生项目更是没有啥新的重大更新。近年来针对其中的MPC和WBC部分已经有了有很多优秀的论文和改进,例如前段时间硕博完成的开源四足机器人项目,其基于Gazebo以宇树A1机器人为被控对象,开发了一个完整工程框架。基于强化学习的控制方案也已经大放光彩,让我们学习四足机器人传统控制似乎有点找不到研究的方向。

另外之前我也开源了基于Webots下的Corgi机器人项目,其采用VS作为开发环境,基于Webots能进一步构建融合SLAM和机械臂的联合仿真

同时面向四足机器人的开发需求,特别是可视化部分例如力、落足点、最重要的高程图部分采用Supervisor进行可视化:

同时面向未来引入类似RBDL等动力学库的需求,进一步将其移植到Ubuntu环境下,方便了第三方库的编译以及与ROS的二次开发和联合仿真:

2 更完善的Perception Locomotion运动控制技术路线Quad-SDK

在前年丁博士开源了其毕业设计中非线性MPC的matlab仿真,同时论文中也有非常详细的叙述,在今年的ICRA2022会议中大部分团队都展示了他们年度的工作,但总体上没有太多新的内容,而在BD、IIT和ETH众多大佬汇报的笼罩下,实际上有一个非常优秀的开源四足机器人项目,其相比MIT Cheetha更加的完善和优秀,甚至超越很多,它就是来自卡耐基梅的Quad-SDK项目

该项目最大的特点是:

(1)采用了非线性MPC控制器,众所周知Mini Cheetha开源项目中的MPC对系统模型进行了线性化处理,而该项目中借鉴了丁博士《Representation-free model predictive control for dynamic motions in quadrupeds》一文中的相关模型设计,从而实现了更优异的控制效果,从BD的汇报中也可以看出未来基于非线性模型预测控制的方案必然将是双足、四足机器人的首选研究方向

丁博士NMPC模型

2)构建了全局规划器:众所周知MPC控制器最大的优势是能对期望轨迹进行跟踪,这也使得很多复杂后空翻和跳跃运动基于该框架非常方便的实现,而在原始MIT代码中相关轨迹都是通过对遥控速度指令积分得到的,而跳跃后空翻等轨迹都是离线规划实现,相关方法也没有配套代码,在Quad-SDK项目中首次开源了针对四足机器人动力学特性,融合地形信息在线全局轨迹规划算法,其能采用期望路点和地形信息结合机器人的步态参数、摩擦系数、运动学约束规划质心轨迹,实现细粒度区分全局轨迹中其中哪一段是支撑相,哪一段是飞行相

Fast Global Motion Planning for Dynamic Legged Robots
长周期动态规划,依据地形自动产生绿色的飞行相,红色的支撑相轨迹,之后输入MPC自动完成越障

(3)构建了长周期的局部步态规划器:众所周知MIT框架仅对下一个步态周期进行了规划,而且没有考虑多周期落足点规划层面,这也导致原始算法在复杂地形和大扰动时的性能不足,而Quad-SDK中开源的局部规划器可以实现类似Atlas双足机器人对未来多个步态周期中足端力、落足点的规划:

长周期步态规划,规划未来多个步态周期落足点

(4)更优秀的地形估计:众所周知在MIT开源软件中是不包含任何关于着地切换和地形估计的部分,在IHRC改进的版本中基于四元数构建了能实现地形坐标系下姿态调节和落足调节的代码,但总体上来说还是非常的简单,在Quad-SDK中构建了一个能完全基于本体感知实现对地形模型精确建模的估计器:

动图封面
https://www.youtube.com/watch?v=_lR6VpEe1to 精确地形建模

最终,该框架既可以在Gazebo上快速进行仿真,也可以基于Ghost Robotics的Sprite40机器人进行实际的部署:

Quad-SDK简洁的框架

3 项目编译

下面介绍如何编译和测试该项目,其依赖如下:

  1. Install Ubuntu 18.04 (双系统或虚拟机)
  2. Install ROS Melodic (完整版本)
  3. (局部规划器依赖) Get HSL solver for IPOPT (后文介绍)
  4. Create catkin workspace (后文介绍)

3.1 安装Ipopt

注:后续安装ipopt库比较麻烦,这里提供我已经下载好的版本可直接编译

链接:https://pan.baidu.com/s/1Eubi3x0d--O91gxut2uTzA 
提取码:jqsu 

手动安装过程,该项目采用Ipopt来完成对非线性NLP问题的求解,在官方Github中没有具体说明安装过程,下面给出我尝试的一种可行方法:

wget https://www.coin-or.org/download/source/Ipopt/Ipopt-3.12.7.zip 
unzip Ipopt-3.12.7.zip 
rm Ipopt-3.12.7.zip
cd Ipopt-3.12.7
./configure

下载程序后配置无误:configure: Main configuration of Ipopt successful之后编译:

make
make install

3.2 下载 HSL MA21求解器

下载个人版本,确保安装环境:

sudo apt-get install libblas3 libblas-dev liblapack3 liblapack-dev gfortran

在ipopt如下目录中解压:

cd Ipopt-3.12.7/ThirdParty/HSL
ln -s ./coinhsl-archive-2014.01.17  #依据个人目录修改
./configure --enable-loadable-library

出现configure: Configuration of ThirdPartyHSL successful

make install

复制库:

cd Ipopt-3.12.7/lib
sudo cp * /usr/local/lib/

复制头文件:

sudo cp -r  ~/Ipopt-3.12.7/include/* /usr/local/include

3.3 编译Quad-SDK

新建catkin工作空间:

cd ~/catkin_ws
source devel/setup.bash
cd src
git clone https://github.com/robomechanics/quad-sdk.git
cd quad-sdk

注:下面这里比较玄学,理论上是将之前ipopt编译好的文件复制到对应目录/path/to/HSL即ipopt 3rdparty中对应文件夹,/external/ipopt/coinhsl 为quad-sdk对应文件夹,如果麻烦可以使用我的文件(1.1G):

链接:https://pan.baidu.com/s/1rVzICOEnplKmRzBL6bVuEQ 
提取码:c31w 

手动安装过程(下载我的代码chmod +x setup.sh && ./setup.sh后续步骤仍然需要执行):

cp -r /path/to/HSL /external/ipopt/coinhsl 
chmod +x setup.sh && ./setup.sh
cd ~/catkin_ws
catkin build

4 运行测试

如果正常编译后,配置好ROS索引进行仿真测试:

4.1 采用遥控器

项目可以采用键盘模拟遥控器,首先打开gazebo世界:

roslaunch quad_utils quad_gazebo.launch
打开世界,速度超快

在新终端中发送消息让机器人站立:

rostopic pub /robot_1/control/mode std_msgs/UInt8 "data: 1"
站立时GRF实时可视化显示

在新终端中打开遥控器节点:

roslaunch quad_utils quad_plan.launch reference:=twist logging:=true
rosrun teleop_twist_keyboard teleop_twist_keyboard.py cmd_vel:=/robot_1/cmd_vel
gazebo实时运动仿真

4.2 采用全局路点规划

另外还可以采用全局路点规划,运行后机器人会自动前进到目标位置,并依据地形在线规划全局轨迹和未来多个周期落足与GRF:

roslaunch quad_utils quad_plan.launch reference:=gbpl logging:=true
动图封面
长周期步态规划Demo

5 总结

可以看到Quad-SDK可以实现长周期的步态和力预测规划,这与Atlas演示视频中的效果非常类似,其技术路线也应该是相通的。

Atlas预测控制Perception Locomotion

相比MIT单个步态周期的规划更加完善,虽然没有加入WBC部分,但是项目整个框架更加的适合足式机器人在复杂环境中,融合地形感知的Perception Locomotion需求,因此这个项目可以说是近年来最优秀的开源四足机器人项目,其各个创新点和开源代码必将为未来国内四足机器人技术的发展提供很好的参考资料。