steadywin6010电机使用说明

根目录 2026-03-04

新手说明

按驱动、库、校准三步走,不要跳步

这篇是 steadywin6010 / ODrive 类电机的 Windows 使用流程。对新手最关键的是先让电脑识别设备,再装 Python 库,最后在电机无负载状态下做校准;这三个步骤顺序错了,后面基本都会卡住。

开始前准备

  • 建议按文中要求先装 Python 3.9,再装对应版本的 odrive Python 包;命令行和 PyCharm 版本保持一致。
  • 使用能传数据的 Type-C 线,校准时先让电机脱开负载或至少保证周围没有手、线缆和卷筒会被卷入。

图片怎么看

  • 整套顺序是:装 Python -> 装依赖 -> 用 Zadig 切 WinUSB -> 命令行跑 odrivetool -> 执行初始化和参数脚本。
  • 真正安装成功的标志不是 Zadig 点完了,而是 odrivetool 能正常识别设备、脚本能执行到校准动作。

容易出错点

  • Zadig 只给目标控制板替换驱动,不要误选成键盘、鼠标、串口线之类其他 USB 设备。
  • odrive==0.6.9.post0 这种版本号通常和固件配套,脚本报错时先检查版本是否一致,而不是盲目升级。

完成判定

  • 校准时电机会突然转动、发出声响,这是正常现象;但如果明显卡滞、抖动过大或过热,应立即断电检查。
  • 能稳定完成识别、校准、设置参数和简单测试旋转,才说明整条链路可用。
补充提醒:驱动替换和校准都属于风险操作。尤其是校准时,电机可能突然正反转,任何绳索、联轴器、机械臂末端都不要挂在上面直接试。

https://cyberbeast.feishu.cn/docx/N3SMd4QyRobzHkx3wP3cT1qXnpf

 

1. 安装Python 3.9 勾选加入环境变量  安装目录改为C:\python39


图解说明:这张图对应“安装 Python 3.9 勾选加入环境变量 安装目录改为C:\python39”这一步。优先确认驱动、线材和 Python 环境三件事,再运行校准脚本。
 

 


图解说明:这张图对应“安装 Python 3.9 勾选加入环境变量 安装目录改为C:\python39”这一步。优先确认驱动、线材和 Python 环境三件事,再运行校准脚本。
 

2. 安装PyCharm,一路确认

3. 终端 修改pip源

输入pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

4. 安装电机控制库pip install odrive==0.6.9.post0

5. 电机通电,连接Type-C到电脑上

6. 打开Zadig.exe


图解说明:这张图对应“打开 Zadig.exe”这一步。优先确认驱动、线材和 Python 环境三件事,再运行校准脚本。
 

7. 修改驱动类型为WinUSB,点击install Driver,大约3分钟,安装完毕


图解说明:这张图对应“修改驱动类型为 WinUSB,点击install Driver,大约3分钟,安装完毕”这一步。优先确认驱动、线材和 Python 环境三件事,再运行校准脚本。
 

8. 打开cmd 输入odrivetool回车,如果显示以下的文字,说明驱动安装成功,关闭cmd


图解说明:这张图对应“打开 cmd 输入odrivetool回车 ,如果显示以下的文字,说明驱动安装成功,关闭 cmd”这一步。优先确认驱动、线材和 Python 环境三件事,再运行校准脚本。
 

9. 运行python中的6010-8初始化电机和编码器.PY程序

运行后,电机会叫一声,然后正转一圈,反转一圈,用于校准传感器

 

10. 运行6010-8设置参数.py

 

 

11. 运行6010-8测试.py  

电机会旋转

 

 

 

 

 

电机控制逻辑
0~5圈  按照设定的扭矩往回收绳 模拟桨在水里的阻力

>5圈  以最快的速度收绳   桨的位置已经到达极限  运动员会把桨复位  开启大扭矩收绳

 

 

 

 

 

 

odrv0.axis0.encoder.config.index_offset

odrv0.axis0.encoder.pos_estimate

odrv0.save_configuration()

odrv0.axis0.requested_state = 8

odrv0.axis0.config.can.node_id

 

## 当电机ID是0x00时的CAN输出:

### 1. 清除错误命令 (CLEAR_ERROR_CMD = 0x018)

- CAN ID : (0x00 << 5) + 0x018 = 0x018

- 数据 : [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]

### 2. 状态命令 - 启动 (STATE_CMD = 0x007)

- CAN ID : (0x00 << 5) + 0x007 = 0x007

- 数据 : [0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]

### 3. 位置命令 (POS_CMD = 0x00c)

根据你的代码中的示例:

 

位置0时:

 

- CAN ID : (0x00 << 5) + 0x00c = 0x00c

- 数据 : [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] (位置0.0的float表示)

位置-2时:

 

- CAN ID : (0x00 << 5) + 0x00c = 0x00c

- 数据 : [0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00] (位置-2.0的float表示)

### 4. 状态命令 - 停止 (STATE_CMD = 0x007)

- CAN ID : (0x00 << 5) + 0x007 = 0x007

- 数据 : [0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]

 

 

In [2]: odrv0.can.config

Out[2]:

baud_rate: 500000 (uint32)

enable_r120: True (bool)

protocol: 1 (uint8)

r120_gpio_num: 5 (uint16)

 

 

odrv0.can.config

 

小臂


图解说明:这张图对应“号电机 0~1.4”这一步。执行前先拆桨或脱开负载,避免设备突然动作。
 

肩膀


图解说明:这张图对应“号电机 0~1.4”这一步。执行前先拆桨或脱开负载,避免设备突然动作。
 

 

odrv0.erase_configuration()

 

 

odrivetool

 

1号电机  0~1.4

2号电机  0~3.3

 

 

odrv0.axis0.motor.config.current_control_bandwidth=50

 

odrv0.axis0.controller.config.vel_gain=0.16

odrv0.axis0.controller.config.vel_integrator_gain=0.33

odrv0.axis0.controller.config.pos_gain=200

 

 

odrv0.axis0.controller.config.enable_vel_limit=True

odrv0.axis0.controller.config.vel_limit=10

odrivetool 里的单位是转子侧 转/s)

 

odrv0.axis0.trap_traj.config.vel_limit=15

odrv0.axis0.trap_traj.config.decel_limit=5

odrv0.axis0.trap_traj.config.accel_limit=5

 

 

odrv0.axis0.controller.input_pos = 10 #单位turns

odrv0.can.config.enable_r120 = False