BitbotEncos
Bitbot Encos is a bitbot instance for encos motor.
载入中...
搜索中...
未找到
bitbot::EncosJoint类 参考

Encos电机类,继承自Encos_CANBusDevice, 用户可以使用该类来管理电机设备。 更多...

#include <Encos_joint.h>

类 bitbot::EncosJoint 继承关系图:
bitbot::EncosJoint 的协作图:

Public 成员函数

 EncosJoint (const pugi::xml_node &joint_node)
 构造函数
 
virtual ~EncosJoint ()
 析构函数
 
bool isEnable ()
 查询电机是否使能
 
bool isPowerOn ()
 查询电机是否上电。
 
void SetMode (EncosJointMode mode)
 设置电机的工作模式
 
EncosJointMode GetMode ()
 获取电机当前的工作模式
 
float GetActualPosition ()
 获取电机的实际位置
 
float GetActualVelocity ()
 获取电机的实际速度
 
float GetActualCurrent ()
 获取电机的实际电流
 
float GetActualTorque ()
 获取电机的实际力矩
 
float GetMotionKp ()
 获取电机运动模式下的位置环比例系数
 
float GetMotionKd ()
 获取电机运动模式下的位置环微分系数
 
std::tuple< float, float > GetMotorTemperature ()
 获取电机的温度
 
float GetTargetPosition ()
 获取电机的目标位置
 
float GetTargetVelocity ()
 获取电机的目标速度
 
float GetTargetTorque ()
 获取电机的目标力矩
 
float GetTargetCurrent ()
 获取电机的目标电流
 
void SetMotionKp (float Kp)
 设置电机运动模式下的位置环比例系数
 
void SetMotionKd (float Kd)
 设置电机运动模式下的位置环微分系数
 
void SetTargetPosition (float position, float move_velocity=0, float current_limit=0)
 设置电机的目标位置,该指令可以在位置模式和运动模式下使用。
 
void SetTargetVelocity (float velocity, float current_limit=0)
 设置电机的目标速度,该指令可以在速度模式和运动模式下使用。
 
void SetTargetTorque (float torque)
 设置电机的目标力矩,该指令可以在力矩模式和运动模式下使用。
 
void SetTargetCurrent (float current)
 设置电机目标电流,该指令可以在任何模式下使用。
 
void SetTargetMotion (float Position, float Velocity=0, float Torque=0)
 设置电机目标运动,该指令仅在运动模式下使用。
 
void ResetMotorPosition ()
 设置电机当前位置为零位
 
- Public 成员函数 继承自 bitbot::Encos_CANBusDevice
 Encos_CANBusDevice (const pugi::xml_node &device_node)
 构造函数
 
virtual ~Encos_CANBusDevice ()=default
 析构函数
 
- Public 成员函数 继承自 bitbot::EncosDevice
 EncosDevice (const pugi::xml_node &device_node)
 构造函数
 

友元

class EncosBus
 

额外继承的成员函数

- Protected 成员函数 继承自 bitbot::Encos_CANBusDevice
virtual constexpr bool VirtualBusDevice () const final override
 判断设备是否为虚拟总线设备,虚拟总线设备是指未实际挂载在EtherCAT总线上,但也需要进行数据交换的设备。
 

详细描述

Encos电机类,继承自Encos_CANBusDevice, 用户可以使用该类来管理电机设备。

Encos电机类,继承自Encos_CANBusDevice, 用户可以使用该类来管理电机设备。 该类提供了电机的基本操作,包括上电,下电,设置目标位置,速度,力矩,设置零位等。 该类还提供了电机的运行时数据,包括电机的当前转速,目标转速,当前转角,目标转角,当前电流,目标电流等。 Encos电机有多种工作模式,包括位置模式,速度模式,力矩模式和运动模式。

  • 位置模式:用于控制电机绝对位置,电机会以指定速度到达指定位置,并尽最大可能保持在该位置。推荐用户在需要电机保持绝对位置时使用。
  • 速度模式: 用于控制电机的速度,电机会以指定速度运动,并尽最大可能保持在该速度。推荐用户在需要电机保持绝对速度时使用。
  • 力矩模式: 用于控制电机的力矩,电会以指定力矩运动,并尽最大可能保持在该力矩。推荐用户在需要电机保持绝对力矩时使用。
  • 运动模式: 用于控制电机的运动,电机会综合考虑用户的指定位置,速度,前馈力矩,反馈PD等参数,结合内部位置速度环,电流环, 使电机以相对平滑的方式到达用户指定的位置和速度。推荐用户在电机高动态运动的场景下使用。该模式下电机内部PD环为20kHz。

