[机器人-3]:开源MIT Min cheetah机械狗设计(三):嵌入式硬件设计

news/2024/7/10 21:38:12 标签: 机器人, 开源, 嵌入式硬件

目录

概述:

1、硬件组成

2、通信速率

3、通信协议

4、mbedOS


概述:

以1条腿进行设计,其它腿也一样:

腿部硬件组成

1、硬件组成

1)UP board计算机板卡(Linux OS)

腿部控制器基于Cortex-A8的处理器执行腿部控制任务,如笛卡尔阻抗的控制或联合PD控制。负责完成较高的腿部频率和高速关节速度摇摆时的滤波、高带宽跟踪相位以及其他位置控制动作。最后,每条腿控制器发送扭矩指令并接收无刷电机上的编码器测量值。可以看出UP board计算机板卡的核心功能就是进行运动学和动力学运算。

2)调试PC机 (Windows或Linux OS):

使用第二代酷睿i7处理器,运行Ubuntu Linux(内核4.1.33)和配置抢占RT补丁。UP board通过以太网与笔记本电脑通信,UP board使用轻量级接收用户命令并记录数据通信和编组(LCM)。LCM将允许其他计算机用于视觉、规划和其他易于与计算机通信的任务未来。

3)数据转换板(mbed OS)

使用的是STM32的F4系列,一个STM32F4通过CAN总线负责两条腿,一个腿由3个STM32控制板通过FOC算法控制腿部三个电机,而且只运行了FOC算法。

FOC(Field-Oriented Control,磁场定向控制)是一种控制方法,用于精确控制电动机的速度和扭矩。它常用于控制电动机中的磁场方向和磁场强度,以实现高效能和精确控制。

机器人中,FOC算法常用于控制电机以驱动关节和执行器。下面是机器人中应用FOC算法的基本步骤:

  1. 确定电机参数:首先需要获取电机的参数,包括电感、电阻、惯性等。这些参数将用于计算控制算法中的各个参数值。

  2. 电流控制:为了实现FOC算法,我们需要对电机的两相电流进行控制。为此,使用PI(Proportional-Integral,比例积分)控制器来计算电压引导电机电流。通过调整PI控制器的增益值,可以实现对电流的精确控制。

  3. 磁场定向:通过计算电机角度和速度,执行磁场定向控制。磁场定向控制是指将电机中的磁场方向与控制算法中的期望方向相匹配。通过控制电机的磁场方向,可以使电机在特定的速度和扭矩条件下运行。

  4. 速度闭环控制:为了实现更精确的速度控制,可以使用速度闭环控制。这将利用编码器或传感器来提供电机的实际速度反馈,然后与期望速度进行比较并相应地调整控制策略。

  5. 动态响应和调整:FOC算法还可以根据机器人的动态需求进行实时调整。根据控制目标和机器人的操作环境,可以进一步优化控制算法的参数和增益,以实现所需的动态响应。

总的来说,FOC算法是一种在机器人电机控制中常用的精确控制方法。通过控制电机的磁场方向和强度,结合速度闭环控制和动态调整,FOC算法可以实现高效能和精确的机器人动作控制。

数据转换板电路板

4)IMU传感器:

用的是串口通信,每个STM32还有独立串口通信,用于模块的设置与debug。

IMU传感器示意图

5)电机控制器:

硬件层面的信息如下:

24V供电、40A峰值相电流(由于电机热力学限制,实际数值低于40A)、CAN总线通信

接收数据转换板转发来的信息(力矩、位置、速度及位置和速度的增益),并且上传反馈信息(位置、速度以及基于电流环测量的扭矩)最大通信频率:4kHz/驱动器数目 (可通过增加CAN总线数目扩大通信带宽)

电机控制器

MCU最小系统–STM32F446RE

MCU最小系统电路图

三相驱动桥

6)位置传感器(磁编码器)

磁编码器安装位置

编码器电路图

7)STM32和UP board供电系统

24V 5ah电池,右侧的外壳被移除,显示了内置的BMS,输出端子和18650电池

供电板PCB

机器人供电板,产生隔离的5V逻辑电源,给腿和计算机供电,并有直通晶体管,实现电机电源和逻辑电源的通断。电源的底面(右)安装FASTON端子,与内置到电池相匹配。

2、通信速率

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

3、通信协议

can格式每帧数据8个byte。
数据转换板->腿部控制器(STM32) 指令内容(8字节):

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

腿部控制器(STM32)->数据转换板 上报内容(5字节):

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

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

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

4、mbedOS

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

