玩转运动智能:DrEmpower 智能一体化关节 Python 库函数详解

目录

一、简介

二、设置关节 ID 编号

三、运动控制

3.1 单个关节绝对角度控制函数:set_angle()

3.2 多个关节绝对角度控制函数:set_angles()

3.3 单个关节相对角度控制函数:step_angle()

3.4 多个关节相对角度控制函数:step_angles()

3.5 单个关节力位混合(自适应)绝对角度控制函数:set_angle_adaptive()

3.6 多个关节力位混合(自适应)绝对角度控制函数:set_angles_adaptive()

3.7 单个关节阻抗控制函数:impedance_control()

3.8 多个关节阻抗控制函数:impedance_control_multi()

3.9 单个关节运动助力函数:motion_aid()

3.10 多个关节运动助力函数:motion_aid_multi()

3.11 检查并等待单个关节转动到目标角度函数:position_done()

3.12 检查并等待多个关节转动到目标角度函数:positions_done()

3.13 单个关节转速控制函数:set_speed()

3.14 多个关节转速控制函数:set_speeds()

3.15 单个关节力矩控制函数:set_torque()

3.16 多个关节力矩控制函数:set_torques()

3.17 急停函数:estop ()

四、参数回读

4.1 回读单个关节 ID 编号函数:get_id()

4.2 回读多个关节 ID 编号函数:get_ids()

4.3 回读关节当前角度函数:get_angle()

4.4 回读关节当前转速函数:get_speed()

4.5 同时回读关节当前角度和转速函数:get_state()

4.6 回读关节当前输出力矩函数:get_torque()

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()

4.14 回读配置参数函数:read_property()

五、参数设置

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.12 设置关节待机或闭环控制函数:set_mode()

5.13 设置 CAN 通信波特率函数:set_can_baud_rate()

5.14 写入关节配置参数函数:write_property()

5.15 保存关节配置参数函数:save_config()

六. 辅助功能

6.1 重启关节函数:reboot()

6.2 恢复出厂设置函数:init_config()

6.3 格式化函数:erase_config()

附录、关节开放参数表


一、简介

        DrEmpower 智能一体化关节作为一款智能驱动器,不仅满足运动学控制的各项需求,同时也可满足动力学控制实践,使得用其开发的机器人产品更加贴近应用水平。

        关节产品包括谐波减速器系列(HSA)、行星减速器系列(PDA)、中空系列(HCA)。具备运动智能特点,具备四大技能,包括运动控制、参数回读、参数设置和自主决策。

        运动控制方面,除角度、转速、力矩控制外,还可进行运动助力控制、力位混合(自适应)控制、阻抗控制、急停控制。更多控制请见后续详情;

        参数回读方面,可实时回读角度、转速、力矩。回读控制相关参数,如PID等。回读环境参数,如温度。更多参数请见后续详情;

        参数设置方面,控制环中所有参数均可设置,也包括一些功能的使能设置。更多参数请见后续详情;

        自主决策方面,包括碰撞感知、堵转/过流/温度保护、角度/转速/力矩限制等;

        玩转运动智能 DrEmpower QQ 交流群:964592447

        淘宝链接:

        MIT机器人关节 多圈计数 碰撞检测 力位混合 阻抗控制 运动助力-淘宝网 (taobao.com)

二、设置关节 ID 编号

        设置关节 ID 编号函数set_id(),改变一体化关节 ID 编号(一次设定,关机后依然保存)。其原型及参数解释如2-12-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-13-2所示。

表3-1 单个关节角度控制函数原型说明

函数原型说明

函数原型

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:前馈力矩 torqueNm)。

mode

角度控制模,一体化关节支持三种角度控制模式,由 mode 取值决定,

mode = 0:轨迹跟踪模式,适合多个轨迹点输入后进行平滑控制,角度输入滤波带宽参数需设置为指令发送频率的一半;

mode = 1:梯形轨迹模式,这种模式下可以指定运动过程中的目标转速和启停加转速;

