Ctrl-Z
一个多线程机器人运动控制强化学习部署框架
载入中...
搜索中...
未找到
z::MotorControlWorker< SchedulerType, JointType, MotorPrecision, JointNumber > 模板类 参考

MotorControlWorker类型是一个电机控制类型,用于读取实际电机的位置、速度、电流等数据,并将控制指令写入到电机的控制接口。 更多...

#include <MotorControlWorker.hpp>

类 z::MotorControlWorker< SchedulerType, JointType, MotorPrecision, JointNumber > 继承关系图:
z::MotorControlWorker< SchedulerType, JointType, MotorPrecision, JointNumber > 的协作图:

Public 成员函数

 MotorControlWorker (SchedulerType::Ptr scheduler, const nlohmann::json &root_cfg, const std::array< JointType, JointNumber > &Joints)
 构造一个电机控制工人类型
 
 ~MotorControlWorker ()
 析构函数
 
void TaskCreate ()
 TaskCreate方法,在任务队列创建的时候会被调度器调用,用户可以在这个方法中初始化一些资源
 
void SetCurrentPositionAsTargetPosition ()
 设置当前位置为目标位置
 
void TaskCycleBegin () override
 TaskCycleBegin方法,在每次任务队列循环开始时被调用,用来读取电机的位置、速度、电流等数据并写入到数据总线中
 
void TaskRun () override
 TaskRun方法,在每次任务队列循环中被调用,用来实现电机的控制逻辑,默认为空实现,因为电机的控制逻辑在TaskCycleEnd中实现
 
void TaskCycleEnd () override
 TaskCycleEnd方法,在每次任务队列循环结束时被调用,用来将控制指令写入到电机的控制接口。 限制力矩大小,以及根据控制模式选择不同的控制方式。
 
- Public 成员函数 继承自 z::AbstractWorker< SchedulerType >
 AbstractWorker (SchedulerType::Ptr scheduler, const nlohmann::json &cfg=nlohmann::json())
 构造一个抽象工人类型
 
void setScheduler (SchedulerType::Ptr scheduler)
 设置调度器的指针
 
virtual ~AbstractWorker ()
 析构函数,虚函数,用于释放资源
 
virtual void TaskDestroy ()
 TaskDestroy方法,在任务队列删除的时候会被调度器调用,用户可以在这个方法中释放一些资源
 
- Public 成员函数 继承自 z::ZObject
void PrintSplitLine (size_t length=60, char c='-')
 print a split line, default length is 60 and character is '-'
 

额外继承的成员函数

- Protected 属性 继承自 z::AbstractWorker< SchedulerType >
SchedulerType::Ptr Scheduler = nullptr
 调度器的指针,用户可以通过这个指针来获取一些全局的数据, 比如当前任务的时间戳,前级工人的输出数据等,也可以通过这个指针来设置一些全局的数据。
 

详细描述

template<typename SchedulerType, typename JointType, typename MotorPrecision, size_t JointNumber>
class z::MotorControlWorker< SchedulerType, JointType, MotorPrecision, JointNumber >

MotorControlWorker类型是一个电机控制类型,用于读取实际电机的位置、速度、电流等数据,并将控制指令写入到电机的控制接口。

MotorControlWorker类型是一个电机控制类型,用于读取实际电机的位置、速度、电流等数据,并将控制指令写入到电机的控制接口。 通常来说,用户可以将该类型放在主任务队列中,用于实现电机的控制逻辑。该类型会向数据总线中写入"CurrentMotorPosition", "CurrentMotorVelocity","CurrentMotorTorque"这三个数据,并读取"TargetMotorPosition","TargetMotorVelocity","TargetMotorTorque" 这三个数据并下发给电机,此外还会向数据总线中写入"LimitTargetMotorTorque"数据,以在力矩模式中展示被限制后的目标力矩输出。 用户需要在数据总线中注册这些数据类型,以便于工人类型能够正确的读写数据。用户可以通过配置文件来配置电机的控制模式,限制力矩大小等。

config.json配置文件示例:

{
"Workers": {
"MotorControl": {
//注意这里的ControlMode参数需要和电机的数量相匹配,支持的控制模式有"Torque","Position","Velocity"
//若所有电机都是同一种控制模型,可以简写为一个字符串
//"ControlMode":"Torque"
"ControlMode": [ "Position", "Position", "Velocity", "Position", "Position", "Velocity" ],
"TorqueLimit":[100,100,100,100,100,100], //非力矩模式该字段可以省略
"PosFilterWeight": [0.9,0.1], //位置滤波权重
"VelFilterWeight": [0.9,0.1], //速度滤波权重
"DefaultPosition": [0,0,0,0,0,0] //默认位置,注意这里的默认位置需要和电机的数量相匹配
}
}
}
模板参数
SchedulerType调度器类型
JointType电机类型指针,在这个类型中必须实现GetActualPosition(),GetActualTorque(),GetActualTorque(), SetTargetTorque(),SetTargetPosition(),SetTargetVelocity()方法
MotorPrecision电机数据精度,用户可以通过这个参数来指定电机数据的精度,比如可以指定为float或者double
JointNumber关节电机数量

构造及析构函数说明

◆ MotorControlWorker()

template<typename SchedulerType, typename JointType, typename MotorPrecision, size_t JointNumber>
z::MotorControlWorker< SchedulerType, JointType, MotorPrecision, JointNumber >::MotorControlWorker ( SchedulerType::Ptr scheduler,
const nlohmann::json & root_cfg,
const std::array< JointType, JointNumber > & Joints )
inline

构造一个电机控制工人类型

参数
scheduler调度器的指针
root_cfg配置文件
Joints电机指针数组

成员函数说明

◆ TaskCreate()

template<typename SchedulerType, typename JointType, typename MotorPrecision, size_t JointNumber>
void z::MotorControlWorker< SchedulerType, JointType, MotorPrecision, JointNumber >::TaskCreate ( )
inlinevirtual

TaskCreate方法,在任务队列创建的时候会被调度器调用,用户可以在这个方法中初始化一些资源

重载 z::AbstractWorker< SchedulerType > .

◆ TaskCycleBegin()

template<typename SchedulerType, typename JointType, typename MotorPrecision, size_t JointNumber>
void z::MotorControlWorker< SchedulerType, JointType, MotorPrecision, JointNumber >::TaskCycleBegin ( )
inlineoverridevirtual

TaskCycleBegin方法,在每次任务队列循环开始时被调用,用来读取电机的位置、速度、电流等数据并写入到数据总线中

重载 z::AbstractWorker< SchedulerType > .

◆ TaskCycleEnd()

template<typename SchedulerType, typename JointType, typename MotorPrecision, size_t JointNumber>
void z::MotorControlWorker< SchedulerType, JointType, MotorPrecision, JointNumber >::TaskCycleEnd ( )
inlineoverridevirtual

TaskCycleEnd方法,在每次任务队列循环结束时被调用,用来将控制指令写入到电机的控制接口。 限制力矩大小,以及根据控制模式选择不同的控制方式。

重载 z::AbstractWorker< SchedulerType > .

◆ TaskRun()

template<typename SchedulerType, typename JointType, typename MotorPrecision, size_t JointNumber>
void z::MotorControlWorker< SchedulerType, JointType, MotorPrecision, JointNumber >::TaskRun ( )
inlineoverridevirtual

TaskRun方法,在每次任务队列循环中被调用,用来实现电机的控制逻辑,默认为空实现,因为电机的控制逻辑在TaskCycleEnd中实现

实现了 z::AbstractWorker< SchedulerType >.


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