构造及析构函数说明

◆ EncosJoint()

bitbot::EncosJoint::EncosJoint ( const pugi::xml_node & joint_node)

构造函数

构造函数,用户无需关心该函数的实现,该函数由Bitbot Encos内核创建。

参数
joint_node电机节点的配置文件

成员函数说明

◆ GetActualCurrent()

float bitbot::EncosJoint::GetActualCurrent ( )

获取电机的实际电流

返回
float 电机的实际电流,单位为安培(A)

◆ GetActualPosition()

float bitbot::EncosJoint::GetActualPosition ( )

获取电机的实际位置

返回
float 电机的实际位置,单位为弧度(rad)

◆ GetActualTorque()

float bitbot::EncosJoint::GetActualTorque ( )

获取电机的实际力矩

返回
float 电机的实际力矩,单位为牛米(Nm)

◆ GetActualVelocity()

float bitbot::EncosJoint::GetActualVelocity ( )

获取电机的实际速度

返回
float 电机的实际速度,单位为弧度/秒(rad/s)

◆ GetMode()

EncosJointMode bitbot::EncosJoint::GetMode ( )

获取电机当前的工作模式

获取电机当前的工作模式。电机的工作模式包括位置模式,速度模式,力矩模式和运动模式。

返回
EncosJointMode 电机当前的工作模式

◆ GetMotionKd()

float bitbot::EncosJoint::GetMotionKd ( )

获取电机运动模式下的位置环微分系数

返回
float 电机运动模式下的位置环微分系数

◆ GetMotionKp()

float bitbot::EncosJoint::GetMotionKp ( )

获取电机运动模式下的位置环比例系数

返回
float 电机运动模式下的位置环比例系数

◆ GetMotorTemperature()

std::tuple< float, float > bitbot::EncosJoint::GetMotorTemperature ( )

获取电机的温度

返回
std::tuple<float, float> 电机温度和驱动器温度,单位为摄氏度(°C)

◆ GetTargetCurrent()

float bitbot::EncosJoint::GetTargetCurrent ( )

获取电机的目标电流

返回
float 电机的目标电流,单位为安培(A)

◆ GetTargetPosition()

float bitbot::EncosJoint::GetTargetPosition ( )

获取电机的目标位置

返回
float 电机的目标位置,单位为弧度(rad)

◆ GetTargetTorque()

float bitbot::EncosJoint::GetTargetTorque ( )

获取电机的目标力矩

返回
float 电机的目标力矩,单位为牛米(Nm)

◆ GetTargetVelocity()

float bitbot::EncosJoint::GetTargetVelocity ( )

获取电机的目标速度

返回
float 电机的目标速度,单位为弧度/秒(rad/s)

◆ isEnable()

bool bitbot::EncosJoint::isEnable ( )

查询电机是否使能

查询电机是否使能。电机使能后才能上电,未使能的电机无法上电但可以读取 电机的运行时数据。电机的使能状态由用户在配置文件中指定。

返回
true 使能
false 未使能

◆ isPowerOn()

bool bitbot::EncosJoint::isPowerOn ( )

查询电机是否上电。

查询电机是否上电。电机上电后才能运动,未上电的电机无法运动。但可以读取 电机的运行时数据。电机的上电状态由内核和总线管理器控制。

返回
true
false

◆ ResetMotorPosition()

void bitbot::EncosJoint::ResetMotorPosition ( )

设置电机当前位置为零位

设置电机当前位置为零位,该指令会将电机的当前位置设置为零位。 电机设置零位后会有约500ms的延迟,电机会在此期间停止运动,也会使得电机获取出现停滞。 出于安全考虑,该指令设置后将使得电机的目标位置,目标速度和目标力矩均为0。用户在设置零位后需要重新设置目标位置,速度和力矩。

◆ SetMode()

void bitbot::EncosJoint::SetMode ( EncosJointMode mode)

设置电机的工作模式

设置电机的工作模式。电机的默认工作模式由用户在配置文件中指定。 用户也可以在程序中动态修改电机的工作模式。电机的工作模式包括位置模式,速度模式,力矩模式和运动模式。

