# Corgi-M1 四足机器人仿真
**Repository Path**: wrymok/MOCO8_ML_Webots
## Basic Information
- **Project Name**: Corgi-M1 四足机器人仿真
- **Description**: Corgi-M1采用树莓派作为主控制器使用PiHat载板来实现CAN伺服通讯和IMU数据的采集,其实时控制频率最高为500Hz力控,通过STM32自带的两路CAN与ODrive节点进行通讯,同时可以通过USB虚拟串口连接到上位机实现对机器人数据的显示和记录(推荐采用WIFI连接上位机)。 控制器板载9轴IMU运动传感器。
该项目是Corgi-M1四足机器人Webots仿真的工程!
- **Primary Language**: C++
- **License**: GPL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 9
- **Created**: 2022-04-12
- **Last Updated**: 2022-04-12
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Corgi-M1四足机器人仿真
* #### 介绍
该项目是Corgi-M1四足机器人Webots仿真的工程,仿真控制算法参考了相关教程https://www.zhihu.com/people/golaced
* #### 项目环境依赖
* **VS2017**
* **Webots2021**
* **Eigen**
* **qpOASES**
> VS工程中相应路径需按实际修改,三方库安装教程可查看知乎教程或pdf
* #### 任务机制与理念
Corgi-M1 是一个完整的开源四足机器人项目(**部分库由于论文成果目前封装成lib调用,后续随论文成果发布会逐步开放**),其包括了完整的8自由度四足机器人机械硬件加工物料,以及基于Odrive或其他开源项目的伺服驱动、基于Odroid或树莓派的高性能实时控制器、基于Webots的仿真环境(代码框架能直接与实物同步)、基于VMC虚拟模型+QP优化的步态控制框架、基于交叉编译的多任务运动控制框架以及基于python的上位机界面。
开源内容采用任务机制逐步解锁,**该项目是整个Corgi-M1的一部分,因此其他的如硬件、机械或真实样机的部署方法等内容并不会公开**,整个Corgi-M1项目如果顺利你可以把他当作一个完整的暑期夏令营,从仿真开始将一步一步完善四足机器人控制系统的各个部分。 为了增强项目推进的强度,我将在每个阶段公布**解锁源码**所需要完成的任务以及能解锁对应的部分,希望感兴趣的人可以毛遂自荐或者各自联合承担工作,通过讨论、交流、共同开发、承担任务的机制来保证项目在最终完成时是真的有提升的,**当然最终我们将以团队的形式在github等平台共同署名**,确保在项目发展中做出贡献的人不会被忽略。
* #### 项目阶段与任务榜
对于仿真阶段的开源项目,我主要封装了如下几个部分,**随着团队对项目贡献满足任务目标后会逐步开放**:
**(1)forcedis8.cpp**
此函数包含了静力学力分配的函数;
**(2)ground_est.cpp**
此函数包含了地形角度估计的函数;
**(3)traj_math.cpp**
此函数包含了轨迹规划相关函数;
**(4)Imp_forces.cpp**
此函数包含了力跟踪控制器函数;
为解锁上述核心仿真源文件,需要团队通力合作来完成如下的开发内容,下面列出了我目前能想到,仿真阶段所需要优化和改善的问题,新的内容会在群内讨论确定:
**a.项目主页或gitbook的搭建**
为记录项目发展的例程和整理项目的资料,需要团队构建项目的主页,为后续推广提供渠道;
**b.仿真代码的注释,项目反馈再CSDN或知乎上的文章撰写**
为了完善仿真项目,需要对项目进行更详细的注释,同时针对代码结构的解读需要在各自知乎或CSDN等渠道上发布,为项目未来的推荐构建基础;
**c.仿真代码流程与算法流程图的绘制**
为帮助团队未来新加入人员对代码的理解,需要对软件代码流程图进行绘制和梳理形成如Px4飞控的软件架构内容;
**d.webots下仿真模型建模教程整理**
目前仿真模型是由热心网友提供,需要整理MOCO8机器人的webots建模过程和接口函数调用API,并形成一个完全没有控制的基础软件框架模板为后人开发学习使用;
**e.仿真中感知传感器、SLAM、视觉等功能的增加**
目前仿真仅包含了控制,需要将可能集成的视觉或SLAM传感器增加,并开发相应的Demo如视觉里程计、组合定位、强化学习壁障等Demo;
**f.软件架构的梳理与整理**
由于个人编程水平,虽然以及经过几轮的代码梳理,但其软件结构仍然比较混乱,需要对软件结构和cmake等编译文件脚本进行梳理,同时形成搭建仿真环境的准确教程;
**g.MPC、LQR、WBC等新算法的融入**
目前Corgi-M1采用的是VMC+QP的方法,其在很多算法环节还需要优化,引入如MPC、LQR、WBC等环境,增加机械臂等二维自由度,引入新的控制模型与算法,并将基础的VMC框架梳理成相应的文档;
**h.Webots仿真与ROS的结合**
目前仿真环境搭建在window下,为方便后续SLAM与AI算法的验证部署,需要将其向ROS环境移植;
**i.其他工作**
通过群内工作的进展和讨论确定是否有新的优化内容;
* #### 项目时间表与计划
项目推荐将以如下时间表进行推进,上述某一个或几个任务的完成将加快代码的开源进度,考虑到上述代码、仿真结构与工作内容的关系基本计划如下,多任务时任务1为主任务,其余任务完成能提前加快后续的开源进度,任务的完成程度由团队所有人共同表决:
* (1)traj_math.cpp(2周内)
> 任务1:团队完成仿真代码主体框架的注释,资料同步发布在项目主页与CSDN或知乎上(25%);
>> 任务2:团队完成仿真代码流程与算法流程图的绘制(50%);
>>> 任务3:移植MIT Kalman状态估计算法(25%);
* (2)ground_est.cpp(2周内)
> 任务1:团队完成软件架构的梳理与整理(60%);
>> 任务2:团队完成仿真代码的注释(15%);
>>> 任务3:移植MIT 地形估计算法算法(25%);
* (3)forcedis8.cpp(2周内)
> 任务1:团队完成仿真增加视觉传感器并开发相应Demo(25%);
>> 任务2:团队完成仿真增加激光雷达传感器并开发相应Demo(25%);
>>> 任务3:团队完成Webots仿真与ROS接口的梳理与移植,ROS驱动的编写(50%);
* (4)Imp_forces.cpp(持续)
> 任务1:团队完成MPC、LQR、WBC等新算法的融入(100%);