在这里插入图片描述
这个是本人在大三期间做的项目 —— 基于MIT的Cheetah方案设计的十二自由度并联四足机器人,这个项目获得过两个国家级奖项和一个省级奖项。接下来我会将这个机器人的控制部分所有代码进行开源,并配有相关的教程博客,希望能够帮助到在学习相关领域知识或者进行项目开发的同学。


MIT-Cheetah开源代码:Cheetah-Software
本项目开源代码:SCUT-Robotlab-Quadruped
秉持着分享的理念,我将该项目的所有代码进行开源,在环境配置正常的情况下(包括仿真环境),可以得到以下的运行界面。
如果本系列中的QT上位机开源代码跑通了,可以直接通过上位机进行机器人的运动控制
在这里插入图片描述


代码架构


在这里插入图片描述


这个项目是基于MIT的Cheetah开源项目进行开发设计的,引入了ROS通信网络,并且控制上进行了简化。所以项目文件中有一部分代码文件并没有调用,下面列举的是作品使用到的,比较核心的代码模块,以供参考。


1. common


Utilities


通用的算法,函数


Math


常用的数学公式,如旋转矩阵/欧拉角/四元数的相互转换。


DataType


通用的数据结构体定义


Controllers


DesiredStateCommand:遥控器数据解包转为控制指令


FootSwingTrajectory:贝塞尔曲线的代码实现


GaitScheduler:步态规划器


LegController:腿部控制器,包括数据更新以及输出控制指令


OrientationEstimator:姿态估计


PositionVelocityEstimator:位置速度估计


msg


ROS网络中的自定义消息


2. config



包含了项目所有的参数文件,采用yaml文件进行参数存储,并使用rosparam进行参数加载。


robot_parameters.yaml:机器人自身的相关属性参数


user_parameters.yaml:用户人为调节的算法参数


3. robot


机器人整体运行逻辑,主要包括了机器人启动时的数据初始化,以及制定运行过程中的各个算法执行顺序数据流向


4. sim



webots仿真环境的搭建和驱动相关文件


webots_controller:基于ROS的webots控制器,用于控制webots中机器人的各个外设的工作,以及获取各个外设和仿真环境的相关数据


5. srpq_controller


FSM_States:状态机相关代码(状态包括有运动态,站立态,被动态等,与步态的概念不同)


BalanceController:平衡控制器,模仿了WBC多任务,分优先级的思想。


SportsController:运动控制器,采用纯位控的形式进行机器人控制,也是目前实体控制唯一验证通过的算法。


convexMPC:MPC控制器


WBC/WBC_Ctrl:WBC控制器


6. ros_network



ROS通信网络,由于时间有限,本项目仅构建了三个节点,并且将所有算法在一个节点上运行,整体架构不太优雅,建议读者可以基于该架构进行重新设计一套ROS通信网络。


Control_Node:核心的逻辑控制节点,主要负责算法运行,以及数据整合


Hardware_Node:硬件通信节点,主要负责与底层主控STM32进行通信。


QT_Node:上位机通信节点


7. Model


机器人仿真模型,本项目是通过solidworks导出urdf模型,再导入webots仿真环境了。
详细内容可以参考我的笔记:sw模型生成urdf文件的详细流程


8. third_party


第三方库