跳转到内容

ArmController API

文档稀疏
符号
153
已记录
32
修订版本
967f6e0c5a1e

121 / 153 个公开 API 符号没有说明。

命名空间

4

controllers

上游未提供说明。

5

Arm::MITMotorCtrl

MIT 控制抽象基类: 管理 MIT 参数、目标值、积分项 getMotor() 统一通过读取角度 / 速度 / 在线状态 派生类只处理具体驱动的命令下发差异 角度:deg 角速度:deg/s 前馈力矩:Nm 单位约定: IMotor::getVelocity() 注意底层的统一单位是 rpm, 这里对外统一换算成 deg/s,方便机械臂控制层直接使用。

Core/arm_motor_mit.hpp:32

结构体

2

函数

48

Arm::Controller::Controller

                    Arm::Controller::Controller (MITMotorCtrl &joint1, MITMotorCtrl &joint2, MITMotorCtrl &joint3, const Config &config)
                  

构造控制器 joint1 关节1电机 joint2 关节2电机 joint3 关节3电机 config 机械臂参数

Core/arm_controller.hpp:64

Arm::Controller::calculateCoriolisComp

                    void Arm::Controller::calculateCoriolisComp (float q1, float q2, float q3, float dq1, float dq2, float dq3, float &tau1, float &tau2, float &tau3)
                  

计算科里奥利/离心补偿力矩 基于平面 3R 刚体模型:tau_c = C(q, dq) * dq q1 关节1角度(弧度) q2 关节2角度(弧度) q3 关节3角度(弧度) dq1 关节1角速度(弧度/s) dq2 关节2角速度(弧度/s) dq3 关节3角速度(弧度/s) tau1 关节1力矩输出 tau2 关节2力矩输出 tau3 关节3力矩输出

Core/arm_controller.hpp:164

Arm::Controller::calculateGravityComp

                    void Arm::Controller::calculateGravityComp (float q1, float q2, float q3, float &tau1, float &tau2, float &tau3)
                  

计算重力补偿力矩 q1 关节1角度(弧度) q2 关节2角度(弧度) q3 关节3角度(弧度) tau1 关节1力矩输出 tau2 关节2力矩输出 tau3 关节3力矩输出

Core/arm_controller.hpp:149

Arm::Controller::calculateInertiaComp

                    void Arm::Controller::calculateInertiaComp (float q1, float q2, float q3, float ddq1, float ddq2, float ddq3, float &tau1, float &tau2, float &tau3)
                  

计算转动惯量补偿力矩 基于平面 3R 刚体模型:tau_i = M(q) * ddq q1 关节1角度(弧度) q2 关节2角度(弧度) q3 关节3角度(弧度) ddq1 关节1角加速度(弧度/s^2) ddq2 关节2角加速度(弧度/s^2) ddq3 关节3角加速度(弧度/s^2) tau1 关节1力矩输出 tau2 关节2力矩输出 tau3 关节3力矩输出

Core/arm_controller.hpp:187

Arm::Controller::getEndEffectorPose

                    void Arm::Controller::getEndEffectorPose (float &x, float &y, float &phi) const
                  

获取末端位姿 x 末端x y 末端y phi 末端姿态角

Core/arm_controller.hpp:108

Arm::Controller::getJointAngles

                    void Arm::Controller::getJointAngles (float &q1, float &q2, float &q3) const
                  

获取关节角 q1 关节1角度(度) q2 关节2角度(度) q3 关节3角度(度)

Core/arm_controller.hpp:116

Arm::Controller::getJointAnglesComp

                    void Arm::Controller::getJointAnglesComp (float &q1, float &q2, float &q3)
                  

获取补偿回程差后的关节角(与目标语义一致) q1 关节1角度(度) q2 关节2角度(度) q3 关节3角度(度)

Core/arm_controller.hpp:124

Arm::Controller::getJointVelocities

                    void Arm::Controller::getJointVelocities (float &dq1, float &dq2, float &dq3) const
                  

获取关节角速度 dq1 关节1角速度(度/s) dq2 关节2角速度(度/s) dq3 关节3角速度(度/s)

Core/arm_controller.hpp:132

Arm::Controller::setPayload

                    void Arm::Controller::setPayload (float mass, float ramp_time=0.5f)
                  

