BitbotEncos
Bitbot Encos is a bitbot instance for encos motor.
|
Encos电机类,继承自Encos_CANBusDevice, 用户可以使用该类来管理电机设备。 更多...
#include <Encos_joint.h>
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 () |
设置电机当前位置为零位 | |
![]() | |
Encos_CANBusDevice (const pugi::xml_node &device_node) | |
构造函数 | |
virtual | ~Encos_CANBusDevice ()=default |
析构函数 | |
![]() | |
EncosDevice (const pugi::xml_node &device_node) | |
构造函数 | |
友元 | |
class | EncosBus |
额外继承的成员函数 | |
![]() | |
virtual constexpr bool | VirtualBusDevice () const final override |
判断设备是否为虚拟总线设备,虚拟总线设备是指未实际挂载在EtherCAT总线上,但也需要进行数据交换的设备。 | |
Encos电机类,继承自Encos_CANBusDevice, 用户可以使用该类来管理电机设备。
Encos电机类,继承自Encos_CANBusDevice, 用户可以使用该类来管理电机设备。 该类提供了电机的基本操作,包括上电,下电,设置目标位置,速度,力矩,设置零位等。 该类还提供了电机的运行时数据,包括电机的当前转速,目标转速,当前转角,目标转角,当前电流,目标电流等。 Encos电机有多种工作模式,包括位置模式,速度模式,力矩模式和运动模式。
bitbot::EncosJoint::EncosJoint | ( | const pugi::xml_node & | joint_node | ) |
构造函数
构造函数,用户无需关心该函数的实现,该函数由Bitbot Encos内核创建。
joint_node | 电机节点的配置文件 |
float bitbot::EncosJoint::GetActualCurrent | ( | ) |
获取电机的实际电流
float bitbot::EncosJoint::GetActualPosition | ( | ) |
获取电机的实际位置
float bitbot::EncosJoint::GetActualTorque | ( | ) |
获取电机的实际力矩
float bitbot::EncosJoint::GetActualVelocity | ( | ) |
获取电机的实际速度
EncosJointMode bitbot::EncosJoint::GetMode | ( | ) |
float bitbot::EncosJoint::GetMotionKd | ( | ) |
获取电机运动模式下的位置环微分系数
float bitbot::EncosJoint::GetMotionKp | ( | ) |
获取电机运动模式下的位置环比例系数
std::tuple< float, float > bitbot::EncosJoint::GetMotorTemperature | ( | ) |
获取电机的温度
float bitbot::EncosJoint::GetTargetCurrent | ( | ) |
获取电机的目标电流
float bitbot::EncosJoint::GetTargetPosition | ( | ) |
获取电机的目标位置
float bitbot::EncosJoint::GetTargetTorque | ( | ) |
获取电机的目标力矩
float bitbot::EncosJoint::GetTargetVelocity | ( | ) |
获取电机的目标速度
bool bitbot::EncosJoint::isEnable | ( | ) |
查询电机是否使能
查询电机是否使能。电机使能后才能上电,未使能的电机无法上电但可以读取 电机的运行时数据。电机的使能状态由用户在配置文件中指定。
bool bitbot::EncosJoint::isPowerOn | ( | ) |
查询电机是否上电。
查询电机是否上电。电机上电后才能运动,未上电的电机无法运动。但可以读取 电机的运行时数据。电机的上电状态由内核和总线管理器控制。
void bitbot::EncosJoint::ResetMotorPosition | ( | ) |
设置电机当前位置为零位
设置电机当前位置为零位,该指令会将电机的当前位置设置为零位。 电机设置零位后会有约500ms的延迟,电机会在此期间停止运动,也会使得电机获取出现停滞。 出于安全考虑,该指令设置后将使得电机的目标位置,目标速度和目标力矩均为0。用户在设置零位后需要重新设置目标位置,速度和力矩。
void bitbot::EncosJoint::SetMode | ( | EncosJointMode | mode | ) |
设置电机的工作模式
设置电机的工作模式。电机的默认工作模式由用户在配置文件中指定。 用户也可以在程序中动态修改电机的工作模式。电机的工作模式包括位置模式,速度模式,力矩模式和运动模式。
mode | 工作模式 |
void bitbot::EncosJoint::SetMotionKd | ( | float | Kd | ) |
设置电机运动模式下的位置环微分系数
Kd | 电机运动模式下的位置环微分系数 |
void bitbot::EncosJoint::SetMotionKp | ( | float | Kp | ) |
设置电机运动模式下的位置环比例系数
Kp | 电机运动模式下的位置环比例系数 |
void bitbot::EncosJoint::SetTargetCurrent | ( | float | current | ) |
设置电机目标电流,该指令可以在任何模式下使用。
设置电机的目标电流,单位为安培(A)。该指令遵循电机的电流限制范围。该指令可以在任何模式下使用。
current | 电机的目标电流,单位为安培(A) |
void bitbot::EncosJoint::SetTargetMotion | ( | float | Position, |
float | Velocity = 0, | ||
float | Torque = 0 ) |
设置电机目标运动,该指令仅在运动模式下使用。
该指令会设置目标位置,速度和前馈力矩,电机会综合考虑这些参数来运动。 运动模式下电机内部PD环为20kHz。电机内部包含一个位置环来计算电机最终的电流值。 公式为:
其中,I为电机的电流值,Kp和Kd为电机的比例系数和微分系数,Position和Velocity分别为目标位置和速度, Torque为目标力矩,torque_constant为电机的扭矩常数。
Position | 电机的目标位置,单位为弧度(rad) |
Velocity | 电机的目标速度,单位为弧度/秒(rad/s) |
Torque | 电机的目标力矩,单位为牛米(Nm) |
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时使用配置文件中的最大电流 |
void bitbot::EncosJoint::SetTargetTorque | ( | float | torque | ) |
设置电机的目标力矩,该指令可以在力矩模式和运动模式下使用。
设置电机的目标力矩,单位为牛米(Nm)。
torque | 电机的目标力矩,单位为牛米(Nm) |
void bitbot::EncosJoint::SetTargetVelocity | ( | float | velocity, |
float | current_limit = 0 ) |
设置电机的目标速度,该指令可以在速度模式和运动模式下使用。
设置电机的目标速度,单位为弧度/秒(rad/s)。
velocity | 电机的目标速度,单位为弧度/秒(rad/s) |
current_limit | 电机的电流限制,单位为安培(A),值为0时使用配置文件中的最大电流 |