Cubemars - 17年电机制造商 info@cubemars.com +86 13755649079
中文简体
English
中文简体
日本語
Deutsch
Français
한국어
Español
Pусский
Quick Registration
创建您的CubeMars账号

 

视频中心
目录
准备工作
步骤 1:理解 MIT 模式的核心逻辑
步骤 2:硬件连接与电机初始配置
步骤 3:C++ 核心控制逻辑解析
步骤 4:运行测试与效果展示
常见问题解答 (FAQ)
获取资料与探索更多驱动方案

教程 | 如何使用 C++ 配置 CubeMars AK60-6 (KV80) 的 MIT 模式

CubeMars / 2026-07-03 10:18:54

在四足机器狗、人形机器人或高性能机械臂的开发中,传统的“位置/速度/扭矩”独立控制模式往往因为通信帧率限制,无法满足全身高频动力学控制的需求。此时,MIT 控制模式成为了开发者们的首选。

 

本教程将手把手教您如何使用 C++ 语言,通过 CAN 总线配置并控制 CubeMars AK60-6 (KV80) 关节电机 的 MIT 模式。通过本教程,您将掌握底层通信协议的核心逻辑,解锁电机高响应、低延迟的极致控制性能。


准备工作


在开始编写 C++ 代码之前,请确保您已准备好以下软硬件环境:


  • 核心硬件:CubeMars AK60-6 (KV80) 关节电机、可靠的 CAN 通信接口(如 USB-to-CAN 模块、CANoe 或带 CAN 接口的开发板)。

  • 软件环境:C++ 编译器(如 GCC, MSVC),以及支持 CAN 通信的第三方库(如 pcanbasic, socketcan 等)。

  • 辅助工具:CubeMars 官方上位机软件(用于初始参数配置)。

 

步骤 1:理解 MIT 模式的核心逻辑


在动手写代码前,我们需要明白为什么要用 MIT 模式。传统的控制模式每次只能发送一个参数(如只发位置或只发速度)。而 MIT 模式允许在仅仅一个标准的 8 字节 CAN 报文中,同时打包发送以下 5 个关键参数:

 

  1. 目标位置 (Position)

  2. 目标速度 (Velocity)

  3. 目标扭矩 (Torque / Kt * I)

  4. 位置 PD 增益 (Kp)

  5. 速度 PD 增益 (Kd)

 

这种“大一统”的报文设计,极大地降低了通信延迟,是實現机器人高频步态控制和柔顺力控的基石。

 

步骤 2:硬件连接与电机初始配置


代码运行前,必须确保电机处于正确的物理和参数状态:

 

  1. 物理接线:将 CAN 接口的 CAN_H 和 CAN_L 分别对应连接至 AK60-6 电机的 CAN_H 和 CAN_L。确保共地。

  2. 上位机配置:

  • 使用 CubeMars 上位机连接电机。

  • 将电机的 CAN ID 设置为您期望的值(例如 0x01),并记住它,C++ 代码中需要用到。

  • 将 波特率 (Baud Rate) 设置为 1Mbps (1000kbps),这是 MIT 模式下的推荐标准波特率。

  • 点击软件中的 “进入 MIT 模式” 按钮。此时电机轴转动会有明显的电磁阻尼感,说明配置成功。

 

步骤 3:C++ 核心控制逻辑解析


在 C++ 环境中,控制 AK60-6 的核心逻辑可以拆解为以下三个关键步骤(完整的工程代码及数据转换函数请下载下方附件):

 

1. 发送“使能 (Enable)”指令:电机进入 MIT 模式后,默认处于安全锁定状态。在发送控制报文前,必须先发送一个特定的使能报文(通常是将 8 字节数据全部置为 0x00,或发送特定的 Enable ID 和帧内容),解锁电机。只有听到电机发出“滴”的提示音,才代表使能成功。

2. 浮点数到无符号整型的“数据打包”:这是 MIT 模式 C++ 代码中最核心的算法。由于 CAN 报文只能传输整型字节,我们需要将物理世界的浮点数(如目标位置 -12.5 rad)映射为 16 位或 12 位的无符号整数。

  • 逻辑:使用线性映射函数 float_to_uint(x, x_min, x_max, bits)。

  • 操作:将目标位置、速度、扭矩、Kp、Kd 分别限制在电机允许的安全范围内,然后按比例转换为对应的 Hex 值。

3. 组装并发送 8 字节 CAN 报文:将上一步得到的 5 个整型参数,按照 CubeMars 通信协议规定的位序,拼接成一个 8 字节(64 bit)的数组。最后,调用您的 CAN 库函数,将这个数组通过指定的 CAN ID 发送给电机。电机接收到后,会瞬间解算并执行动作。


步骤 4:运行测试与效果展示


完成 C++ 代码的编译与烧录/运行后,给 AK60-6 电机上电。

 

运行您的 C++ 程序,您应该能看到电机轴随着代码中设定的目标位置、速度和扭矩参数,做出极其平滑且响应极快的动作。您可以尝试在代码中动态改变 Kp 和 Kd 的值,直观感受电机刚度和柔顺性的变化。

 

常见问题解答 (FAQ)


Q1:C++ 发送报文后,电机没反应或者报错?

 

A: 请检查以下三点:1. 电机是否已经成功发送了“Enable(使能)”指令?2. C++ 代码中的 CAN ID 是否与上位机设置的电机 ID 完全一致?3. 数据映射时,目标值是否超出了电机协议中规定的 P_MAX 或 V_MAX 限制?(超出限制会导致报文被电机拒绝)。


Q2:代码里的“大小端 (Byte Order)”问题怎么处理?


A: CubeMars 的 CAN 协议通常采用大端模式 (Big-Endian) 进行数据传输。在 C++ 中组装 8 字节报文时,请务必注意字节的高低有效位顺序(MSB/LSB),否则电机解算出的位置和扭矩会发生严重错乱。具体的字节拼接顺序请严格参考下载的《通信协议手册》。


Q3:如何实现电机的“零位 (Zero Position)”校准?


A: 在 MIT 模式下,发送特定的“将当前位置设为零位”的 CAN 指令(具体 ID 和数据帧请参考协议手册),电机会记录当前转子位置为机械零点。建议在每次系统上电初始化时执行此操作。

 

获取资料与探索更多驱动方案


AK60-6 (KV80) 凭借其紧凑的 60mm 法兰尺寸和出色的动态性能,非常适合轻型机械臂、云台及四足机器人的腿部关节。

 

[深入了解 CubeMars AK60-6 (KV80) 产品详细参数与尺寸]

相关文章
重新跳转MIT模式视频
重新跳转MIT模式视频
当电机正确连接上电后无法进入MIT模式,观看视频说明
2024-10-22
案例展示 | CubeMars AK 电机助力北亚利桑那大学 OpenExo 开源外骨骼
案例展示 | CubeMars AK 电机助力北亚利桑那大学 OpenExo 开源外骨骼
探索 OpenExo 开源外骨骼框架如何使用 CubeMars AK 系列电机实现模块化可穿戴机器人设计。高扭矩、快响应,助力研发。
2026-06-17
AK系列机器人动力模组MIT运控模式!
AK系列机器人动力模组MIT运控模式!
AK系列MIT运控模式!控制电机像开车一样简单!
2024-10-22
留言咨询
用户名
匿名用户
电子邮件地址 *
姓名 *
电话
内容
验证码
captcha
温馨提示
温馨提示
您还没有登陆
登录
注册会员
您忘记密码了吗?
温馨提示