|
Ctrl-Z
一个多线程机器人运动控制强化学习部署框架
|
AbstractWorker 类型是一切工人类型的基类,在这个类中指定了一些必须要实现的基本方法,这些方法将在调度器的调度流水线下被依次调用 来实现工人的工作逻辑。通过将多个Worker类型的工人注册到调度器中,形成一个TaskList,用户可以实现复杂的工作流程,在构成一个流水线的同时, 保证每个工人模块的逻辑是独立的,从而实现了工作流程的模块化和可扩展性。 更多...
#include <AbstractWorker.hpp>


Public 成员函数 | |
| AbstractWorker (SchedulerType::Ptr scheduler, const nlohmann::json &cfg=nlohmann::json()) | |
| 构造一个抽象工人类型 | |
| void | setScheduler (SchedulerType::Ptr scheduler) |
| 设置调度器的指针 | |
| virtual | ~AbstractWorker () |
| 析构函数,虚函数,用于释放资源 | |
| virtual void | TaskCreate () |
| TaskCreate方法,在任务队列创建的时候会被调度器调用,用户可以在这个方法中初始化一些资源 | |
| virtual void | TaskDestroy () |
| TaskDestroy方法,在任务队列删除的时候会被调度器调用,用户可以在这个方法中释放一些资源 | |
| virtual void | TaskCycleBegin () |
| TaskCycleBegin方法,在每次任务队列循环的开始会被调度器调用。 | |
| virtual void | TaskRun ()=0 |
| TaskRun方法,在每次任务队列循环中被调用, 具体的调用时机取决于用户在调度器中设置的当前工人在流水线中的顺序, 用户必须要实现的方法,用于实现当前工人的具体工作逻辑。 | |
| virtual void | TaskCycleEnd () |
| TaskCycleEnd方法,在每次任务队列循环的结束会被调度器调用。 | |
Public 成员函数 继承自 z::ZObject | |
| void | PrintSplitLine (size_t length=60, char c='-') |
| print a split line, default length is 60 and character is '-' | |
Protected 属性 | |
| SchedulerType::Ptr | Scheduler = nullptr |
| 调度器的指针,用户可以通过这个指针来获取一些全局的数据, 比如当前任务的时间戳,前级工人的输出数据等,也可以通过这个指针来设置一些全局的数据。 | |
AbstractWorker 类型是一切工人类型的基类,在这个类中指定了一些必须要实现的基本方法,这些方法将在调度器的调度流水线下被依次调用 来实现工人的工作逻辑。通过将多个Worker类型的工人注册到调度器中,形成一个TaskList,用户可以实现复杂的工作流程,在构成一个流水线的同时, 保证每个工人模块的逻辑是独立的,从而实现了工作流程的模块化和可扩展性。
这个类的主要目的是为了实现工人的工作逻辑,用户可以通过继承这个类来实现自己的工人类型,然后通过调度器来调度这些工人的工作流程。 具体来说,调度器在任务队列创建和删除的时候会调用抽象工人类型的TaskCreate和TaskDestroy方法;而在任务队列的循环中,调度器会依次调用 TaskCycleBegin,TaskRun和TaskCycleEnd方法,其中TaskRun方法是用户必须要实现的方法,在用户继承的子类中应当实现当前工作的具体逻辑。 举例来说,如果这个Worker是一个用来处理电机的Worker,那么可能的实现是在TaskRun方法中获取当前电机的状态和下发电机的目标状态, 在TaskCreate方法中初始化电机的通信接口,在TaskDestroy方法中关闭电机的通信接口。
| SchedulerType | 调度器类型,这个调度器类型会根据用户定义的调度逻辑依次调度工人的工作流程。 |
|
inline |
构造一个抽象工人类型
| scheduler | 调度器的指针,可以通过调度器来获得一些全局的数据,比如当前任务的时间戳,前级工人的输出数据等 |
| cfg | 配置文件,用户可以通过配置文件来配置工人的一些参数。 |
|
inline |
设置调度器的指针
| scheduler | 调度器指针 |
|
inlinevirtual |
TaskCreate方法,在任务队列创建的时候会被调度器调用,用户可以在这个方法中初始化一些资源
被 z::AbstractNetInferenceWorker< SchedulerType, NetName, InferencePrecision >, z::AsyncLoggerWorker< SchedulerType, LogPrecision, Args >, z::AsyncLoggerWorker< SchedulerType, RealNumber, ImuAccRawPair, ImuGyroRawPair, ImuMagRawPair, LinearVelocityValuePair, ImuAccFilteredPair, ImuGyroFilteredPair, ImuMagFilteredPair, TargetMotorPosPair, TargetMotorVelPair, CurrentMotorPosPair, CurrentMotorVelPair, CurrentMotorTorquePair, TargetMotorTorquePair, LimitTargetMotorTorquePair, NetLastActionPair, NetCommand3Pair, NetProjectedGravityPair, NetScaledActionPair, NetClockVectorPair, InferenceTimePair, Net1OutPair >, z::AsyncLoggerWorker< SchedulerType, RealNumber, ImuAccRawPair, ImuGyroRawPair, ImuMagRawPair, LinearVelocityValuePair, ImuAccFilteredPair, ImuGyroFilteredPair, ImuMagFilteredPair, TargetMotorPosPair, TargetMotorVelPair, CurrentMotorPosPair, CurrentMotorVelPair, CurrentMotorTorquePair, TargetMotorTorquePair, LimitTargetMotorTorquePair, NetLastActionPair, NetCommand3Pair, NetProjectedGravityPair, NetScaledActionPair, NetClockVectorPair, InferenceTimePair, Net1OutPair >, z::MotorControlWorker< SchedulerType, JointType, MotorPrecision, JointNumber >, z::MotorControlWorker< SchedulerType, DeviceJoint *, RealNumber, JOINT_NUMBER > , 以及 z::MotorControlWorker< SchedulerType, DeviceJoint *, RealNumber, JOINT_NUMBER > 重载.
|
inlinevirtual |
TaskCycleBegin方法,在每次任务队列循环的开始会被调度器调用。
被 z::ImuProcessWorker< SchedulerType, ImuType, ImuPrecision >, z::ImuProcessWorker< SchedulerType, DeviceImu *, RealNumber >, z::ImuProcessWorker< SchedulerType, DeviceImu *, RealNumber >, z::MotorControlWorker< SchedulerType, JointType, MotorPrecision, JointNumber >, z::MotorControlWorker< SchedulerType, DeviceJoint *, RealNumber, JOINT_NUMBER > , 以及 z::MotorControlWorker< SchedulerType, DeviceJoint *, RealNumber, JOINT_NUMBER > 重载.
|
inlinevirtual |
TaskCycleEnd方法,在每次任务队列循环的结束会被调度器调用。
被 z::AsyncLoggerWorker< SchedulerType, LogPrecision, Args >, z::AsyncLoggerWorker< SchedulerType, RealNumber, ImuAccRawPair, ImuGyroRawPair, ImuMagRawPair, LinearVelocityValuePair, ImuAccFilteredPair, ImuGyroFilteredPair, ImuMagFilteredPair, TargetMotorPosPair, TargetMotorVelPair, CurrentMotorPosPair, CurrentMotorVelPair, CurrentMotorTorquePair, TargetMotorTorquePair, LimitTargetMotorTorquePair, NetLastActionPair, NetCommand3Pair, NetProjectedGravityPair, NetScaledActionPair, NetClockVectorPair, InferenceTimePair, Net1OutPair >, z::AsyncLoggerWorker< SchedulerType, RealNumber, ImuAccRawPair, ImuGyroRawPair, ImuMagRawPair, LinearVelocityValuePair, ImuAccFilteredPair, ImuGyroFilteredPair, ImuMagFilteredPair, TargetMotorPosPair, TargetMotorVelPair, CurrentMotorPosPair, CurrentMotorVelPair, CurrentMotorTorquePair, TargetMotorTorquePair, LimitTargetMotorTorquePair, NetLastActionPair, NetCommand3Pair, NetProjectedGravityPair, NetScaledActionPair, NetClockVectorPair, InferenceTimePair, Net1OutPair >, z::MotorControlWorker< SchedulerType, JointType, MotorPrecision, JointNumber >, z::MotorControlWorker< SchedulerType, DeviceJoint *, RealNumber, JOINT_NUMBER > , 以及 z::MotorControlWorker< SchedulerType, DeviceJoint *, RealNumber, JOINT_NUMBER > 重载.
|
inlinevirtual |
TaskDestroy方法,在任务队列删除的时候会被调度器调用,用户可以在这个方法中释放一些资源
被 z::AsyncLoggerWorker< SchedulerType, LogPrecision, Args >, z::AsyncLoggerWorker< SchedulerType, RealNumber, ImuAccRawPair, ImuGyroRawPair, ImuMagRawPair, LinearVelocityValuePair, ImuAccFilteredPair, ImuGyroFilteredPair, ImuMagFilteredPair, TargetMotorPosPair, TargetMotorVelPair, CurrentMotorPosPair, CurrentMotorVelPair, CurrentMotorTorquePair, TargetMotorTorquePair, LimitTargetMotorTorquePair, NetLastActionPair, NetCommand3Pair, NetProjectedGravityPair, NetScaledActionPair, NetClockVectorPair, InferenceTimePair, Net1OutPair > , 以及 z::AsyncLoggerWorker< SchedulerType, RealNumber, ImuAccRawPair, ImuGyroRawPair, ImuMagRawPair, LinearVelocityValuePair, ImuAccFilteredPair, ImuGyroFilteredPair, ImuMagFilteredPair, TargetMotorPosPair, TargetMotorVelPair, CurrentMotorPosPair, CurrentMotorVelPair, CurrentMotorTorquePair, TargetMotorTorquePair, LimitTargetMotorTorquePair, NetLastActionPair, NetCommand3Pair, NetProjectedGravityPair, NetScaledActionPair, NetClockVectorPair, InferenceTimePair, Net1OutPair > 重载.
|
pure virtual |
TaskRun方法,在每次任务队列循环中被调用, 具体的调用时机取决于用户在调度器中设置的当前工人在流水线中的顺序, 用户必须要实现的方法,用于实现当前工人的具体工作逻辑。
在 z::AbstractNetInferenceWorker< SchedulerType, NetName, InferencePrecision >, z::ActionManagementWorker< SchedulerType, InferencePrecision, ActionPairs >, z::ActionManagementWorker< SchedulerType, RealNumber, Net1OutPair >, z::ActionManagementWorker< SchedulerType, RealNumber, Net1OutPair >, z::AsyncLoggerWorker< SchedulerType, LogPrecision, Args >, z::AsyncLoggerWorker< SchedulerType, RealNumber, ImuAccRawPair, ImuGyroRawPair, ImuMagRawPair, LinearVelocityValuePair, ImuAccFilteredPair, ImuGyroFilteredPair, ImuMagFilteredPair, TargetMotorPosPair, TargetMotorVelPair, CurrentMotorPosPair, CurrentMotorVelPair, CurrentMotorTorquePair, TargetMotorTorquePair, LimitTargetMotorTorquePair, NetLastActionPair, NetCommand3Pair, NetProjectedGravityPair, NetScaledActionPair, NetClockVectorPair, InferenceTimePair, Net1OutPair >, z::AsyncLoggerWorker< SchedulerType, RealNumber, ImuAccRawPair, ImuGyroRawPair, ImuMagRawPair, LinearVelocityValuePair, ImuAccFilteredPair, ImuGyroFilteredPair, ImuMagFilteredPair, TargetMotorPosPair, TargetMotorVelPair, CurrentMotorPosPair, CurrentMotorVelPair, CurrentMotorTorquePair, TargetMotorTorquePair, LimitTargetMotorTorquePair, NetLastActionPair, NetCommand3Pair, NetProjectedGravityPair, NetScaledActionPair, NetClockVectorPair, InferenceTimePair, Net1OutPair >, z::ImuProcessWorker< SchedulerType, ImuType, ImuPrecision >, z::ImuProcessWorker< SchedulerType, DeviceImu *, RealNumber >, z::ImuProcessWorker< SchedulerType, DeviceImu *, RealNumber >, z::KeyboardCommandWorker< SchedulerType >, z::MotorControlWorker< SchedulerType, JointType, MotorPrecision, JointNumber >, z::MotorControlWorker< SchedulerType, DeviceJoint *, RealNumber, JOINT_NUMBER >, z::MotorControlWorker< SchedulerType, DeviceJoint *, RealNumber, JOINT_NUMBER >, z::MotorPDControlWorker< SchedulerType, MotorPrecision, JointNumber >, z::MotorPDControlWorker< SchedulerType, RealNumber, JOINT_NUMBER >, z::MotorPDControlWorker< SchedulerType, RealNumber, JOINT_NUMBER >, z::MotorResetPositionWorker< SchedulerType, MotorPrecision, JointNumber >, z::MotorResetPositionWorker< SchedulerType, RealNumber, JOINT_NUMBER >, z::MotorResetPositionWorker< SchedulerType, RealNumber, JOINT_NUMBER >, z::NetCmdWorker< SchedulerType, CmdPrecision, CmdArgs >, z::NetCmdWorker< SchedulerType, RealNumber, NetCommand3Pair >, z::NetCmdWorker< SchedulerType, RealNumber, NetCommand3Pair >, z::SimpleCallbackWorker< SchedulerType > , 以及 z::SinTrajactoryGenerator< SchedulerType, Scalar, JointNumber > 内被实现.