mode = 2:前馈控制模式,这种模式下的 speed torque 分别为前馈控制量。前馈控制在原有PID控制基础上加入转速和力矩前馈,提高系统的响应特性和减少静态误差。

        注:在 mode=1 梯形轨迹模式中,speed accel 都要大于 0mode=0 speed 不起作用。

3.2 多个关节绝对角度控制函数:set_angles()

        多个关节绝对角度控制函数:set_angles(),用于控制多个编号的一体化关节按照一定转速转动到指定的角度。其原型及参数解释如3-33-4

表3-3 多个关节绝对角度控制函数原型说明

函数原型说明

函数原型

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:前馈控制模式,这种模式下的speedtorque分别为前馈控制量。前馈控制在原有PID控制基础上加入转速和力矩前馈,提高系统的响应特性和减少静态误差。

3.3 单个关节相对角度控制函数:step_angle()

        单个关节相对角度控制函数step_angle(),控制指定编号的一体化关节按照指定的转速相对转动指定的角度(相对角度,相对于发送该指令时的角度)。其原型及参数解释如3-53-6

表3-5 单个关节相对角度控制函数原型说明

函数原型说明

函数原型

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,前馈力矩 torqueNm)。

mode

角度控制模,一体化关节支持三种角度控制模式,由 mode 取值决定,

mode=0:轨迹跟踪模式,适合多个轨迹点输入后进行平滑控制,角度输入滤波带宽参数需设置为指令发送频率的一半;

mode=1:梯形轨迹模式,这种模式下可以指定运动过程中的目标转速和启停加转速;

mode=2:前馈控制模式,这种模式下的speedtorque分别为前馈控制量,前馈控制在原有PID控制基础上加入转速和力矩前馈,提高系统的响应特性和减少静态误差。

3.4 多个关节相对角度控制函数:step_angles()

        多个关节相对角度控制函数step_angles(),控制多个一体化关节按照指定的时间先对转动给定角度。其原型及参数解释如3-73-8

表3-7 单个关节相对角度控制函数原型说明

函数原型说明

函数原型

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,前馈力矩 torqueNm)。

mode

角度控制模,一体化关节支持三种角度控制模式,由 mode 取值决定,

mode=0:轨迹跟踪模式,适合多个轨迹点输入后进行平滑控制,角度输入滤波带宽参数需设置为指令发送频率的一半;

mode=1:梯形轨迹模式,这种模式下可以指定运动过程中的目标转速和启停加转速;

mode=2:前馈控制模式,这种模式下的speedtorque分别为前馈控制量,前馈控制在原有PID控制基础上加入转速和力矩前馈,提高系统的响应特性和减少静态误差。

3.5 单个关节力位混合(自适应)绝对角度控制函数:set_angle_adaptive()

        单个关节力位混合(自适应)绝对角度控制函数set_angle_adaptive(),控制指定 ID 编号的一体化关节按照限定的转速和力矩转动到指定的角度(绝对角度,相对于用户设定的零点角度)。注:当设置的转速相对于力矩过大,或力矩相对于转速过小,则关节无法在短时间内提供足够的加速度使得转速将为 0,此时若关节未遇阻力会出现在目标角度过冲现象,此为物理规律,暂时没有好的解决办法。其原型及参数解释如3-93-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-113-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-133-14

表3-13 单个关节阻抗控制函数原型说明

函数原型说明

函数原型

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-153-16

表3-15 多个关节阻抗控制函数原型说明

函数原型说明

函数原型

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-173-18

表3-17 单个关节运动助力函数原型说明

函数原型说明

函数原型

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-193-20

表3-19 多个关节运动助力函数原型说明

函数原型说明

函数原型

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-213-22

表3-21 检查并等待单个关节转动到目标角度函数原型说明

函数原型说明

函数原型

position_done(id_num=0)

返回值

True代表转动到指定角度;None代表尚未到达指定角度。

表3-22 检查并等待单个关节转动到目标角度函数参数解释说明

参数

解释

id_num

