这个是本人在大三期间做的项目 —— 基于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
第三方库
评论(0)
您还未登录,请登录后发表或查看评论