MIT四足机器人MIT Cheetah的硬件框架

news/2024/5/19 2:21:45 标签: mit, 四足机器狗, 硬件

前几天小米的铁蛋,又让四足机器人火了一把。9999一台,这个价钱还挺香的。众所周知,国内的大部分四足机器狗的涌出,都是因为2019年,MIT的猎豹开源,从硬件到软件。国内四足机器人的研发也就上了一个台阶,也包括小米的铁蛋也是基于mit的Cheetah Mini。


最近看了一下mit的机器狗开源的关节,看了一下12个关节到控制器的是如何通信的。
简单的画了个图:
在这里插入图片描述

模块通信

  1. 12个关节驱动器,只运行了FOC的算法,对于命令和信息上报使用了CAN通信
  2. 一条腿(三个关节)为一路CAN,与SPIne进行通信,一个SPIne模块负责两条腿的CAN通信,并使用SPI和电脑信息交换。
  3. IMU用的是串口通信。
  4. 每个STM32还有独立串口通信,用于模块的设置与debug。

模块通信速率:

  1. 每路CAN的通信配置是1M。SPIne用两个STM32是因为带宽不够, 每个STM32有两路CAN, 每一路负责三个电机的通讯才达到1000Hz, 若一路负责两条腿六个电机,就达不到。
  2. SPIne 和电脑SPI通信的时钟为12M,通信频率为1000hz

通信数据:

can格式每帧数据8个byte。
SPIne->关节 指令内容(8字节):

  • 位置指令: 16bit
  • 速度指令: 12bit
  • kp: 12bit
  • kd: 12bit
  • 前馈转矩: 12bit

关节->SPIne 上报内容(5字节):

  • 位置信息: 16bit
  • 速度信息: 12bit
  • 电流(力矩): 12bit

PC->SPIne 指令内容(132字节):
一共是33个数据。6个关节的位置指令、速度指令、kp、kd、前馈转矩、两个flag和一个校验。

SPIne->PC 上报内容(60字节):
一共是15个数据,6个关节的位置和速度,两个flag,和一个校验.

mbedOS

mit狗的硬件的代码量都很小,像SPIne模块,基本只有数据的交互的处理。对于硬件驱动代码等等的,全靠mbedOS。

mbedOS是ARM打造、主打IoT的一整套软件解决方案,是一个针对ARM CortexM系列处理器的嵌入式开源生态。
官网:https://os.mbed.com/mbed-os/

感觉国内使用的很少,网上搜了一下,可能是因为没有中文网站,在线编译服务器在美国,云服务在在国外,推广力度小等原因。不过MbedOS编写的应用程序和arduino 一样简单,使用的是c++的面向对象,去抽象软硬件

比如在SPIne模块中初始化spi:

void init_spi(void){
    SPISlave *spi = new SPISlave(PA_7, PA_6, PA_5, PA_4);
    spi->format(16, 0);         // 16bit
    spi->frequency(12000000);  // 12M
    spi->reply(0x0);
    cs.fall(&spi_isr);
    printf("done\n\r");
}

网上看见的一个CAN 总线的应用程序:

#include "mbed.h"
 
DigitalOut myled(D8);
CAN can1(PD_0, PD_1,500000);
int main() {
     CANMessage msg;
    while(1) {
   if(can1.read(msg)) {
            printf("Message received:id=%d,type=%d,%d\n", msg.id,msg.type,msg.data[0]);
            myled = !myled;
    }
    }
}

mit开源资料
电机控制器硬件:https://github.com/bgkatz/3phase_integrated
电机控制器软件:https://os.mbed.com/users/benkatz/code/Hobbyking_Cheetah_Compact_DRV8323/
SPIne硬件:https://github.com/bgkatz/SPIne
SPIne软件:https://os.mbed.com/users/benkatz/code/SPIne/

linux控制代码 Cheetah Mini
https://github.com/mit-biomimetics/Cheetah-Software


参考
https://blog.csdn.net/yaojiawan/article/details/82789970
https://zhuanlan.zhihu.com/p/79391139


被抛弃的写随笔公众号改写技术文章了,感兴趣的可以关注公众号:王崇卫

回复“QT波形”,获取源码。
在这里插入图片描述


http://www.niftyadmin.cn/n/1244228.html

相关文章

我的Android进阶之旅------android之向Gallery中添加倒影3D效果

在上一篇Android之Gallery和GridView两种方式与ImageSwitcher实现带预览的和幻灯片方式的两种图片浏览器后,偶然看到了一些介绍Gallery 3D效果的事例,学习了一下,现在将事例写出来,供大家分享。 大家可看http://blog.csdn.net/leehong2005/article/details/8070538和http:/…

我的Java开发学习之旅------JAVA 笔记ClassLoader.getResourceAsStream() 与 Class.getResourceAsStream()的区别

今天,一读者在我的 Android通过调用Webservice实现手机号码归属地查询 文章中给我回复了一个问题,由于没有具体说明我的sop12.xml文件是放在src目录下,不是和具体操作类AddressService.java放在同一目录下,引起了误会。 InputStre…

1_simulink简单入门_simulink仿真PID控制

1_simulink简单入门_simulink仿真PID控制 2_simulink搭建RCL_电阻电感电容模块 毕业前想去做物联网还是或者linux,结果玩了一年多的电机控制,早就深知matlab/simulink绕不过的,拖到现在,下班晚上再把大学自控做实验用的matlab捡起…

我的Android进阶之旅------Android之Animations动画详解

一、动画类型 Android的animation由四种类型组成:alpha、scale、translate、rotate XML中<

我的Android进阶之旅------Android常用计量单位(Dimension)的介绍(px,in,mm,pt,dp,dip,sp)

在Android开发中常用到px,in,mm,pt,dp,dip,sp这几个单位,你可不要混淆了 摘自:http://developer.android.com/guide/topics/resources/more-resources.html#Dimension的一段简介 Dimension

2_simulink搭建RCL_电阻电感电容模块

1_simulink简单入门_simulink仿真PID控制 2_simulink搭建RCL_电阻电感电容模块 基本元件 电阻 - 单位: 欧姆 Ω\varOmegaΩ 电压方程: uiRuiRuiR 电流方程: iuRi\frac{u}{R}iRu​ 电容 - 单位: 法拉 F\rm{F}F 电压方程: u1C∫0tidtu\frac{1}{C}\int_0^t{idt}uC1​∫0t​idt 电…

BISS绝对值编码器_TI方案_线路延迟补偿

这篇主要是介绍一下BISS编码器协议&#xff0c;以及TI的对于绝对值编码器的方案。主要针对BISS的是线路延迟补偿的一些介绍。顺便一提&#xff0c;有一说一&#xff0c;TI的文档写的全&#xff0c;还细致。 关于SSI的绝对值编码器协议可以看这里&#xff1a; SSI编码器通信 首…