一体化关节 ID 编号,如果不知道当前一体化关节 ID,可以用 0 广播,此时如果总线上有多个一体化关节,则多个一体化关节都会执行该操作。

3.12 检查并等待多个关节转动到目标角度函数:positions_done()

        检查并等待多个个关节转动到目标角度函数positions_done(),检查并等待单个一体化关节是否转动到指定角度。其原型及参数解释如3-233-24

表3-23 检查并等待多个个关节转动到目标角度函数原型说明

函数原型说明

函数原型

positions_done(id_list=[1, 2, 3])

返回值

True代表全部转动到指定角度;None代表尚未全部到达指定角度。

表3-24 检查并等待多个个关节转动到目标角度函数参数解释说明

参数

解释

id_list

一体化关节 ID 编号组成的列表。

3.13 单个关节转速控制函数:set_speed()

        单个关节转速控制函数set_speed(),控制指定 ID 编号的一体化关节按照指定的转速连续整周转动(转动到关节支持的极限角度后自动停止)。其原型及参数解释如3-253-26

表3-25 单个关节转速控制函数原型说明

函数原型说明

函数原型

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-273-28

表3-27 多个关节转速控制函数原型说明

函数原型说明

函数原型

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-293-30

表3-29 单个关节力矩控制函数原型说明

函数原型说明

函数原型

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-313-32

表3-31 多个关节力矩控制函数原型说明

函数原型说明

函数原型

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-333-34

3-33 多个关节运动助力函数原型说明

函数原型说明

函数原型

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-34-4

表4-3 回读多个关节 ID 编号函数原型说明

函数原型说明

函数原型

get_ids()

返回值

[ id1, id2, id3, … ]:多个关节 ID 编号组成的列表;False:出现异常。

表4-4 回读多个关节 ID 编号函数参数解释说明

参数

解释

4.3 回读关节当前角度函数:get_angle()

      回读关节当前角度函数get_angle(),读取一体化关节当前角度,单位为度(°)。其原型及参数解释如4-54-6

表4-5 回读关节当前角度函数原型说明

函数原型说明

函数原型

get_angle(id_num=0)

返回值

angle:当前关节角度(°);False:出现异常。

表4-6 回读关节当前角度函数参数解释说明

参数

解释

id_num

一体化关节 ID 编号,如果不知道当前一体化关节 ID 编号,可以用 0广播。但此时如果总线上有多个一体化关节,会造成总线通信干扰,不可使用 0 广播。

4.4 回读关节当前转速函数:get_speed()

        回读关节当前转速函数get_speed(),读取一体化关节当前转速,单位为转每分钟(r/min)。其原型及参数解释如4-74-8

表4-7 回读关节当前转速函数原型说明

函数原型说明

函数原型

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-94-10

表4-9 同时回读关节当前角度和转速函数原型说明

函数原型说明

函数原型

get_state(id_num=0)

返回值

[angle, speed]:关节当前角度和转速组成的列表;False:出现异常。

表4-10 同时回读关节当前角度和转速函数参数解释说明

参数

解释

id_num

一体化关节 ID 编号,如果不知道当前一体化关节 ID 编号,可以用 0广播。但此时如果总线上有多个一体化关节,会造成总线通信干扰,不可使用 0 广播。

4.6 回读关节当前输出力矩函数:get_torque()

        回读关节当前输出力矩函数get_torque(),读取一体化关节当前输出力矩,单位为牛米(Nm)。其原型及参数解释如4-114-12

表4-11 回读关节当前输出力矩函数原型说明

函数原型说明

函数原型

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-134-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-154-16

表4-15 开启角度、转速、力矩实时反馈函数原型说明

函数原型说明

函数原型

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-174-18

表4-17 开启角度、转速、力矩实时反馈函数原型说明

函数原型说明

函数原型

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-194-20

表4-19 角度、转速、力矩实时反馈函数原型说明

函数原型说明

函数原型

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-214-22

表4-21 多个关节角度、转速、力矩实时反馈函数原型说明

函数原型说明

函数原型

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-234-24

表4-23 关闭角度、转速、力矩实时反馈函数原型说明

