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

本文详细描述了一种机器人腿部硬件的构成,包括UPboard计算机板卡、腿部控制器、调试PC机、数据转换板(使用mbedOS)以及电机控制和通信技术,重点介绍了FOC算法在电机控制中的应用。同时讨论了通信速率、CAN总线通信协议以及mbedOS在简化硬件驱动开发中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

概述:

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

<think>好的,用户询问的是宇树机械A1的代码相关的内容。首先,我需要明确用户具体想了解什么。宇树的Unitree A1是一款四足机器人,常用于研究、开发或者教育等领域。代码方面可能涉及控制算法、运动规划、传感器数据处理等。 首先,用户可能想知道如何获取A1的SDK或者API文档。通常,宇树会为开发者提供相应的软件开发工具包,以便他们编写控制程序。需要确认用户是否有访问权限,或者是否需要联系厂商获取。 其次,用户可能对具体的代码示例感兴趣,比如如何让机械行走、转向或者响应传感器输入。这时候需要说明常用的编程语言,比如C++或Python,以及如何通过ROS(机器人操作系统)进行集成。 另外,用户可能遇到实际问题,比如连接问题、驱动安装或者代码调试。这时候需要分步骤指导,比如检查硬件连接,安装依赖库,运行示例程序等。 还要考虑用户的技术背景。如果是初学者,可能需要更基础的指导,比如环境配置和简单指令;如果是高级开发者,可能更关注高级功能如SLAM、路径规划等。 最后,需要提醒用户遵循安全操作指南,避免在测试代码时造成设备损坏或人身伤害。同时,建议参考官方文档和社区论坛,以获取最新的支持和解决方案。</think>关于宇树机械Unitree A1的代码开发,以下是分步骤说明: 1. **获取开发工具包** - 联系宇树科技获取官方SDK(需企业/学术认证) - 包含内容: ```bash ├── ROS驱动包 ├── C++/Python API ├── 运动控制示例 └── 传感器数据接口(IMU、关节编码器、摄像头等) ``` 2. **基础控制代码结构**(以Python示例): ```python from unitree_sdk import A1Controller # 初始化控制器 a1 = A1Controller() a1.connect() # 通过以太网连接机器人 # 设置站立模式 a1.set_mode("stand") # 基础运动指令 a1.move_linear_velocity(x=0.3, y=0, yaw=0) # 前向移动0.3m/s ``` 3. **核心控制逻辑包含**: - 状态机管理(站立/行走/小跑/跌倒恢复) - MPC模型预测控制(用于动态平衡) ```cpp // C++示例伪代码 void MPCController::update() { build_contact_matrix(); solve_quadratic_program(); // 求解最优接触力 compute_joint_torques(); } ``` 4. **传感器数据处理**: ```python # 读取IMU数据 imu_data = a1.get_imu() print(f"姿态角:roll={imu_data.roll}, pitch={imu_data.pitch}") # 足端力传感器 foot_force = a1.get_foot_contact() if foot_force[FR] < 5.0: # FR=右前腿 trigger_swing_phase() ``` 5. **高级功能实现**: - 地形适应(基于激光雷达/深度相机) ```python point_cloud = a1.lidar.get_scan() height_map = build_terrain_map(point_cloud) adjust_foot_trajectory(height_map) ``` **注意事项**: 1. 需使用实时操作系统(Xenomai内核补丁) 2. 控制周期需≤1ms(通过PREEMPT_RT实现) 3. 安全优先机制: ```c if (joint_temperature > 75°C) { emergency_stop(); // 触发过热保护 } ``` 建议从官方提供的`unitree_ros`包开始学习,逐步掌握底层控制接口后再进行算法开发。最新SDK已支持ROS2 Foxy版本,可结合Gazebo进行仿真测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值