这个是本人在大三期间做的项目 ---- 基于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

第三方库

并联四足机器人项目开源教程(六)--- Cheetah开源项目的代码框架移植相关推荐

  1. 四足机器人(一):Cheetah开源电机驱动控制解析

    文章目录 1. 驱动器状态机 1.1 五种状态 1.2 通过串口操作 1.3 通过CAN操作 1.3.1 CAN接收 1.3.2 CAN发送 1.4 状态之间的转换 2. 几个重要函数 2.1 确定相 ...

  2. 并联四足机器人项目开源教程(三)--- 使用webots搭建仿真环境

    这个是本人在大三期间做的项目 ---- 基于MIT的Cheetah方案设计的十二自由度并联四足机器人,这个项目获得过两个国家级奖项和一个省级奖项.接下来我会将这个机器人的控制部分所有代码进行开源,并配 ...

  3. 并联四足机器人项目开源教程(五) --- 四足机器人相关书籍论文研读

    这个是本人在大三期间做的项目 ---- 基于MIT的Cheetah方案设计的十二自由度并联四足机器人,这个项目获得过两个国家级奖项和一个省级奖项.接下来我会将这个机器人的控制部分所有代码进行开源,并配 ...

  4. 并联四足机器人项目开源教程(一)--- 机器人学导论的学习

    这个是本人在大三期间做的项目 ---- 基于MIT的Cheetah方案设计的十二自由度并联四足机器人,这个项目获得过两个国家级奖项和一个省级奖项.接下来我会将这个机器人的控制部分所有代码进行开源,并配 ...

  5. 【论文解读--力控电机+四足机器人载体设计】(Cheetah mini)A Low Cost Modular Actuator for Dynamic Robots

    系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录 前言 一.简介 二.电机执行器类型 1.力控电动电机执行器 2.液压执行机 ...

  6. 基于STM32与PCA9685制作四足机器人(代码开源)

            前言:本文为手把手教学基于STM32的四足机器人项目--JDY-31蓝牙控制,特别地,本次项目采用的是STM32作为MCU.四足机器人的支架为3D打印件,SG90舵机驱动机器人实现姿态 ...

  7. 四足机器人——12自由度舵机狗DIY(二)

    目录 一.四足机器人步态研究控制的现状 1.1目前的三种控制策略 <1>基于静态稳定的控制方法. <2>基于动力学模型的控制方法. <3>基于生物所具有的神经性调节 ...

  8. 技术分享 | 什么是Minitaur四足机器人?

    什么是Minitaur四足机器人? Minitaur是Ghost Robotics早期研制的一款高性能小型四足机器人,其虽然仅具有8个自由度但是却有着非比寻常的运动能力和不输于MIT猎豹的越障.空翻能 ...

  9. 白泽四足机器人ROS+rviz仿真(二)整体行走步态

    导航在这里:白泽四足机器人导航贴 目录 导航在这里:白泽四足机器人导航贴 源码: 整体项目文件地址: 先看效果: 白泽四足机器人ROS+rviz前进行走 源码: #include <iostre ...

最新文章

  1. 树形选择排序的基本概念
  2. 函数语法:JS获取浏览器窗口大小 获取屏幕,浏览器,网页高度宽度(转载)...
  3. 【计算机网络】数据链路层 : 广域网 ( HDLC 协议 | HDLC 站 | HDLC 帧格式 | HDLC 帧类型 | PPP 协议 与 HDLC 协议 对比 )
  4. 蓝桥杯_算法训练_ALGO10_集合运算
  5. handler机制的原理_5分钟了解Handler错误使用场景
  6. 平板电脑安装软件_分享一个将平板作为电脑分屏的软件(文末有链接)
  7. 南开调整研究生奖助,博士生最高超10万,硕士生6万,可能已经超过他们毕业后能拿的工资!...
  8. Nvidia Jetson TX2+Intel Realsense D435i跑ORB_SLAM3
  9. 只能发邮件不能接受_《GTA5》R星发邮件问候玩家会发生什么?以下操作一个也别碰...
  10. 魅族技术晚场回顾,算法、架构、AI之外,还要考虑未来
  11. 深入web的请求过程
  12. 有java基础学python-零基础应该选择学习 java、php、前端 还是 python?
  13. 史上最全天气数据接口包括环境、气象、预警、水文、预报、实况、格点,落区、等值面、雷达、云图、空气质量实况及预报、气候统计、雷电分布、灾害性天气、短临预报、航空气象、农业气象、旅游气象、生活指数等
  14. linux消息队列优缺点,linux消息队列概念
  15. 原型工具axure7.0下载及汉化
  16. 打印照片显示rpc服务器,打印照片时出现了“RPC服务器不可用”的错误怎么办?...
  17. php ajax data遍历,jquery,ajax_each遍历 ajax 如何倒序插入数据库,jquery,ajax - phpStudy
  18. 马氏距离 Mahalanobis Distance
  19. uniapp判断是不是微信浏览器
  20. PyTorch—torch.utils.data.DataLoader 数据加载类

热门文章

  1. 超硬核的Java工程师分享,什么是Java?为什么我要做Java,我是如何学习Java的?
  2. 中国高分系列卫星介绍
  3. 【Git】如何进行分支合并
  4. Upload-Labs靶场 1-21全通关教程
  5. 零知识证明笔记The 9th BIU Winter School on Cryptography
  6. GDKOI-2023 游记
  7. VMware虚拟机安装教程图解,虚拟机详细使用教程
  8. 关于挑战杯答辩的收获
  9. CSS3自定义滚动条样式 -webkit-scrollbar
  10. Oracle修改数据库db_name