函数原型说明

函数原型

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-254-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-274-28

表4-27 回读配置参数函数原型说明

函数原型说明

函数原型

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-15-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-35-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-55-6

表5-5 设置本次运行期间关节角度限位函数原型说明

函数原型说明

函数原型

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-75-8

表5-7 关闭本次运行期间的关节角度限位函数原型说明

函数原型说明

函数原型

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-95-10

表5-9 设置本次运行期间关节角度限位函数原型说明

函数原型说明

函数原型

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-115-12

表5-11 关闭关节角度限位属性函数原型说明

函数原型说明

函数原型

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-135-14

表5-13 设置本次运行期间转速限制函数原型说明

函数原型说明

函数原型

set_speed_limit(id_num=0, speed_limit=1)

返回值

Bool 值,True:设置成功;False:设置失败。

表5-14 设置本次运行期间转速限制函数参数解释说明

参数

解释

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-155-16

表5-15 设置本次运行期间力矩限制函数原型说明

函数原型说明

函数原型

set_torque_limit(id_num=0, torque_limit=1)

返回值

Bool 值,True:设置成功;False:设置失败。

表5-16  设置本次运行期间力矩限制函数参数解释说明

参数

解释

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-175-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-195-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-215-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-235-24

表5-23 设置关节模式函数原型说明

函数原型说明

函数原型

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-255-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 波特率,支持 125k250k500k1M 中任意一种,修改成功后需手动将上位机 CAN 波特率也修改为相同值。

5.14 写入关节配置参数函数:write_property()

        写入关节配置参数函数write_property(),修改一体化关节属性参数,这里的属性参数为一体化关节控制参数,存放于 parameter_interface.py 文件。其原型及参数解释如5-275-28

表5-27 写入关节配置参数函数原型说明

函数原型说明

函数原型

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-295-30 save_config() 函数是将所有参数整体一次性保存,所以只需将所有目标参数全部修改后再执行一次 save_config() 函数,便可将所有参数保存。

表5-29 保存关节配置参数函数原型说明

函数原型说明

函数原型

save_config(id_num=0)

返回值

Bool 值,True:设置成功;False:设置失败。

表5-30 保存关节配置参数函数参数解释说明

参数

解释

id_num

一体化关节 ID 编号,如果不知道当前一体化关节 ID,可以用 0 广播,此时如果总线上有多个一体化关节,则多个一体化关节都会执行该操作。

六. 辅助功能

6.1 重启关节函数:reboot()

        重启关节函数:reboot(),设置一体化关节软件重启,效果与重新上电类似。其原型及参数解释如6-16-2

表6-1 重启关节函数原型说明

函数原型说明

函数原型

reboot(id_num=0)

返回值

Bool 值,True:开始重启;False:重启失败。

表6-2 重启关节函数参数解释说明

参数

解释

id_num

一体化关节 ID 编号,如果不知道当前一体化关节 ID 编号,可以用 0广播,此时如果总线上有多个一体化关节,则多个一体化关节都会执行该操作。

6.2 恢复出厂设置函数:init_config()

      恢复出厂设置函数init_config(),恢复出厂时的参数配置,不改变用户配置的 ID 号。其原型及参数解释如6-36-4

表6-3 恢复出厂设置函数原型说明

函数原型说明

函数原型

init_config(id_num=0)

返回值

Bool 值,True:恢复出厂设置成功;False:恢复出厂设置失败。

表6-4 恢复出厂设置函数参数解释说明

参数

解释

id_num

一体化关节 ID 编号,如果不知道当前一体化关节 ID 编号,可以用 0广播,此时如果总线上有多个一体化关节,则多个一体化关节都会执行该操作。

6.3 格式化函数:erase_config()

       格式化函数erase_config(),用于擦除参数配置(慎用)。该函数执行过程中会将关节重新标定并恢复出厂设置,因此执行该函数时请勿将关节挂载。其原型及参数解释如6-56-6

表6-5 格式化函数原型说明

函数原型说明

函数原型

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值