目录
3.4 多个关节相对角度控制函数:step_angles()
3.5 单个关节力位混合(自适应)绝对角度控制函数:set_angle_adaptive()
3.6 多个关节力位混合(自适应)绝对角度控制函数:set_angles_adaptive()
3.7 单个关节阻抗控制函数:impedance_control()
3.8 多个关节阻抗控制函数:impedance_control_multi()
3.10 多个关节运动助力函数:motion_aid_multi()
3.11 检查并等待单个关节转动到目标角度函数:position_done()
3.12 检查并等待多个关节转动到目标角度函数:positions_done()
4.5 同时回读关节当前角度和转速函数:get_state()
4.7 回读总线电压和 FOC q 轴电流函数:get_vol_cur()
4.8 开启角度、转速、力矩实时反馈函数:enable_angle_speed_torque_state ()
4.9 设置角度、转速、力矩反馈时间间隔函数:set_state_feedback_rate_ms()
4.10 单个关节角度、转速、力矩实时反馈函数:angle_speed_torque_state ()
4.11 多个关节角度、转速、力矩实时反馈函数:angle_speed_torque_states ()
4.12 关闭角度、转速、力矩实时反馈函数:disable_angle_speed_torque_state ()
4.13 回读控制环位置增益 P、积分增益 I、转速增益 D 函数:get_pid()
5.1 设置当前角度为零点(断电重启后丢失)函数:set_zero_position_temp()
5.2 设置当前角度为零点(断电重启后不丢失)函数:set_zero_position()
5.3 设置本次运行期间关节角度限位函数:set_angle_range()
5.4 关闭本次运行期间关节角度限位函数:disable_angle_range()
5.5 设置关节角度限位属性函数:set_angle_range_config()
5.6 关闭关节角度限位属性函数:disable_angle_range_config()
5.7 设置本次运行期间转速限制函数:set_speed_limit()
5.8 设置本次运行期间力矩限制函数:set_torque_limit()
5.9 设置本次运行期间力位混合(自适应)转速函数:set_speed_adaptive()
5.10 设置本次运行期间力位混合(自适应)力矩函数:set_torque_adaptive()
5.11 设置本次运行期间位置增益 P、积分增益 I、转速增益 D 函数:set_pid()
5.13 设置 CAN 通信波特率函数:set_can_baud_rate()
5.14 写入关节配置参数函数:write_property()
一、简介
DrEmpower 智能一体化关节作为一款智能驱动器,不仅满足运动学控制的各项需求,同时也可满足动力学控制实践,使得用其开发的机器人产品更加贴近应用水平。
关节产品包括谐波减速器系列(HSA)、行星减速器系列(PDA)、中空系列(HCA)。具备运动智能特点,具备四大技能,包括运动控制、参数回读、参数设置和自主决策。
运动控制方面,除角度、转速、力矩控制外,还可进行运动助力控制、力位混合(自适应)控制、阻抗控制、急停控制。更多控制请见后续详情;
参数回读方面,可实时回读角度、转速、力矩。回读控制相关参数,如PID等。回读环境参数,如温度。更多参数请见后续详情;
参数设置方面,控制环中所有参数均可设置,也包括一些功能的使能设置。更多参数请见后续详情;
自主决策方面,包括碰撞感知、堵转/过流/温度保护、角度/转速/力矩限制等;
玩转运动智能 DrEmpower QQ 交流群:964592447
淘宝链接:
MIT机器人关节 多圈计数 碰撞检测 力位混合 阻抗控制 运动助力-淘宝网 (taobao.com)
二、设置关节 ID 编号
设置关节 ID 编号函数set_id(),改变一体化关节 ID 编号(一次设定,关机后依然保存)。其原型及参数解释如表2-1和表2-2所示。
表2-1 设置关节 ID 编号函数原型说明
函数原型说明 | |
函数原型 | set_id(id_num=0, new_id=0) |
返回值 | Bool 值,True代表设置成功;False代表设置失败。 |
表2-2 设置关节 ID 编号函数参数解释说明
参数 | 解释 |
id_num | 需要重新设置 ID 编号的一体化关节的 ID 编号,如果不知道当前一体化关节 ID 编号,可以用 0 广播。但是这时总线上只能连一个一体化关节,否则多个一体化关节会被设置成相同编号。 |
new_id | 新一体化关节编号,一体化关节 ID 号范围为 1~63 内整数。 |
特别提醒:
(1) 使用一体化关节前请先将其设置独有的ID号,以免在总线中出现相同ID号的多个关节,造成通信混乱;
(2) 该函数最好在正式使用关节之前使用,预先设置ID以便确定控制目标。
三、运动控制
3.1 单个关节绝对角度控制函数:set_angle()
单个关节角度控制函数set_angle() 用于控制指定 ID 编号的一体化关节按照指定的转速转动到指定的角度(绝对角度,相对于用户设定的零点角度)。其原型及参数解释如表3-1和表3-2所示。
函数原型说明 | |
函数原型 | set_angle(id_num=0, angle=0, speed=0, param=0, mode=0) |
返回值 | Bool 值,True代表运行正常;False代表出现异常。 |
表3-2 单个关节角度控制函数参数解释说明
参数 | 解释 |
id_num | 一体化关节 ID 编号,如果不知道当前一体化关节 ID,可以用 0 广播,此时如果总线上有多个一体化关节,则多个一体化关节都会执行该操作。 |
angle | 一体化关节绝对角度(°)。 |
speed | 一体化关节转速(r/min),具体含义由 mode 的取值决定, mode=1:目标转速;mode=0/2:前馈转速。 |
param | 运动参数,由 mode 取值决定, mode=0:角度输入滤波带宽(<300); mode=1:启动和停止阶段角加转速(r/min/s);mode=2:前馈力矩 torque(Nm)。 |
mode | 角度控制模,一体化关节支持三种角度控制模式,由 mode 取值决定, mode = 0:轨迹跟踪模式,适合多个轨迹点输入后进行平滑控制,角度输入滤波带宽参数需设置为指令发送频率的一半; mode = 1:梯形轨迹模式,这种模式下可以指定运动过程中的目标转速和启停加转速; mode = 2:前馈控制模式,这种模式下的 speed 和 torque 分别为前馈控制量。前馈控制在原有PID控制基础上加入转速和力矩前馈,提高系统的响应特性和减少静态误差。 |
注:在 mode=1 梯形轨迹模式中,speed 和 accel 都要大于 0;mode=0 时 speed 不起作用。
3.2 多个关节绝对角度控制函数:set_angles()
多个关节绝对角度控制函数:set_angles(),用于控制多个编号的一体化关节按照一定转速转动到指定的角度。其原型及参数解释如表3-3和表3-4。
函数原型说明 | |
函数原型 | set_angles(id_list=[1, 2, 3], angle_list=[0, 0, 0], speed=10, param=10, mode=1) |
返回值 | Bool 值,True代表运行正常;False代表出现异常。 |
表3-4 多个关节绝对角度控制函数参数解释说明
参数 | 解释 |
id_list | 一体化关节 ID 编号组成的列表。 |
angle_list | 目标角度(°)组成的列表。 |
speed | 指定转速(r/min),由 mode 取值决定: mode=1,多个一体化关节中转速最大者的转速; mode=0/2,或前馈转速。 |
param | 运动参数,由 mode 取值决定: mode=0,角度输入滤波带宽(<300); mode=1,启动和停止阶段加转速(r/min/s); mode=2,前馈力矩(Nm)。 |
mode | 控制模式选择,一体化关节支持三种角度控制模式,由 mode 取值决定: mode=0:多个一体化关节轨迹跟踪模式,适合多个轨迹点输入后进行平滑控制,角度输入带宽参数需设置为指令发送频率的一半; mode=1:多个一体化关节梯形轨迹模式,此时speed为这些一体化关节的最快转速(r/min),param为目标加转速(r/min/s); mode=2:前馈控制模式,这种模式下的speed和torque分别为前馈控制量。前馈控制在原有PID控制基础上加入转速和力矩前馈,提高系统的响应特性和减少静态误差。 |
3.3 单个关节相对角度控制函数:step_angle()
单个关节相对角度控制函数step_angle(),控制指定编号的一体化关节按照指定的转速相对转动指定的角度(相对角度,相对于发送该指令时的角度)。其原型及参数解释如表3-5和表3-6。
函数原型说明 | |
函数原型 | step_angle(id_num=1, angle=0, speed=0, param=0, mode=0) |
返回值 | Bool 值,True代表运行正常;False代表出现异常。 |
表3-6 单个关节相对角度控制函数参数解释说明
参数 | 解释 |
id_num | 一体化关节 ID 编号,如果不知道当前一体化关节 ID,可以用 0 广播,此时如果总线上有多个一体化关节,则多个一体化关节都会执行该操作。 |
angle | 一体化关节相对角度(°) |
speed | 指定转速(r/min),由 mode 取值决定: mode=1,目标转速; mode=0/2, 前馈转速(r/min)。 |
param | 运动参数,由 mode 取值决定, mode=0,角度输入滤波带宽(<300); mode=1,启动和停止阶段加转速(r/min/s); mode=2,前馈力矩 torque(Nm)。 |
mode | 角度控制模,一体化关节支持三种角度控制模式,由 mode 取值决定, mode=0:轨迹跟踪模式,适合多个轨迹点输入后进行平滑控制,角度输入滤波带宽参数需设置为指令发送频率的一半; mode=1:梯形轨迹模式,这种模式下可以指定运动过程中的目标转速和启停加转速; mode=2:前馈控制模式,这种模式下的speed和torque分别为前馈控制量,前馈控制在原有PID控制基础上加入转速和力矩前馈,提高系统的响应特性和减少静态误差。 |
3.4 多个关节相对角度控制函数:step_angles()
多个关节相对角度控制函数step_angles(),控制多个一体化关节按照指定的时间先对转动给定角度。其原型及参数解释如表3-7和表3-8。
函数原型说明 | |
函数原型 | step_angles(id_list=[1, 2, 3], angle_list=[0, 0, 0], speed=10, param=10, mode=1) |
返回值 | Bool 值,True代表运行正常;False代表出现异常。 |
单个关节相对角度控制函数参数解释说明
参数 | 解释 |
id_list | 一体化关节 ID 编号组成的列表。 |
angle_list | 相对目标角度组成的列表。 |
speed | 指定转速(r/min),由 mode 取值决定: mode=1,目标转速; mode=0/2, 前馈转速(r/min)。 |
param | 运动参数,由 mode 取值决定, mode=0,角度输入滤波带宽(<300); mode=1,启动和停止阶段加转速(r/min/s); mode=2,前馈力矩 torque(Nm)。 |
mode | 角度控制模,一体化关节支持三种角度控制模式,由 mode 取值决定, mode=0:轨迹跟踪模式,适合多个轨迹点输入后进行平滑控制,角度输入滤波带宽参数需设置为指令发送频率的一半; mode=1:梯形轨迹模式,这种模式下可以指定运动过程中的目标转速和启停加转速; mode=2:前馈控制模式,这种模式下的speed和torque分别为前馈控制量,前馈控制在原有PID控制基础上加入转速和力矩前馈,提高系统的响应特性和减少静态误差。 |
3.5 单个关节力位混合(自适应)绝对角度控制函数:set_angle_adaptive()
单个关节力位混合(自适应)绝对角度控制函数set_angle_adaptive(),控制指定 ID 编号的一体化关节按照限定的转速和力矩转动到指定的角度(绝对角度,相对于用户设定的零点角度)。注:当设置的转速相对于力矩过大,或力矩相对于转速过小,则关节无法在短时间内提供足够的加速度使得转速将为 0,此时若关节未遇阻力会出现在目标角度过冲现象,此为物理规律,暂时没有好的解决办法。其原型及参数解释如表3-9和表3-10。
表3-9 单个关节力位混合(自适应)绝对角度控制函数原型说明
函数原型说明 | |
函数原型 | set_angle_adaptive(id_num=0, angle=0, speed=0, torque=0) |
返回值 | Bool 值,True代表运行正常;False代表出现异常。 |
表3-10 单个关节力位混合(自适应)绝对角度控制函数参数解释说明
参数 | 解释 |
id_num | 一体化关节 ID 编号,如果不知道当前一体化关节 ID,可以用 0 广播,此时如果总线上有多个一体化关节,则多个一体化关节都会执行该操作。 |
angle | 一体化关节角度(°)。 |
speed | 限定转速值(r/min)。 |
torque | 限定力矩值(Nm)。 |
3.6 多个关节力位混合(自适应)绝对角度控制函数:set_angles_adaptive()
多个关节力位混合(自适应)绝对角度控制函数:set_angles_adaptive(),控制多个一体化关节按照限定的转速和力矩转动到指定的角度(绝对角度,相对于用户设定的零点角度)。注:当设置的转速相对于力矩过大,或力矩相对于转速过小,则关节无法在短时间内提供足够的加速度使得转速将为 0,此时若关节未遇阻力会出现在目标角度过冲现象,此为物理规律,暂时没有好的解决办法。其原型及参数解释如表3-11和表3-12。
表3-11 多个关节力位混合(自适应)绝对角度控制函数原型说明
函数原型说明 | |
函数原型 | set_angles_adaptive(id_list=[0, 0, 0], angle_list=[0, 0, 0], speed_list=[0, 0, 0], torque_list=[0, 0, 0]) |
返回值 | Bool 值,True代表运行正常;False代表出现异常。 |
表3-12 多个关节力位混合(自适应)绝对角度控制函数参数解释说明
参数 | 解释 |
id_list | 一体化关节 ID 编号组成的列表。 |
angle_list | 一体化关节角度(°)组成的列表。 |
speed_list | 限定转速值(r/min)组成的列表。 |
torque_list | 限定力矩值(Nm)组成的列表。 |
3.7 单个关节阻抗控制函数:impedance_control()
单个关节阻抗控制函数impedance_control(),对指定 ID 编号的一体化关节进行阻抗控制。该函数执行结束后关节会停在目标角度 angle,并对外表现出一定柔性。其原型及参数解释表3-13和表3-14。
函数原型说明 | |
函数原型 | impedance_control(id_num=0, angle=0, speed=0, tff=0, kp=0, kd=0) |
返回值 | Bool 值,True代表运行正常;False代表出现异常。 |
表3-14 单个关节阻抗控制函数参数解释说明
参数 | 解释 |
id_num | 一体化关节 ID 编号,如果不知道当前一体化关节 ID,可以用 0 广播,此时如果总线上有多个一体化关节,则多个一体化关节都会执行该操作。 |
angle | 一体化关节目标角度(°)。 |
speed | 一体化关节目标转速(r/min)。 |
tff | 前馈力矩(Nm)。 |
kp | 角度刚度系数(Nm/°),需大于 0。 |
kd | 转速阻尼系数(Nm/(r/min)),需大于 0。 |
注:
(1) 该函数直接控制关节输出力矩,其目标输出力矩计算公式如下:
torque = kp*( angle – angle_) + tff + kd*(speed – speed_)
其中 angle_ 和 speed_ 分别为输出轴当前实际角度(°)和当前实际转速(r/min), kp 和 kd 为刚度系数和阻尼系数。
(2) 默认关节在机器人不能连续整周旋转,因而该函数内部强制kp不能为零,如需在连续整周转或其他特殊场景使用该函数,可自行修改改函数体对应代码
3.8 多个关节阻抗控制函数:impedance_control_multi()
多个关节阻抗控制函数impedance_control_multi(),对多个一体化关节进行阻抗控制。该函数执行结束后被指定的各个关节会停在目标角度 angle,并对外表现出一定柔性。其原型及参数解释如表3-15和表3-16。
函数原型说明 | |
函数原型 | impedance_control_multi(id_list=[1, 2, 3], angle_list=[0, 0, 0], speed_list=[0, 0, 0], tff_list=[0, 0, 0], kp_list=[0, 0, 0], kd_list=[0, 0, 0]) |
返回值 | Bool 值,True代表运行正常;False代表出现异常。 |
表3-16 多个关节阻抗控制函数参数解释说明
参数 | 解释 |
id_num_list | 一体化关节 ID 编号组成的列表。 |
angle_list | 一体化关节目标角度组成的列表(°)。 |
speed_list | 一体化关节目标转速组成的列表(r/min)。 |
tff_list | 前馈力矩组成的列表(Nm)。 |
kp_list | 角度刚度系数组成的列表(Nm/°),每个元素均需大于 0。 |
kd_list | 转速阻尼系数组成的列表(Nm/(r/min)),每个元素均需大于 0。 |
注:
(1) 该函数直接控制关节输出力矩,其目标输出力矩计算公式如下:
torque = kp_list[i] * (angle_list[i] – angle_[i]) + tff_list[i] + kd_list[i] * (speed_list[i] – speed_[i])
其中 angle_[i] 和 speed_[i] 分别为对应关节输出轴当前实际角度(度)和当前实际转速(r/min), kp_list[i] 和 kd_list[i]为刚度系数和阻尼系数。
(2) 默认关节在机器人不能连续整周旋转,因而该函数内部强制kp[i]不能为零,如需在连续整周转或其他特殊场景使用该函数,可自行修改改函数体对应代码
3.9 单个关节运动助力函数:motion_aid()
单个关节运动助力函数motion_aid(),指定 ID 编号的一体化关节进行运动助力。当关节在停止状态下检测到角度差 angle_err 和转速差 speed_err 时向目标角度 angle 方向提供力矩大小为 torque 的助力,并在到达 angle 后停止并保持位置。其原型及参数解释如表3-17和表3-18。
函数原型说明 | |
函数原型 | motion_aid(id_num=0, angle=0,speed=0, angle_err=0, speed_err=0, torque=0) |
返回值 | Bool 值,True代表运行正常;False代表出现异常。 |
表3-18 单个关节运动助力函数参数解释说明
参数 | 解释 |
id_num | 一体化关节 ID 编号,如果不知道当前一体化关节 ID,可以用 0 广播,此时总线上有多个一体化关节,则多个一体化关节都会执行该操作。 |
angle | 助力目标角度(°),该值减去关节当前角度即为助力行程。 |
speed | 限定转速(r/min),即助力的限定转速,防止助力力矩引起的加速导致转速过快 |
angle_err | 角度差值(°),表示运动助力的角度灵敏度。 |
speed_err | 转速差值(r/min),表示运动助力的转速灵敏度。 |
torque | 助力力矩(Nm)。 |
注:
a、当助力与外部驱动力之和大于阻力,关节会持续转动;
b、当助力与外部驱动力之和小于阻力,关键开始减速,当转速小于 2 倍转速差值 speed_err 时,关节停止输出助力;
c、一般情况下,该功能为人进行助力,强烈建议用户将助力力矩设置在人力所能及的范围内,即人力可使关节停止转动;
d、若必须设置超出人力的力矩,则必须在合理位置设置牢固的机械限位,以避免超出运动范围给人或物体带来损伤。
3.10 多个关节运动助力函数:motion_aid_multi()
多个关节运动助力函数motion_aid_multi(),指定多个一体化关节进行运动助力。当关节在停止状态下检测到角度差 angle_er_list[i] 和转速差 speed_err_list[i] 时向目标角度 angle_list[i] 方向提供力矩大小为torque_list[i] 的助力,并在到达 angle_list[i] 后停止并保持位置。其原型及参数解释如表3-19和表3-20。
函数原型说明 | |
函数原型 | motion_aid_multi(id_list=[1, 2, 3], angle_list=[0, 0, 0], speed_list=[0, 0, 0], angle_err_list=[1, 1, 1], speed_err_list=[1, 1, 1], torque_list=[1, 1, 1]) |
返回值 | Bool 值,True代表运行正常;False代表出现异常。 |
表3-20 多个关节运动助力函数参数解释说明
参数 | 解释 |
id_list | 一体化关节 ID 编号组成的列表。 |
angle_list | 助力目标角度组成的列表(°),该值减去关节当前角度即为助力行程。 |
speed_list | 限定转速组成的列表(r/min),即助力的限定转速,防止助力力矩引起的加速导致转速过快。 |
angle_err_list | 角度差值(°)组成的列表,表示运动助力的角度灵敏度。 |
speed_err_list | 转速差值(r/min)组成的列表,表示运动助力的转速灵敏度。 |
torque_list | 助力力矩(Nm)组成的列表。 |
注:
a、当助力与外部驱动力之和大于阻力,关节会持续转动;
b、当助力与外部驱动力之和小于阻力,关键开始减速,当转速小于 2 倍转速差值 speed_err_list[i] 时,关节停止输出助力;
c、一般情况下,该功能为人进行助力,强烈建议用户将助力力矩设置在人力所能及的范围内,即人力可使关节停止转动;
d、若必须设置超出人力的力矩,则必须在合理位置设置牢固的机械限位,以避免超出运动范围给人或物体带来损伤。
3.11 检查并等待单个关节转动到目标角度函数:position_done()
检查并等待单个关节转动到目标角度函数position_done(),检查并等待单个一体化关节是否转动到指定角度。其原型及参数解释如表3-21和表3-22。
函数原型说明 | |
函数原型 | position_done(id_num=0) |
返回值 | True代表转动到指定角度;None代表尚未到达指定角度。 |
表3-22 检查并等待单个关节转动到目标角度函数参数解释说明
参数 | 解释 |
id_num | 一体化关节 ID 编号,如果不知道当前一体化关节 ID,可以用 0 广播,此时如果总线上有多个一体化关节,则多个一体化关节都会执行该操作。 |
3.12 检查并等待多个关节转动到目标角度函数:positions_done()
检查并等待多个个关节转动到目标角度函数positions_done(),检查并等待单个一体化关节是否转动到指定角度。其原型及参数解释如表3-23和表3-24。
函数原型说明 | |
函数原型 | positions_done(id_list=[1, 2, 3]) |
返回值 | True代表全部转动到指定角度;None代表尚未全部到达指定角度。 |
表3-24 检查并等待多个个关节转动到目标角度函数参数解释说明
参数 | 解释 |
id_list | 一体化关节 ID 编号组成的列表。 |
3.13 单个关节转速控制函数:set_speed()
单个关节转速控制函数set_speed(),控制指定 ID 编号的一体化关节按照指定的转速连续整周转动(转动到关节支持的极限角度后自动停止)。其原型及参数解释如表3-25和表3-26。
函数原型说明 | |
函数原型 | set_speed(id_num=0, speed=10, param=0, mode=1) |
返回值 | Bool 值,True代表运行正常;False代表出现异常。 |
表3-26 单个关节转速控制函数参数解释说明
参数 | 解释 |
id_num | 一体化关节 ID 编号,如果不知道当前一体化关节 ID,可以用 0 广播,此时如果总线上有多个一体化关节,则多个一体化关节都会执行该操作。 |
speed | 目标转速(r/min)。 |
param | 运动参数,由 mode 取值决定: mode=0,前馈力矩(Nm); mode!=0,目标加转速(r/min/s)。 |
mode | 控制模式选择,由 mode 取值决定: mode=0,转速直接控制模式,将一体化关节目标转速直接设为 speed; mode!=0,匀加速控制模式,一体化关节将按照目标角加速变化到 speed。 |
3.14 多个关节转速控制函数:set_speeds()
多个关节转速控制函数set_speeds(),控制多个一体化关节按照指定的转速连续整周转动(转动到关节支持的极限角度后自动停止)。其原型及参数解释如表3-27和表3-28。
函数原型说明 | |
函数原型 | set_speeds(id_list=[1, 2, 3], speed_list=[10.0, 20.0, 30.0], param=0, mode=1) |
返回值 | Bool 值,True代表运行正常;False代表出现异常。 |
表3-28 多个关节转速控制函数参数解释说明
参数 | 解释 |
id_list | 一体化关节 ID 编号组成的列表。 |
speed_list | 一体化关节目标转速(r/min)组成的列表。 |
param | 运动参数,由 mode 取值决定: mode=0,前馈力矩(Nm); mode!=0,目标加转速(r/min/s)。 |
mode | 控制模式选择,由 mode 取值决定: mode=0,转速直接控制模式,将一体化关节目标转速直接设为 speed; mode!=0,匀加速控制模式,一体化关节将按照目标角加速变化到 speed。 |
3.15 单个关节力矩控制函数:set_torque()
单个关节力矩控制函数set_torque(),控制指定 ID 编号的一体化关节输出指定的力矩(Nm),若阻力不足以抵抗该力矩,则关节会持续转动(转动到关节支持的极限角度后自动停止)。其原型及参数解释如表3-29和表3-30。
函数原型说明 | |
函数原型 | set_torque(id_num=0, torque=0.1, param=0, mode=1) |
返回值 | Bool 值,True代表运行正常;False代表出现异常。 |
表3-30 单个关节力矩控制函数参数解释说明
参数 | 解释 |
id_num | 一体化关节 ID 编号,如果不知道当前一体化关节 ID,可以用 0 广播,此时如果总线上有多个一体化关节,则多个一体化关节都会执行该操作。 |
torque | 目标力矩(Nm)。 |
param | 运动参数,由 mode 取值决定: mode=0,参数不起作用; mode!=0,力矩在单位时间内的增量(Nm/s)。 |
mode | 控制模式选择,由 mode 取值决定: mode=0,力矩直接控制模式,将一体化关节目标转速直接设为 torque; mode!=0,力矩匀速增加模式,一体化关节将按照指定的单位时间内的增量匀速变化到 torque。 |
3.16 多个关节力矩控制函数:set_torques()
多个关节力矩控制函数set_torques(),控制多个一体化关节输出指定的力矩,若阻力不足以抵抗该力矩,则关节会持续转动(转动到关节支持的极限角度后自动停止)。其原型及参数解释如表3-31和表3-32。
函数原型说明 | |
函数原型 | set_torques(id_list=[1, 2, 3], torque_list=[3.0, 4.0, 5.0], param=0, mode=1) |
返回值 | Bool 值,True代表运行正常;False代表出现异常。 |
表3-32 多个关节力矩控制函数参数解释说明
参数 | 解释 |
id_list | 一体化关节 ID 编号组成的列表。 |
torque_list | 一体化关节目标力矩(Nm)组成的列表。 |
param | 运动参数,由 mode 取值决定: mode=0,参数不起作用; mode!=0,力矩在单位时间内的增量(Nm/s)。 |
mode | 控制模式选择,由 mode 取值决定: mode=0,力矩直接控制模式,将一体化关节目标转速直接设为 torque; mode!=0,力矩匀速增加模式,一体化关节将按照指定的单位时间内的增量匀速变化到 torque。 |
3.17 急停函数:estop ()
急停函数estop(),控制一体化关节紧急停止。如果想控制多个关节同时急停,则可使 id_num=0。其原型及参数解释如表3-33和表3-34。
函数原型说明 | |
函数原型 | estop(id_num=0) |
返回值 | Bool 值,True代表运行正常;False代表出现异常。 |
3-34 多个关节运动助力函数参数解释说明
参数 | 解释 |
id_num | 一体化关节 ID 编号。如果不知道当前一体化关节 ID,可以用 0 广播,此时如果总线上有多个一体化关节,则多个一体化关节都会执行该操作。 |
四、参数回读
4.1 回读单个关节 ID 编号函数:get_id()
回读关节 ID 编号函数get_id(),读取一体化关节 DI 编号。注意使用该函数时总线上只能接 1 个一体化关节。其原型及参数解释如表4-1和表4-2。
表4-1 回读关节 ID 编号函数原型说明
函数原型说明 | |
函数原型 | get_id() |
返回值 | id:关节 ID 编号;False:出现异常。 |
表4-2 回读关节 ID 编号函数参数解释说明
参数 | 解释 |
无 |
4.2 回读多个关节 ID 编号函数:get_ids()
回读多个关节 ID 编号函数get_ids(),用于读取总线中一体化关节的 ID 编号。其原型及参数解释如表4-3和表4-4。
表4-3 回读多个关节 ID 编号函数原型说明
函数原型说明 | |
函数原型 | get_ids() |
返回值 | [ id1, id2, id3, … ]:多个关节 ID 编号组成的列表;False:出现异常。 |
表4-4 回读多个关节 ID 编号函数参数解释说明
参数 | 解释 |
无 |
4.3 回读关节当前角度函数:get_angle()
回读关节当前角度函数get_angle(),读取一体化关节当前角度,单位为度(°)。其原型及参数解释如表4-5和表4-6。
函数原型说明 | |
函数原型 | get_angle(id_num=0) |
返回值 | angle:当前关节角度(°);False:出现异常。 |
表4-6 回读关节当前角度函数参数解释说明
参数 | 解释 |
id_num | 一体化关节 ID 编号,如果不知道当前一体化关节 ID 编号,可以用 0广播。但此时如果总线上有多个一体化关节,会造成总线通信干扰,不可使用 0 广播。 |
4.4 回读关节当前转速函数:get_speed()
回读关节当前转速函数get_speed(),读取一体化关节当前转速,单位为转每分钟(r/min)。其原型及参数解释如表4-7和表4-8。
函数原型说明 | |
函数原型 | get_speed(id_num=0) |
返回值 | speed:关节当前转速(r/min);False:出现异常。 |
表4-8 回读关节当前转速函数参数解释说明
参数 | 解释 |
id_num | 一体化关节 ID 编号,如果不知道当前一体化关节 ID 编号,可以用 0广播。但此时如果总线上有多个一体化关节,会造成总线通信干扰,不可使用 0 广播。 |
4.5 同时回读关节当前角度和转速函数:get_state()
同时回读关节当前角度和转速函数get_state(),读取一体化关节当前角度和转速,单位为读(°)和转每分钟(r/min)。其原型及参数解释如表4-9和表4-10。
函数原型说明 | |
函数原型 | get_state(id_num=0) |
返回值 | [angle, speed]:关节当前角度和转速组成的列表;False:出现异常。 |
表4-10 同时回读关节当前角度和转速函数参数解释说明
参数 | 解释 |
id_num | 一体化关节 ID 编号,如果不知道当前一体化关节 ID 编号,可以用 0广播。但此时如果总线上有多个一体化关节,会造成总线通信干扰,不可使用 0 广播。 |
4.6 回读关节当前输出力矩函数:get_torque()
回读关节当前输出力矩函数get_torque(),读取一体化关节当前输出力矩,单位为牛米(Nm)。其原型及参数解释如表4-11和表4-12。
函数原型说明 | |
函数原型 | get_torque(id_num=0) |
返回值 | torque:关节当前输出力矩(Nm);False:出现异常。 |
表4-12 回读关节当前输出力矩函数参数解释说明
参数 | 解释 |
id_num | 一体化关节 ID 编号,如果不知道当前一体化关节 ID 编号,可以用 0广播。但此时如果总线上有多个一体化关节,会造成总线通信干扰,不可使用 0 广播。 |
4.7 回读总线电压和 FOC q 轴电流函数:get_vol_cur()
回读总线电压和 FOC q 轴电流函数get_vol_cur(),读取一体化关节当前电压和q轴电流,单位分别为伏(V)和安(A)。其原型及参数解释如表4-13和表4-14。
表4-13 回读总线电压和 FOC q 轴电流函数原型说明
函数原型说明 | |
函数原型 | get_vol_cur(id_num=0) |
返回值 | [vol, cur]:电压和电流列表;False:出现异常。 |
表4-14 回读总线电压和 FOC q 轴电流函数参数解释说明
参数 | 解释 |
id_num | 一体化关节 ID 编号,如果不知道当前一体化关节 ID 编号,可以用 0广播。但此时如果总线上有多个一体化关节,会造成总线通信干扰,不可使用 0 广播。 |
4.8 开启角度、转速、力矩实时反馈函数:enable_angle_speed_torque_state ()
开启角度、转速、力矩实时反馈函数enable_angle_speed_torque_state (),用于开启关节的角度、转速、力矩通过CAN总线实时反馈。其原型及参数解释如表4-15和表4-16。
函数原型说明 | |
函数原型 | enable_angle_speed_torque_state (id_num=0) |
返回值 | True:开启成功;False:出现异常。 |
表4-16 开启角度、转速、力矩实时反馈函数参数解释说明
参数 | 解释 |
id_num | 一体化关节 ID 编号,如果不知道当前一体化关节 ID 编号,可以用 0广播。但此时如果总线上有多个一体化关节,会造成总线通信干扰,不可使用 0 广播。 |
4.9 设置角度、转速、力矩反馈时间间隔函数:set_state_feedback_rate_ms()
设置角度、转速、力矩反馈时间间隔函数:set_state_feedback_rate_ms(),用于设置角度、转速、力矩反馈时间间隔,单位为ms,默认为 2ms。其原型及参数解释如表4-17和表4-18。
函数原型说明 | |
函数原型 | set_state_feedback_rate_ms (id_num=0, n_ms=2) |
返回值 | True:设置成功;False:出现异常。 |
表4-18 开启角度、转速、力矩实时反馈函数参数解释说明
参数 | 解释 |
id_num | 一体化关节 ID 编号,如果不知道当前一体化关节 ID 编号,可以用 0广播。但此时如果总线上有多个一体化关节,会造成总线通信干扰,不可使用 0 广播。 |
特别提醒:当总线中不同 ID 号关节数量为 n 时,建议将所有关节的将该值统一设置为 2n。
4.10 单个关节角度、转速、力矩实时反馈函数:angle_speed_torque_state ()
单个关节角度、转速、力矩实时反馈函数angle_speed_torque_state (),用于指定单个关节的角度(°)、转速(r/min)、力矩(Nm)通过CAN总线实时反馈。其原型及参数解释如表4-19和表4-20。
函数原型说明 | |
函数原型 | angle_speed_torque_state (id_num=1, n=1) |
返回值 | [angle, speed, torque]:关节的角度(°)、转速(r/min)、力矩(Nm)组成的列表。 |
表4-20 角度、转速、力矩实时反馈函数参数解释说明
参数 | 解释 |
id_num | 一体化关节 ID 编号,注意使用该函数时最好已经将总线中的关节设置为 1~63 号,并且没有相同 ID 号的关节。 |
n | 总线上不同 ID 号的关节数量 |
特别提醒:
1. 由于总线实时发送数据,读取的第一组数据可能出错,因此该函数连续运行第二次之后才能保证数据有效性。
2. 运行任何其他回读参数的函数前,须先运行后面的 disable_angle_speed_torque_state() 关闭实时反馈,否则由于总线实时占用有较大概率无法得到正确的数值。
3. 使用该函数时最好已经将总线中的关节设置为 1~63 号,并且没有相同 ID 号的关节。
4.11 多个关节角度、转速、力矩实时反馈函数:angle_speed_torque_states ()
多个关节角度、转速、力矩实时反馈函数angle_speed_torque_states (),用于多个关节的角度(°)、转速(r/min)、力矩(Nm)通过CAN总线实时反馈。其原型及参数解释如表4-21和表4-22。
函数原型说明 | |
函数原型 | angle_speed_torque_states (id_list=[1, 2, 3]) |
返回值 | angle_speed_torques:[angle, speed, torque] 按照 ID 号从小到大排序组成的列表。 |
表4-22 多个角度、转速、力矩实时反馈函数参数解释说明
参数 | 解释 |
id_num | 一体化关节 ID 编号组成的列表,注意使用该函数时最好已经将总线中的关节设置为 1~63 号,并且没有相同 ID 号的关节。 |
特别提醒:
1. 由于总线实时发送数据,读取的第一组数据可能出错,因此该函数连续运行第二次之后才能保证数据有效性。
2. 运行任何其他回读参数的函数前,须先运行后面的 disable_angle_speed_torque_state() 关闭实时反馈,否则由于总线实时占用有较大概率无法得到正确的数值。
3. 使用该函数时最好已经将总线中的关节设置为 1~63 号,并且没有相同 ID 号的关节。
4.12 关闭角度、转速、力矩实时反馈函数:disable_angle_speed_torque_state ()
关闭角度、转速、力矩实时反馈函数disable_angle_speed_torque_state (),用于关闭关节的角度、转速、力矩通过CAN总线实时反馈。其原型及参数解释如表4-23和表4-24。
函数原型说明 | |
函数原型 | disable_angle_speed_torque_state (id_num=0) |
返回值 | True:关闭成功;False:出现异常。 |
表4-24 关闭角度、转速、力矩实时反馈函数参数解释说明
参数 | 解释 |
id_num | 一体化关节 ID 编号,如果不知道当前一体化关节 ID 编号,可以用 0广播。但此时如果总线上有多个一体化关节,会造成总线通信干扰,不可使用 0 广播。 |
特别提醒:
1. 运行任何其他回读参数的函数前,须先运行这里的disable_angle_speed_torque_state() 关闭实时反馈,否则由于总线实时占用有较大概率无法得到正确的数值。
4.13 回读控制环位置增益 P、积分增益 I、转速增益 D 函数:get_pid()
回读控制环位置增益 P、积分增益 I 、转速增益 D函数:get_pid(),读取一体化关节控制环的位置增益 P、积分增益 I、转速增益 D。其原型及参数解释如表4-25和表4-26。
表4-25 回读控制环位置增益 P、积分增益 I、转速增益 D函数原型说明
函数原型说明 | |
函数原型 | get_pid(id_num=0) |
返回值 | [P, I, D]:PDI组成的列表;False:出现异常。 |
表4-26 回读控制环位置增益 P、积分增益 I、转速增益 D函数参数解释说明
参数 | 解释 |
id_num | 一体化关节 ID 编号,如果不知道当前一体化关节 ID 编号,可以用 0广播。但此时如果总线上有多个一体化关节,会造成总线通信干扰,不可使用 0 广播。 |
4.14 回读配置参数函数:read_property()
回读配置参数函数read_property(),读取一体化关节属性参数,这里的属性参数为一体化关节控制参数,存放于 parameter_interface.py 文件。其原型及参数解释如表4-27和表4-28。
函数原型说明 | |
函数原型 | read_property(id_num=0, property='') |
返回值 | value:返回对应属性参数的值;False:参数错误、参数读取失败、出现异常。 |
表4-28 回读配置参数函数参数解释说明
参数 | 解释 |
id_num | 一体化关节 ID 编号,如果不知道当前一体化关节 ID 编号,可以用 0广播。但此时如果总线上有多个一体化关节,会造成总线通信干扰,不可使用 0 广播。 |
property | 需要设置的属性参数名称,例如"dr.voltage","dr.config.can_id"等,具体参数名称见 parameter_interface.py 文件里 property_address 字典里的键值。 |
五、参数设置
5.1 设置当前角度为零点(断电重启后丢失)函数:set_zero_position_temp()
设置当前角度为零点(断电重启后丢失)函数:set_zero_position_temp(),设置当前角度为一体化关节输出轴零点,设置完后当前角度为 0 度。其原型及参数解释如表5-1和表5-2。(中空关节无此功能)注意该函数后不可以使用 save_config(),否则会改变原定的零点位置。
表5-1 设置当前角度为零点(断电重启后不丢失)函数原型说明
函数原型说明 | |
函数原型 | set_zero_position_temp(id_num=0) |
返回值 | Bool 值,True:设置成功;False:设置失败。 |
表5-2 设置当前角度为零点(断电重启后丢失)函数参数解释说明
参数 | 解释 |
id_num | 一体化关节 ID 编号,如果不知道当前一体化关节 ID,可以用 0 广播,此时如果总线上有多个一体化关节,则多个一体化关节都会执行该操作。 |
5.2 设置当前角度为零点(断电重启后不丢失)函数:set_zero_position()
设置当前角度为零点(断电重启后不丢失)函数:set_zero_position(),设置当前角度为一体化关节输出轴零点,设置完后当前角度为 0 度。其原型及参数解释如表5-3和表5-4。注意最好在修改其他参数前使用该函数,因该函数中包含 save_config() 函数,会将其他参数一并保存。
表5-3 设置当前角度为零点(断电重启后不丢失)函数原型说明
函数原型说明 | |
函数原型 | set_zero_position(id_num=0) |
返回值 | Bool 值,True:设置成功;False:设置失败。 |
表5-4 设置当前角度为零点(断电重启后不丢失)函数参数解释说明
参数 | 解释 |
id_num | 一体化关节 ID 编号,如果不知道当前一体化关节 ID,可以用 0 广播,此时如果总线上有多个一体化关节,则多个一体化关节都会执行该操作。 |
5.3 设置本次运行期间关节角度限位函数:set_angle_range()
设置本次运行期间关节角度限位函数set_angle_range(),设置一体化关节运行过程中的极限角度,设置成功后一体化关节的可控制的转动角度将限定在[angle_min, angle_max]范围内。关机重启后失效。其原型及参数解释如表5-5和表5-6。
函数原型说明 | |
函数原型 | set_angle_range(id_num=0, angle_min=-180, angle_max=180) |
返回值 | Bool 值,True:设置成功;False:设置失败。 |
表5-6 设置本次运行期间关节角度限位函数参数解释说明
参数 | 解释 |
id_num | 一体化关节 ID 编号,如果不知道当前一体化关节 ID,可以用 0 广播,此时如果总线上有多个一体化关节,则多个一体化关节都会执行该操作。 |
angle_min | 最小限位角度(°)。 |
angle_max | 最大限位角度(°)。 |
注:
a、使用该函数时输出轴角度必须在[angle_min, angle_max]范围内,否则将设置失败;
b、该功能只在本次开机运行过程中有效,对应地将在关节重启后失效;
c、关节本身还有一个极限角度属性,默认生效范围为[-180.5°, 180.5°],该属性不受该函数影响,且每次开机重启均有效,如需重新设置或取消该属性,请使用set_angle_range_config() 和 disable_angle_range_config(),详见对应函数说明。
5.4 关闭本次运行期间关节角度限位函数:disable_angle_range()
关闭本次运行期间的关节角度限位函数disable_angle_range(),取消本次运行期间一体化关节运行过程中的角度限位。其原型及参数解释如表5-7和表5-8。
函数原型说明 | |
函数原型 | disable_angle_range(id_num=0) |
返回值 | Bool 值,True:取消成功;False:取消失败。 |
表5-8 关闭本次运行期间的关节角度限位函数参数解释说明
参数 | 解释 |
id_num | 一体化关节 ID 编号,如果不知道当前一体化关节 ID,可以用 0 广播,此时如果总线上有多个一体化关节,则多个一体化关节都会执行该操作。 |
5.5 设置关节角度限位属性函数:set_angle_range_config()
设置关节角度限位属性函数set_angle_range_config(),设置一体化关节极限角度属性,设置成功后一体化关节的可控制的转动角度将限定在[angle_min, angle_max]范围内;如该函数执行完成后再执行 save_config() 函数则该设置将会保存,每次开机重启均默认有效;如不执行save_config()函数则该设置将在关机重启后失效。其原型及参数解释如表5-9和表5-10。
函数原型说明 | |
函数原型 | set_angle_range(id_num=0, angle_min=-180, angle_max=180) |
返回值 | Bool 值,True:设置成功;False:设置失败。 |
表5-10 设置本次运行期间关节角度限位函数参数解释说明
参数 | 解释 |
id_num | 一体化关节 ID 编号,如果不知道当前一体化关节 ID,可以用 0 广播,此时如果总线上有多个一体化关节,则多个一体化关节都会执行该操作。 |
angle_min | 最小限位角度(°)。 |
angle_max | 最大限位角度(°)。 |
注:
a、使用该函数时输出轴角度必须在[angle_min, angle_max]范围内,否则将设置失败;
b、限位范围设置成功后,再执行 save_config() 函数,则每次开机重启后均有效;
c、如需取消该属性影响,请使用 disable_angle_range_config() 函数将该属性关闭,则本次开机该属性不起作用;若随后使用 save_config() 则该属性将永久失去,如需找回该属性,则再次使用本函数即可。
5.6 关闭关节角度限位属性函数:disable_angle_range_config()
关闭关节角度限位属性函数disable_angle_range_config(),取消一体化关节角度限位属性;如该函数执行完成后再执行 save_config() 函数则该设置将会保存,每次开机重启均默认有效;如不执行save_config()函数则该设置将在关机重启后失效。其原型及参数解释如表5-11和表5-12。
函数原型说明 | |
函数原型 | disable_angle_range(id_num=0) |
返回值 | Bool 值,True:取消成功;False:取消失败。 |
表5-12 关闭关节角度限位属性函数参数解释说明
参数 | 解释 |
id_num | 一体化关节 ID 编号,如果不知道当前一体化关节 ID,可以用 0 广播,此时如果总线上有多个一体化关节,则多个一体化关节都会执行该操作。 |
5.7 设置本次运行期间转速限制函数:set_speed_limit()
设置本次运行期间转速限制函数set_speed_limit(),设置一体化关节转速限制 speed_limit (r/min),此后关节转速绝对值不超过 speed_limit。该函数执行完转速限制在本次开机运行期间有效,关机或重启后将失效。如决定永久保持转速限制 speed_limit,请紧接着使用 save_config 函数(慎用)。其原型及参数解释如表5-13和表5-14。
函数原型说明 | |
函数原型 | set_speed_limit(id_num=0, speed_limit=1) |
返回值 | Bool 值,True:设置成功;False:设置失败。 |
参数 | 解释 |
id_num | 一体化关节 ID 编号,如果不知道当前一体化关节 ID,可以用 0 广播,此时如果总线上有多个一体化关节,则多个一体化关节都会执行该操作。 |
speed_limit | 转速限制(r/min)(必须大于 0)。 |
特别提醒:
1. 若想关机重启前取消该限制,只需设置一个非常大的数值,比如令 speed_limit = 100000。
5.8 设置本次运行期间力矩限制函数:set_torque_limit()
设置本次运行期间力矩限制函数set_torque_limit(),设置一体化关节力矩限制 torque_limit (Nm),此后关节力矩绝对值不超过 torque_limit。该函数执行完力矩限制在本次开机运行期间有效,关机或重启后将失效。如决定永久保持力矩限制 torque_limit,请紧接着使用 save_config 函数(慎用)。其原型及参数解释如表5-15和表5-16。
函数原型说明 | |
函数原型 | set_torque_limit(id_num=0, torque_limit=1) |
返回值 | Bool 值,True:设置成功;False:设置失败。 |
参数 | 解释 |
id_num | 一体化关节 ID 编号,如果不知道当前一体化关节 ID,可以用 0 广播,此时如果总线上有多个一体化关节,则多个一体化关节都会执行该操作。 |
torque_limit | 力矩限制(Nm)(必须大于 0)。 |
特别提醒:
1. 若想关机重启前取消该限制,只需设置一个非常大的数值,比如令 torque_limit = 100000。
5.9 设置本次运行期间力位混合(自适应)转速函数:set_speed_adaptive()
设置本次运行期间力位混合(自适应)转速函数set_speed_adaptive(),设置一体化关节力位混合(自适应)转速限制 speed_adaptive (r/min),此后关节力位混合(自适应)转速绝对值不超过 speed_adaptive。该函数将在除 set_angle_adaptive()、set_angles_adaptive()、motion_aid()、motion_aid_multi() 之外的其他运动控制函数之后失效,关机或重启后也将失效。其原型及参数解释如表5-17和表5-18。
表5-17 设置本次运行期间力位混合(自适应)转速函数原型说明
函数原型说明 | |
函数原型 | set_speed_adaptive(id_num=0, speed_adaptive=1) |
返回值 | Bool 值,True:设置成功;False:设置失败。 |
表5-18 设置本次运行期间力位混合(自适应)转速函数参数解释说明
参数 | 解释 |
id_num | 一体化关节 ID 编号,如果不知道当前一体化关节 ID,可以用 0 广播,此时如果总线上有多个一体化关节,则多个一体化关节都会执行该操作。 |
speed_adaptive | 力位混合(自适应)转速(r/min)(必须大于 0)。 |
特别提醒:本函数需在运动指令之后运行。
5.10 设置本次运行期间力位混合(自适应)力矩函数:set_torque_adaptive()
设置本次运行期间力位混合(自适应)力矩函数set_torque_adaptive(),设置一体化关节力位混合(自适应)力矩限制 torque_adaptive (Nm),此后关节力位混合(自适应)转速绝对值不超过 torque_adaptive。该函数将在除 set_angle_adaptive()、set_angles_adaptive()、motion_aid()、motion_aid_multi() 之外的其他运动控制函数之后失效,关机或重启后也将失效。其原型及参数解释如表5-19和表5-20。
表5-19 设置本次运行期间力位混合(自适应)力矩函数原型说明
函数原型说明 | |
函数原型 | set_torque_adaptive(id_num=0, torque_adaptive=1) |
返回值 | Bool 值,True:设置成功;False:设置失败。 |
表5-20 设置本次运行期间力位混合(自适应)力矩函数参数解释说明
参数 | 解释 |
id_num | 一体化关节 ID 编号,如果不知道当前一体化关节 ID,可以用 0 广播,此时如果总线上有多个一体化关节,则多个一体化关节都会执行该操作。 |
torque_adaptive | 力位混合(自适应)力矩(Nm)(必须大于 0)。 |
特别提醒:本函数需在运动指令之后运行。
5.11 设置本次运行期间位置增益 P、积分增益 I、转速增益 D 函数:set_pid()
设置本次运行期间位置增益 P、积分增益 I、转速增益 D 函数set_pid(),设置一体化关节控制环的位置增益 PD、积分增益 I、转速增益,以便实现调整关节控制性能的目的。该函数执行完 PID 的值在本次开机运行期间有效,关机或重启后将失效。如决定永久使用某组 PID 则可在使用该函数设置 PID 后,紧接着使用 save_config 函数。其原型及参数解释如表5-21和表5-22。
表5-21 设置本次运行期间位置增益 P、转速增益 D、积分增益 I函数原型说明
函数原型说明 | |
函数原型 | set_pid(id_num=0, P=20, I=25, D=20) |
返回值 | Bool 值,True:设置成功;False:设置失败。 |
表5-22 设置本次运行期间位置增益 P、积分增益 I、转速增益 D函数参数解释说明
参数 | 解释 |
id_num | 一体化关节 ID 编号,如果不知道当前一体化关节 ID,可以用 0 广播,此时如果总线上有多个一体化关节,则多个一体化关节都会执行该操作。 |
5.12 设置关节待机或闭环控制函数:set_mode()
设置关节模式函数set_mode(),设置一体化关节进入不同的控制模式。其原型及参数解释如表5-23和表5-24。
函数原型说明 | |
函数原型 | set_mode(id_num=0, mode=2) |
返回值 | Bool 值,True:设置成功;False:设置失败。 |
表5-24 设置关节模式函数参数解释说明
参数 | 解释 |
id_num | 一体化关节 ID 编号,如果不知道当前一体化关节 ID,可以用 0 广播,此时如果总线上有多个一体化关节,则多个一体化关节都会执行该操作。 |
mode | 一体化关节模式编号, mode=1:待机模式,一体化关节卸载;mode=2:闭环控制模式,运动控制函数必须在闭环控制模式下才能进行控制。(一体化关节上电后的默认模式) |
5.13 设置 CAN 通信波特率函数:set_can_baud_rate()
设置 CAN 通信波特率函数set_can_baud_rate(),设置 CAN 波特率;该函数执行后不会在本次开机生效,需接着执行 save_config() 函数将配置保存,再重新开机后生效。其原型及参数解释如表5-25和表5-26。
表5-25 设置 CAN 通信波特率函数原型说明
函数原型说明 | |
函数原型 | set_can_baud_rate(id_num=0, baud_rate=500000) |
返回值 | Bool 值,True:设置成功;False:设置失败。 |
表5-26 设置 CAN 通信波特率函数参数解释说明
参数 | 解释 |
id_num | 一体化关节 ID 编号,如果不知道当前一体化关节 ID,可以用 0 广播,此时如果总线上有多个一体化关节,则多个一体化关节都会执行该操作。 |
baud_rate | CAN 波特率,支持 125k、250k、500k、1M 中任意一种,修改成功后需手动将上位机 CAN 波特率也修改为相同值。 |
5.14 写入关节配置参数函数:write_property()
写入关节配置参数函数write_property(),修改一体化关节属性参数,这里的属性参数为一体化关节控制参数,存放于 parameter_interface.py 文件。其原型及参数解释如表5-27和表5-28。
函数原型说明 | |
函数原型 | write_property(id_num=0, property='', value=0) |
返回值 | Bool 值,True:设置成功;False:设置失败。 |
表5-28 写入关节配置参数函数参数解释说明
参数 | 解释 |
id_num | 一体化关节 ID 编号,如果不知道当前一体化关节 ID,可以用 0 广播,此时如果总线上有多个一体化关节,则多个一体化关节都会执行该操作。 |
property | 需要设置的属性参数名称,例如"dr.voltage","dr.config.can_id"等,具体参数名称见 parameter_interface.py 文件里 property_address 字典里的键值。 |
value | 对应参数的目标值。 |
5.15 保存关节配置参数函数:save_config()
保存关节配置参数函数 save_config(),保存一体化关节属性参数,这里的属性参数存放于 parameter_interface.py 文件。一般通过 write_property 函数修改的属性一体化关节关机或重启之后,会恢复为修改前的值;如果想永久保存,需要用 save_config 函数将相关参数保存到 flash 中,关机或重启后不丢失。其原型及参数解释如表5-29和表5-30。 save_config() 函数是将所有参数整体一次性保存,所以只需将所有目标参数全部修改后再执行一次 save_config() 函数,便可将所有参数保存。
函数原型说明 | |
函数原型 | save_config(id_num=0) |
返回值 | Bool 值,True:设置成功;False:设置失败。 |
表5-30 保存关节配置参数函数参数解释说明
参数 | 解释 |
id_num | 一体化关节 ID 编号,如果不知道当前一体化关节 ID,可以用 0 广播,此时如果总线上有多个一体化关节,则多个一体化关节都会执行该操作。 |
六. 辅助功能
6.1 重启关节函数:reboot()
重启关节函数:reboot(),设置一体化关节软件重启,效果与重新上电类似。其原型及参数解释如表6-1和表6-2。
函数原型说明 | |
函数原型 | reboot(id_num=0) |
返回值 | Bool 值,True:开始重启;False:重启失败。 |
表6-2 重启关节函数参数解释说明
参数 | 解释 |
id_num | 一体化关节 ID 编号,如果不知道当前一体化关节 ID 编号,可以用 0广播,此时如果总线上有多个一体化关节,则多个一体化关节都会执行该操作。 |
6.2 恢复出厂设置函数:init_config()
恢复出厂设置函数init_config(),恢复出厂时的参数配置,不改变用户配置的 ID 号。其原型及参数解释如表6-3和表6-4。
函数原型说明 | |
函数原型 | init_config(id_num=0) |
返回值 | Bool 值,True:恢复出厂设置成功;False:恢复出厂设置失败。 |
表6-4 恢复出厂设置函数参数解释说明
参数 | 解释 |
id_num | 一体化关节 ID 编号,如果不知道当前一体化关节 ID 编号,可以用 0广播,此时如果总线上有多个一体化关节,则多个一体化关节都会执行该操作。 |
6.3 格式化函数:erase_config()
格式化函数erase_config(),用于擦除参数配置(慎用)。该函数执行过程中会将关节重新标定并恢复出厂设置,因此执行该函数时请勿将关节挂载。其原型及参数解释如表6-5和表6-6。
函数原型说明 | |
函数原型 | erase_config(id_num=0) |
返回值 | Bool 值,True:擦除配置成功;False:擦除配置失败。 |
表6-6 格式化函数参数解释说明
参数 | 解释 |
id_num | 一体化关节 ID 编号,如果不知道当前一体化关节 ID 编号,可以用 0广播,此时如果总线上有多个一体化关节,则多个一体化关节都会执行该操作。 |
特别提醒:
1. 该函数执行后用户设置的 ID 号变为 0 号。
2. 该函数执行后有时关节会进入死机状态,此时误慌,请将关节断电重启,关节会继续执行该函数内容,一次不行请断电重启两次,一般不必断电重启第三次。
3. 若多次重启后依然会进入死机状态,则重新执行该函数并视情况多次重复上述操作,一般两到三次循坏便可恢复正常。
附录、关节开放参数表
注,对于以下参数:
a、读写列1表示可读可写,0表示只读;
b、名称中带 config 的参数均可由 save_config() 函数保存并在重启后依然有效;
c、使用 read_property() 函数读取;
d、使用 write_property() 函数改写。
序号 | 含义 | 名称 | 单位 | 键码 | 读写 | 备注 |
1 | 电压 | dr.voltage | V | 1 | 0 | |
2 | 电流 | dr.i | A | 2 | 0 | |
3 | CAN总线波特率 | dr.can.config.baud_rate | bit/s | 21001 | 1 | |
4 | 是否开启CAN实时状态反馈 | dr.can.config.enable_state_feedback | 22001 | 1 | 1表示开启,0表示不开启 | |
5 | CAN 总线 ID 号 | dr.config.can_id | 31001 | 1 | 取值范围:1~63 | |
6 | CAN总线实时状态反馈时间间隔 | dr.config.state_feedback_rate_ms | ms | 31002 | 1 | 比如设置3ms,则每隔3ms反馈一次状态 |
7 | 关节型号 | dr.config.product_model | 31003 | 0 | 参照手册中的关节型号代码 | |
8 | 是否开启角度限制属性 | dr.config.enable_angle_limit | 31201 | 1 | 1表示开启,0表示不开启 | |
9 | 最小角度限位 | dr.config.angle_min | ° | 31202 | 1 | |
10 | 最大角度限位 | dr.config.angle_max | ° | 31203 | 1 | |
11 | 减速比 | dr.config.gear_ratio | 31204 | 0 | ||
12 | 堵转电流 | dr.config.stall_current_limit | A | 31205 | 1 | |
13 | 是否开启碰撞检测 | dr.config.enable_crash_detect | 31206 | 1 | ||
14 | 碰撞检测灵敏度 | dr.config.crash_detect_sensitivity | 31207 | 1 | 该值需大于 0,越小越灵敏 | |
15 | 是否开启多圈计数角度限制 | dr.config.enable_encoder_circular_limit | 31208 | 1 | 超出该限制关节将无法记住重启前的角度,需重新设置零点。若关闭该限制则务必将编码器供电线拔掉,即默认系统不需要关机后零点位置。 该参数只针对具有多圈计数功能关节有效。 | |
16 | 是否运动到指定位置 | dr.controller.position_done | 32002 | 0 | 为1表示到达指定位置,为0则未到达 | |
17 | 是否启用转速限制 | dr.controller.config.enable_speed_limit | 32101 | 1 | 1表示启用,0表示不启用 | |
18 | 位置增益P | dr.controller.config.angle_gain | 32102 | 1 | ||
19 | 转速增益D | dr.controller.config.speed_gain | 32103 | 1 | ||
20 | 积分增益I | dr.controller.config.speed_integrator_gain | 32104 | 1 | ||
21 | 最大限制转速 | dr.controller.config.speed_limit | r/min | 32105 | 1 | 该限制值对象是电机,输出端需除以减速比 |
22 | 超速容忍度 | dr.controller.config.speed_limit_tolerance | % | 32106 | 1 | 比如设为1.2则超出20%后才会报错 |
23 | 负载转动惯量 | dr.controller.config.inertia | 32107 | 1 | 默认为0 | |
24 | 输入滤波带宽 | dr.controller.config.input_filter_bandwidth | 32108 | 1 | ||
25 | 电机极对数 | dr.motor.config.pole_pairs | 33101 | 0 | ||
26 | 电机相电感 | dr.motor.config.phase_inductance | 33102 | 0 | ||
27 | 电机相电阻 | dr.motor.config.phase_resistance | 33103 | 0 | ||
28 | 电机力矩常数 | dr.motor.config.torque_constant | 33104 | 0 | ||
29 | 最大限制电流 | dr.motor.config.current_limit | 33105 | 1 | ||
30 | 过流容忍度 | dr.motor.config.current_limit_margin | A | 33106 | 1 | 比如设为1.2则超出1.2A后才会报错 |
31 | 最大限制力矩 | dr.motor.config.torque_limit | Nm | 33107 | 1 | 该限制值对象是电机,输出端需乘以减速比 |
32 | 电流控制带宽 | dr.motor.config.current_control_bandwidth | 33108 | 1 | ||
33 | FOC Q轴电流 | dr.motor.Iq_measured | A | 33201 | 0 | |
34 | FOC D轴电流 | dr.motor.Id_measured | A | 33202 | 0 | |
35 | 设置零点后输出轴编码器零位值 | dr.encoder.pos_zero_output | 34101 | 0 | 中空关节专属 | |
36 | 刚启动时读取到的输出轴编码器值 | dr.encoder.abs_pos_power_on | 34102 | 0 | 中空关节专属 | |
37 | 绝对位置误差的前半个周期长度 | dr.encoder.first_half_T | 34103 | 1 | 中空关节专属,标定后误差补偿使用 | |
38 | 绝对位置误差的前半个周期幅值 | dr.encoder.first_half_M | 34104 | 1 | 中空关节专属,标定后误差补偿使用 | |
39 | 绝对位置误差的后半个周期幅值 | dr.encoder.second_half_M | 34105 | 1 | 中空关节专属,标定后误差补偿使用 | |
40 | 绝对位置误差截距 | dr.encoder.intercept | 34106 | 1 | 中空关节专属,标定后误差补偿使用 | |
41 | 绝对位置误差前半个周期幅值是否向上 | dr.encoder.first_half_up | 34107 | 1 | 中空关节专属,标定后误差补偿使用 | |
42 | 驱动板温度 | dr.board_temperature | ℃ | 36002 | 0 | |
43 | 是否开启驱动板温度保护 | dr.board_temperature.config.enabled | 36101 | 1 | ||
44 | 驱动板温度保护下限 | dr.board_temperature.config.temp_limit_lower | ℃ | 36102 | 1 | |
45 | 驱动板温度保护上限 | dr.board_temperature.config.temp_limit_upper | ℃ | 36103 | 1 | |
46 | 电机温度 | dr.motor_temperature | ℃ | 37002 | 0 | |
47 | 是否开启电机温度保护 | dr.motor_temperature.config.enabled | 37101 | 1 | ||
48 | 电机温度保护下限 | dr.motor_temperature.config.temp_limit_lower | ℃ | 37102 | 1 | |
49 | 电机温度保护上限 | dr.motor_temperature.config.temp_limit_upper | ℃ | 37103 | 1 | |
50 | 输出轴角度 | dr.output_shaft.angle | ° | 38001 | 0 | |
51 | 输出轴转速 | dr.output_shaft.speed | r/min | 38002 | 0 | |
52 | 输出轴力矩 | dr.output_shaft.torque | Nm | 38003 | 0 | |
53 | 输出轴最小临时角度限位 | dr.output_shaft.angle_min | ° | 38004 | 1 | |
54 | 输出轴最大临时角度限位 | dr.output_shaft.angle_max | ° | 38005 | 1 | |
55 | 是否开启临时角度限位 | dr.output_shaft.enable_angle_limit | 38006 | 1 |