设置负载质量 mass 负载质量 ramp_time 质量变化平滑时间

Core/arm_controller.hpp:94

Arm::Controller::setStreamingTarget

                    void Arm::Controller::setStreamingTarget (float q1, float q2, float q3, float dq1, float dq2, float dq3, float ddq1, float ddq2, float ddq3)
                  

设置流式目标 q1 关节1角度(度) q2 关节2角度(度) q3 关节3角度(度) dq1 关节1角速度(度/s) dq2 关节2角速度(度/s) dq3 关节3角速度(度/s) ddq1 关节1角加速度(度/s^2) ddq2 关节2角加速度(度/s^2) ddq3 关节3角加速度(度/s^2)

Core/arm_controller.hpp:86

Arm::DJIMITMotorCtrl::DJIMITMotorCtrl

                    Arm::DJIMITMotorCtrl::DJIMITMotorCtrl (motors::DJIMotor *driver, float torque_ratio)
                  

torque_ratio DJI 不支持原生 MIT 五元组,因此这里在 MCU 侧做 MIT 风格控制, 再通过把期望力矩换成驱动电流命令。

Core/arm_motor_mit.hpp:169

Arm::DJIMITMotorCtrl::outputControl

                    void Arm::DJIMITMotorCtrl::outputControl (float torque_nm)
                  

上游未提供说明。

Core/arm_motor_mit.hpp:176

Arm::DJIMITMotorCtrl::update

                    void Arm::DJIMITMotorCtrl::update (float dt) override
                  

上游未提供说明。

Core/arm_motor_mit.hpp:171

Arm::DMMITMotorCtrl::DMMITMotorCtrl

                    Arm::DMMITMotorCtrl::DMMITMotorCtrl (motors::DMMotor *driver)
                  

DM 原生支持 MIT 接口,因此这里只需要维护公共状态并直接下发。

Core/arm_motor_mit.hpp:188

Arm::DMMITMotorCtrl::update

                    void Arm::DMMITMotorCtrl::update (float dt) override
                  

上游未提供说明。

Core/arm_motor_mit.hpp:192

Arm::MITMotorCtrl::MITMotorCtrl

                    Arm::MITMotorCtrl::MITMotorCtrl (motors::IMotor *motor, controllers::ControlMode ctrl_mode)
                  

上游未提供说明。

Core/arm_motor_mit.hpp:110

Arm::MITMotorCtrl::SetIntegralEnable

                    void Arm::MITMotorCtrl::SetIntegralEnable (bool enable)
                  

上游未提供说明。

Core/arm_motor_mit.hpp:46

Arm::MITMotorCtrl::SetMitParams

                    void Arm::MITMotorCtrl::SetMitParams (float kp, float kd, float ki, float i_limit)
                  

上游未提供说明。

Core/arm_motor_mit.hpp:37

Arm::MITMotorCtrl::calcIntegralTorque

                    float Arm::MITMotorCtrl::calcIntegralTorque (float dt)
                  

计算位置误差积分项,返回值的物理意义是附加前馈力矩(Nm)。

Core/arm_motor_mit.hpp:118

Arm::MITMotorCtrl::getAngle

                    float Arm::MITMotorCtrl::getAngle () const
                  

获取输出轴角度,单位 deg。

Core/arm_motor_mit.hpp:82

Arm::MITMotorCtrl::getVelocity

                    float Arm::MITMotorCtrl::getVelocity () const
                  

获取输出轴角速度,单位 deg/s。

Core/arm_motor_mit.hpp:91

Arm::MITMotorCtrl::setTarget

                    void Arm::MITMotorCtrl::setTarget (float angle_ref, float velocity_ref, float torque_ff)
                  

上游未提供说明。

Core/arm_motor_mit.hpp:55

Arm::MITMotorCtrl::targetTorqueFF

                    float Arm::MITMotorCtrl::targetTorqueFF () const
                  

上游未提供说明。

Core/arm_motor_mit.hpp:146

Arm::MITMotorCtrl::targetVelocity

                    float Arm::MITMotorCtrl::targetVelocity () const
                  

上游未提供说明。

Core/arm_motor_mit.hpp:145

Arm::MITMotorCtrl::update

                    virtual void Arm::MITMotorCtrl::update (float dt)=0
                  

上游未提供说明。

Core/arm_motor_mit.hpp:77