参数
mode工作模式

◆ SetMotionKd()

void bitbot::EncosJoint::SetMotionKd ( float Kd)

设置电机运动模式下的位置环微分系数

参数
Kd电机运动模式下的位置环微分系数

◆ SetMotionKp()

void bitbot::EncosJoint::SetMotionKp ( float Kp)

设置电机运动模式下的位置环比例系数

参数
Kp电机运动模式下的位置环比例系数

◆ SetTargetCurrent()

void bitbot::EncosJoint::SetTargetCurrent ( float current)

设置电机目标电流,该指令可以在任何模式下使用。

设置电机的目标电流,单位为安培(A)。该指令遵循电机的电流限制范围。该指令可以在任何模式下使用。

参数
current电机的目标电流,单位为安培(A)

◆ SetTargetMotion()

void bitbot::EncosJoint::SetTargetMotion ( float Position,
float Velocity = 0,
float Torque = 0 )

设置电机目标运动,该指令仅在运动模式下使用。

该指令会设置目标位置,速度和前馈力矩,电机会综合考虑这些参数来运动。 运动模式下电机内部PD环为20kHz。电机内部包含一个位置环来计算电机最终的电流值。 公式为:

\[I = (Kp \cdot (Position - CurrentPosition) + Kd \cdot (Velocity - CurrentVelocity) + Torque) / torque\_constant
\]

其中,I为电机的电流值,Kp和Kd为电机的比例系数和微分系数,Position和Velocity分别为目标位置和速度, Torque为目标力矩,torque_constant为电机的扭矩常数。

参数
Position电机的目标位置,单位为弧度(rad)
Velocity电机的目标速度,单位为弧度/秒(rad/s)
Torque电机的目标力矩,单位为牛米(Nm)

◆ SetTargetPosition()

void bitbot::EncosJoint::SetTargetPosition ( float position,
float move_velocity = 0,
float current_limit = 0 )

设置电机的目标位置,该指令可以在位置模式和运动模式下使用。

设置电机的目标位置,单位为弧度(rad)。

  • 在位置模式下,电机会以期望速度达到期望位置,并在电流允许的范围内保持在该位置。 若未指定速度和电流限制,则电机会以配置文件中设定的最大速度和电流限制到达目标位置。
  • 在运动模式下,该指令会设定电机的目标位置,速度和力矩限制将会被忽略, 用户可结合速度/力矩设置指令指定期望速度和前馈力矩来综合控制电机。
  • 在其他模式下该指令无法使用。
参数
position电机的目标位置,单位为弧度(rad)
move_velocity电机的目标速度,单位为弧度/秒(rad/s),值为0时使用配置文件中的最大速度
current_limit电机的电流限制,单位为安培(A),值为0时使用配置文件中的最大电流

◆ SetTargetTorque()

void bitbot::EncosJoint::SetTargetTorque ( float torque)

设置电机的目标力矩,该指令可以在力矩模式和运动模式下使用。

设置电机的目标力矩,单位为牛米(Nm)。

  • 在力矩模式下,电机会下发期望力矩运动。
  • 在运动模式下,该指令会设定电机的前馈力矩,用户可结合位置/速度设置指令指定期望位置和速度来综合控制电机。
  • 在其他模式下该指令无法使用。
    参数
    torque电机的目标力矩,单位为牛米(Nm)

◆ SetTargetVelocity()

void bitbot::EncosJoint::SetTargetVelocity ( float velocity,
float current_limit = 0 )

设置电机的目标速度,该指令可以在速度模式和运动模式下使用。

设置电机的目标速度,单位为弧度/秒(rad/s)。

  • 在速度模式下,电机会以期望速度运动,并在电流允许的范围内保持在该速度。 若未指定电流限制,则电机会以配置文件中设定的最大电流限制运动。
  • 在运动模式下,该指令会设定电机的目标速度,力矩限制将会被忽略, 用户可结合位置/力矩设置指令指定期望位置和前馈力矩来综合控制电机。
  • 在其他模式下该指令无法使用。
参数
velocity电机的目标速度,单位为弧度/秒(rad/s)
current_limit电机的电流限制,单位为安培(A),值为0时使用配置文件中的最大电流

该类的文档由以下文件生成: