|
【robodyno】如何驱动pro级电机
作者:机器谱
技术文档 按位置转动 |
版本历史
系列型号
PJ-MP470/12
PJ-MP470/44
编号 | 版本号 | 修订人 | 修订内容 | 修订日期 |
1 | V1.0 | 赵嵩阳 | 文档发布 | 2021/12/10 |
2 | V1.1 | 赵嵩阳 | 修订电机力矩及转速 | 2022/4/13 |
3 | V2.0 | 赵嵩阳 | 将protobot改为robodyno | 2022/6/1 |
基本参数 | 电机类型 | 无刷伺服电机 |
输入电压(V) | 11.1 ~ 25.2 | |
减速比 | 12.45 : 1 | |
环境温度(℃) | -20 ~ 50 | |
旋转角度 | 多圈连续旋转 | |
通信方式 | CAN 2.0 | |
通信速率 | 默认1Mbit/s,可调 | |
编码器类型 | 绝对位置 | |
编码器分辨率 | 14bit (16384/r) | |
机械参数 | 直径(mm) | 50 |
长度(mm) | 90 | |
重量(g) | 360 | |
背隙(arcmin) | 15 | |
工作参数 | 额定功率(W) | 100 |
额定母线电流(A) | 3 | |
额定转速(rpm) | 544 | |
额定扭矩(Nm) | 1.5 | |
最大母线电流(A) | 5 | |
最大相电流(A) | 15 | |
峰值转速(rpm) | 906 | |
峰值扭矩(Nm) | 4 | |
工作温度(℃) | ≤80 |
基本参数 | 电机类型 | 无刷伺服电机 |
输入电压(V) | 11.1 ~ 25.2 | |
减速比 | 44 : 1 | |
环境温度(℃) | -20 ~ 50 | |
旋转角度 | 多圈连续旋转 | |
通信方式 | CAN 2.0 | |
通信速率 | 默认1Mbit/s,可调 | |
编码器类型 | 绝对位置 | |
编码器分辨率 | 14bit (16384/r) | |
机械参数 | 直径(mm) | 50 |
长度(mm) | 90 | |
重量(g) | 360 | |
背隙(arcmin) | 15 | |
工作参数 | 额定功率(W) | 100 |
额定母线电流(A) | 3 | |
额定转速(rpm) | 154 | |
额定扭矩(Nm) | 5 | |
最大母线电流(A) | 5 | |
最大相电流(A) | 15 | |
峰值转速(rpm) | 256 | |
峰值扭矩(Nm) | 13 | |
工作温度(℃) | ≤80 |
功能ID | 功能名 | 发送者 | 数据长度 | 数据段 | 数据① | 数据② | 数据③ | |||||||
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |||||||
0x01 | 查询API版本 | 请求 | 8 | ① | ② | ③ | 主版本号 | 副版本号 | 设备类型 | |||||
0x02 | 心跳包 | 设备 | 8 | ① | 心跳包 | |||||||||
0x03 | 紧急停止 | 主机 | 0 | |||||||||||
0x04 | 重启 | 主机 | 0 | |||||||||||
0x05 | 清除错误 | 主机 | 0 | |||||||||||
0x06 | 保存设置 | 主机 | 0 | |||||||||||
0x07 | 配置CAN总线 | 主机 | 8 | ① | ② | ③ | CAN_ID | 比特率 | 心跳间隔 | |||||
0x08 | 设置运行状态 | 主机 | 4 | ① | 电机状态 | |||||||||
0x09 | 查询硬件状态 | 请求 | 8 | ① | ② | 总线电压 | 内部温度 | |||||||
0x0A | 查询反馈数据 | 请求 | 8 | ① | ② | ③ | 位置 | 速度 | 力矩 | |||||
0x0B | 查询控制模式 | 请求 | 2-8 | ① | ② | 控制模式 | 模式参数 | |||||||
0x0C | 设置控制模式 | 主机 | 2-8 | ① | ② | 控制模式 | 模式参数 | |||||||
0x0D | 查询PID | 请求 | 8 | ① | ② | ③ | 位置环P | 速度环P | 速度环I | |||||
0x0E | 设置PID | 主机 | 8 | ① | ② | ③ | 位置环P | 速度环P | 速度环I | |||||
0x0F | 查询电机限值 | 请求 | 8 | ① | ② | 电压上限 | 电流上限 | |||||||
0x10 | 设置电机限值 | 主机 | 8 | ① | ② | 电压上限 | 电流上限 | |||||||
0x11 | 设置位置 | 主机 | 8 | ① | ② | ③ | ||||||||
0x12 | 设置速度 | 主机 | 8 | ① | ② | |||||||||
0x13 | 设置力矩 | 主机 | 4 | ① | ||||||||||
0x14 | 恢复出厂设置 | 主机 | 0 |
PJ-MP470/44
注:数据段存储均采用小端序(Little-Endian)。
1. 初始化电机对象
from robodyno import Robot
from robodyno.nodes import MotorFactory
robot = Robot()
motor = robot.add_device('motor0', MotorFactory(), 0x15, reduction=12.45)
参数:
- name: 电机名
- factory: 电机对象工厂类
- id: 电机设备ID(出厂0x10)
- reduction: 电机减速比
2. 电机状态
motor.status()
最近一次心跳包的内容
返回值:
- 电机状态dict
- state: 工作模式(1-空闲,8-使能)
- error: 错误码(1-电压不足,14-急停)
- motor_err: 电机相关错误码
- encoder_err: 编码器相关错误码
- controller_err: 控制器相关错误码
- control_mode: 控制模式(1-力矩控制,2-速度控制,3-位置控制)
- input_mode: 输入模式(1-直接值,2-带加速度,3-带滤波,5-梯形轨迹)
- timestamp: 时间戳,上一次收到心跳包的时间
3. 获取API版本
get_api_version(timeout = 0)
参数:
- timeout: 请求超时时间(s),0代表无超时时间
返回值:
- API版本dict
- device_uuid: 设备uuid
- main_version: 主版本号
- sub_version: 副版本号
4. 电机软急停
estop()
5. 电机重启
reboot()
6. 清除错误
clear_errors()
7. 保存设置
save_configuration()
设置参数后默认不会保存,直到调用此函数
8. 设置电机CAN_ID
set_can_id(id, bitrate, rate)
参数:
- id:电机新CAN_ID (0x01~0x3F)
- bitrate: CAN速率(0-250kbit/s, 1–500kbit/s, 2–1Mbit/s)
- rate: 心跳包发送周期,ms
9. 电机使能
enable()
10. 电机失能
disable()
11. 电机校准
calibrate()
校准后需保存参数
12. 读取总线电压
get_vbus(timeout)
参数:
- timeout
返回值:
- 总线电压值(V)
13. 读取电机温度
get_temperature(timeout)
参数:
- timeout
返回值:
- 电机温度(°C)
14. 读取电机状态参数
get_status(timeout)
参数:
- timeout
返回值:
- 电机状态参数(位置rad, 速度rad/s, 力矩Nm)
15. 读取电机位置
get_pos(timeout)
参数:
- timeout
返回值:
- 位置(rad)
16. 读取电机速度
get_vel(timeout)
参数:
- timeout
返回值:
- 速度(rad/s)
17. 读取电机力矩
get_torque(timeout)
参数:
- timeout
返回值:
- 力矩(Nm)
18. 读取电机控制模式
get_controller_modes(timeout)
参数:
- timeout
返回值:
- 控制模式(control_mode, input_mode)
- control_mode: 控制模式(1-力矩控制,2-速度控制,3-位置控制)
- input_mode: 输入模式(1-直接值,2-带加速度,3-带滤波,5-梯形轨迹)
19. 读取加速度输入模式参数
get_ramp_mode_ramp(timeout)
参数:
- timeout
返回值:
- ramp: 加速度(rad/s^2)
20. 读取滤波输入模式参数
get_filter_mode_bandwidth(timeout)
参数:
- timeout
返回值:
- bandwidth: 滤波带宽 / 输入频率(Hz)
21. 读取轨迹模式参数
get_traj_mode_params(timeout)
参数:
- timeout
返回值:
- 轨迹参数(最大速度, 加速度, 减速度)
22. 读取电机PID参数
get_controller_pid(timeout)
参数:
- timeout
返回值:
- 电机PID(位置环P, 速度环P, 速度环I)
23. 设置电机PID参数
set_controller_pid(pos_p, vel_p, vel_i)
参数:
- pos_p: 位置环比例系数
- vel_p: 速度环比例系数
- vel_i: 速度环积分系数
24. 读取电机速度电流限制
get_limits(timeout)
参数:
- timeout
返回值:
- (输入端最大速度(r/s), 最大电流(A))
25. 读取电机速度限制
get_vel_limit(timeout)
参数:
- timeout
返回值:
- 输出端最大速度(rad/s)
26. 读取电机电流限制
get_current_limit(timeout)
参数:
- timeout
返回值:
- 最大电流(A)
27. 设置电机速度电流限制
set_limits(vel_limit, torque_limit)
参数:
- vel_limit: 输入端最大速度(r/s)
- torque_limit: 最大电流(A)
28. 设置电机速度限制
set_vel_limit(vel_limit)
参数:
- vel_limit: 输出端最大速度(rad/s)
29. 进入直接位置模式
position_mode()
直接PID控制位置
30. 进入滤波位置模式
position_filter_mode(bandwidth)
参数:
- bandwidth: 滤波带宽 / 控制频率(Hz)
31. 进入轨迹位置模式
position_traj_mode(max_vel, accel, decel)
参数:
- max_vel: 最高速度
- accel: 加速度
- decel: 减速度
32. 设置位置
set_pos(position)
参数:
- position: 目标位置(rad)
33. 进入直接速度模式
velocity_mode()
速度PID控制
34. 进入匀加减速速度模式
velocity_ramp_mode(ramp)
参数:
- ramp: 加速度(rad/s^2)
35. 设置速度
set_vel(velocity)
参数:
- velocity: 目标速度(rad/s)
36. 进入力矩控制模式
torque_mode()
37. 设置力矩
set_torque(torque)
参数:
- torque: 目标力矩(Nm)
机械尺寸及通信接口
默认通信速率1Mbit/s,通信速率250kbit/s – 1Mbit/s可调,数据帧格式如图:
· IDENTIFIER:数据帧ID标识符
· RTR:远程请求帧标识符
· DLC:DATA数据长度(字节数)
· DATA:数据段,0-8字节
· CRC:循环冗余校验
Robodyno Pro可编程电机通信协议将协议中的11位ID标识符分为6位设备ID(最大0x3F)与5位功能标识码(最大0x1F),
即:IDENTIFIER(11bit) = device_id << 5 | function_code
例如ID为0x10的可编程电机,心跳包(功能码0x02)的CAN数据帧ID为0x202。
通信协议中的数据帧存在3种不同的发送方式,对应3种发送者:
1. 设备主动发送:如设备定期发送的心跳包。
2. 主机发送指令:如重启指令。
3. 主机请求数据:如查询电机反馈信息。主机会在功能ID对应的地址上发送远程请求帧(RTR),设备接收到请求指令后会在相同地址上返回对应的数据内容。
robodyno_Pro_技术文档.pdf | 618.31KB | 下载12次 | 下载 |
1. 功能描述
按位置转动,是指给定一个位置参数,让电机运动到该位置。
按位置转动包含三种不同的模式:
1.1 直接位置模式
在该模式下,电机从一个位置直接转动到一个或多个指定位置。直接PID控制位置,对实时位置命令响应迅速,急起急停,但位置命令频率高时容易抖动。
1.2 滤波位置模式
在该模式下,电机从一个位置平滑地转动到一个或多个指定位置。电机的运动曲线经过滤波处理,有一个加速和减速的过程。对实时位置命令响应较快,但运动姿态平顺,位置命令频率高时表现优异。
1.3 轨迹位置模式
在该模式下,电机从一个位置平滑地转动到一个指定位置,只对最终指定位置发生响应。电机有一个均匀加速的过程和一个均匀减速的过程。无法快速响应实时位置命令,但运动非常平顺,且轨迹的运动时间非常稳定,位置命令频率低时较为常用。
2. 准备工作
3. 实现步骤
3.1为了方便使用,可以给电机安装支架,防止电机在桌面滚动。然后按照图示,完成电路连接。
4. Python编程
以下代码分别在Linux系统(Ubuntu 18.04),Windows10系统的Jupyter环境中测试通过。
4.1 直接位置模式:
4.2 滤波位置模式:
4.3 轨迹位置模式:
4.4 分别用三种模式,依次走到2π,0,-2π三个位置:
5. 资料清单
序号 | 内容 |
1 | 程序代码 |
【整体打包】-【U005】如何驱动pro级电机-按位置转动-资料附件.zip | 3.09KB | 下载1次 | 下载 |