Arm::MITMotorCtrl::update

                    void Arm::MITMotorCtrl::update () override
                  

无 dt 版本仅作为 IController 适配入口使用。 机械臂控制链路里通常应调用带 dt 的版本。

Core/arm_motor_mit.hpp:76

Arm::MITMotorCtrl::~MITMotorCtrl

                    Arm::MITMotorCtrl::~MITMotorCtrl () override=default
                  

上游未提供说明。

Core/arm_motor_mit.hpp:35

Arm::Slave::Slave

                    Arm::Slave::Slave (Controller &controller)
                  

构造从机控制器 controller 机械臂控制器

controller/arm_slave.hpp:39

Arm::Slave::hasActiveTrajectory

                    bool Arm::Slave::hasActiveTrajectory () const
                  

是否有有效轨迹 有轨迹则为true

controller/arm_slave.hpp:77

Arm::Slave::pushPoint

                    bool Arm::Slave::pushPoint (const TrajPoint &point, uint32_t rx_time_ms)
                  

推入轨迹点 point 轨迹点 rx_time_ms 接收时间戳 是否推入成功

controller/arm_slave.hpp:47

Arm::Slave::setRxPeriodMs

                    void Arm::Slave::setRxPeriodMs (uint32_t period_ms)
                  

设置上位机轨迹点周期 period_ms 轨迹点周期(ms)

controller/arm_slave.hpp:64

Arm::Slave::setTimeoutMs

                    void Arm::Slave::setTimeoutMs (uint32_t timeout_ms)
                  

设置超时时间 timeout_ms 超时(ms)

controller/arm_slave.hpp:58

Arm::Slave::update

                    void Arm::Slave::update (uint32_t now_ms, float dt)
                  

执行轨迹队列 now_ms 当前时间戳 dt 控制周期(s)

controller/arm_slave.hpp:71

Arm::anonymous_namespace{arm_slave.cpp}::quintic

                    static HermiteResult Arm::anonymous_namespace{arm_slave.cpp}::quintic (float p0, float v0, float a0, float p1, float v1, float a1, float T, float t)
                  

上游未提供说明。

controller/arm_slave.cpp:20

变量

86

Arm::Controller::Config::reduction_1

                    float Arm::Controller::Config::reduction_1
                  

上游未提供说明。

Core/arm_controller.hpp:42

Arm::Controller::Config::reduction_2

                    float Arm::Controller::Config::reduction_2
                  

上游未提供说明。

Core/arm_controller.hpp:43

Arm::Controller::Config::reduction_3

                    float Arm::Controller::Config::reduction_3
                  

上游未提供说明。

Core/arm_controller.hpp:44

Arm::Controller::current_payload_mass_

                    float Arm::Controller::current_payload_mass_
                  

上游未提供说明。

Core/arm_controller.hpp:232

Arm::MITMotorCtrl::target_torque_ff_

                    float Arm::MITMotorCtrl::target_torque_ff_
                  

上游未提供说明。

Core/arm_motor_mit.hpp:159

Arm::anonymous_namespace{arm_slave.cpp}::HermiteResult::ddq

                    float Arm::anonymous_namespace{arm_slave.cpp}::HermiteResult::ddq
                  

上游未提供说明。

controller/arm_slave.cpp:17

Arm::anonymous_namespace{arm_slave.cpp}::HermiteResult::dq

                    float Arm::anonymous_namespace{arm_slave.cpp}::HermiteResult::dq
                  

上游未提供说明。

controller/arm_slave.cpp:16

Arm::anonymous_namespace{arm_slave.cpp}::HermiteResult::q

                    float Arm::anonymous_namespace{arm_slave.cpp}::HermiteResult::q
                  

上游未提供说明。

controller/arm_slave.cpp:15

Arm::anonymous_namespace{arm_slave.cpp}::kFlagComp

                    uint8_t Arm::anonymous_namespace{arm_slave.cpp}::kFlagComp
                  

上游未提供说明。

controller/arm_slave.cpp:11

Arm::anonymous_namespace{arm_slave.cpp}::kFlagVacuum

                    uint8_t Arm::anonymous_namespace{arm_slave.cpp}::kFlagVacuum
                  

上游未提供说明。

controller/arm_slave.cpp:10

宏定义

1

文件

7