机器谱

【robodyno】如何驱动pro级电机

作者:机器谱

图文展示3264(1)(1)

图文展示3264(1)(1)

副标题

技术文档
按位置转动

版本历史

系列型号

PJ-MP470/12

PJ-MP470/44

技术参数
PJ-MP470/12
编号版本号修订人修订内容修订日期
1
V1.0赵嵩阳文档发布2021/12/10
2
V1.1赵嵩阳修订电机力矩及转速2022/4/13
3
V2.0赵嵩阳protobot改为robodyno2022/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)

Python API参考

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),设备接收到请求指令后会在相同地址上返回对应的数据内容。


协议内容
CAN总线通信协议

基本说明

Robodyno Pro可编程电机通信方式遵循CAN 2.0规范,使用11位标识符的标准格式
文件下载
robodyno_Pro_技术文档.pdf
618.31KB下载12次下载
上一页 1 下一页
技术文档

1. 功能描述

      按位置转动,是指给定一个位置参数,让电机运动到该位置。

      按位置转动包含三种不同的模式:

1.1 直接位置模式

      在该模式下,电机从一个位置直接转动到一个或多个指定位置。直接PID控制位置,对实时位置命令响应迅速,急起急停,但位置命令频率高时容易抖动。

1.2 滤波位置模式

     在该模式下,电机从一个位置平滑地转动到一个或多个指定位置。电机的运动曲线经过滤波处理,有一个加速和减速的过程。对实时位置命令响应较快,但运动姿态平顺,位置命令频率高时表现优异。

1.3 轨迹位置模式

      在该模式下,电机从一个位置平滑地转动到一个指定位置,只对最终指定位置发生响应。电机有一个均匀加速的过程和一个均匀减速的过程。无法快速响应实时位置命令,但运动非常平顺,且轨迹的运动时间非常稳定,位置命令频率低时较为常用。

2. 准备工作

序号

名称备注
1 Robodyno pro电机模组
2 CAN数据线
3 Robodyno pro通信坞
4 12V电源适配器
5 TypeC数据线
6系统准备   查看教程
7 Jupyter准备查看教程


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次下载
上一页 1 下一页
© 2022 机器时代(北京)科技有限公司  版权所有
机器谱——机器人共享方案网站
学习  开发  设计  应用