mbedOS是ARM打造、主打IoT的一整套软件解决方案,是一个针对ARM CortexM系列处理器的嵌入式开源生态。

MbedOS编写的应用程序和arduino 一样简单,使用的是c++的面向对象,去抽象软硬件。

mbedOS 是一款开源的操作系统,专为物联网(IoT)设备和嵌入式系统而设计。它由阿姆尔公司(Arm)开发,并提供免费使用。mbedOS 提供了一个全面的软件平台,使开发人员能够轻松构建、测试和部署物联网设备。

mbedOS 具有以下特点和功能:

  1. 低功耗:mbedOS 设计用于低功耗设备,在处理器和外设之间实现了有效的电源管理,以延长电池寿命

  2. 硬件抽象层:mbedOS 提供了硬件抽象层(HAL),使开发人员能够轻松访问和控制硬件资源,无需关心底层细节。

  3. 安全性:mbedOS 提供了强大的安全功能,包括加密、认证和安全连接,以保护物联网设备和数据的安全性

  4. 连接性:mbedOS 支持各种网络连接,包括Wi-Fi、蓝牙、以太网和移动网络,使物联网设备能够与云服务和其他设备进行通信。

  5. 实时性:mbedOS 提供了实时性能,能够处理实时任务和事件,适用于对时间敏感的应用。

  6. 设备管理:mbedOS 提供了设备管理功能,使开发人员能够远程管理和监控物联网设备,包括固件升级和故障排除

  7. 开发工具:mbedOS 配套提供了丰富的开发工具,包括集成开发环境(IDE)、调试器和仿真器,以简化开发流程

总的来说,mbedOS 是一个为物联网设备和嵌入式系统提供的开源操作系统,具有低功耗、硬件抽象层、安全性、连接性、实时性和设备管理等特性。它简化了物联网设备的开发和部署过程,并提供丰富的开发工具和资源。


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

相关文章

二叉树中的深搜

目录 👉🏻计算布尔二叉树的值 👉🏻计算布尔二叉树的值 原题链接:计算布尔二叉树的值 mycode: class Solution { public:bool evaluateTree(TreeNode* root) {if(root->leftnullptr){if(root->val0)return fal…

Mac 使用SecureCRT

SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,同时支持Telnet和rlogin协议。 SecureCRT是一款用于连接运行包括Windows、UNIX和VMS的远程系统的理想工具。通过使用内含的VCP命令行程序可以进行加密文件的传输。有流行CRTTelnet客户机的…

Win32窗体实现接受拖拽文件,检测鼠标拖拽操作,检测鼠标滚轮操作

使窗体能够接受文件拖拽 DragAcceptFiles(hwnd, TRUE);文件拖拽在win32窗体过程函数中对WM_DROPFILES消息进行处理 LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {switch (uMsg){case WM_DESTROY:PostQuitMessage(0);return 0;case WM_D…

LAMP集中式搭建+LNMP分布式搭建(新版)

LAMP搭建LNMP搭建 LAMP搭建LNMP搭建一、LAMP搭建(集中式)1、LAMP简介2、LAMP组件及作用3、编译安装Apache httpd服务4、编译安装mysqld 服务5、编译安装PHP解析环境6、安装论坛7、安装博客 二、LNMP搭建(分布式)1、LNMP工作原理2、安装nginx3、安装mysql4、安装php5、在浏览器测…

java static 一般用在什么地方

Java中的static关键字有很多用途,主要用于创建和引用静态成员,例如变量、方法、内部类等。以下是static关键字的一些常见用途: 静态变量:静态变量也称为类变量,属于类本身,而不是类的实例。所有的实例共享…

Debezium发布历史25

原文地址: https://debezium.io/blog/2017/12/20/debezium-0-7-1-released/ 欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯. Debezium 0.7.1 发布 十二月 20, 2017 作者: Jiri Pechanec 发…

线程管理方式

线程管理方式 下图描述了线程的相关操作,包含:创建 / 初始化线程、启动线程、运行线程、删除 / 脱离线程。可以使用 rt_thread_create() 创建一个动态线程,使用 rt_thread_init() 初始化一个静态线程。 动态线程与静态线程的区别是&#xff1…

SpringBoot+Redis的Bloom过滤器

1.保姆级Linux安装Redis ①把redis.tar.gz下载到linux中,并用命令tar -zxvf安装 ②安装完成进入目录输入make进行编译,编译完成后输入make install 进行安装 ③创建两个文件夹mkdir bin mkdir etc 将redis目录下的redis.conf文件移动到etc文件中&…