4.1 HighLevel函数介绍 ============================================= **class HighLevel** 该类包含控制四足机器人应用功能的方法,用户可以使用这些方法来进行上层控制和获取数据。 --- 4.1.1 初始化 --------------------------------------------- **函数原型** ```cpp initRobot(const std::string& local_ip, const int local_port, const std::string& dog_ip = "192.168.234.1") ``` **功能概述** 与机器狗建立通信,机器狗端ip默认"192.168.234.1", 如更改机器人ip,需从该接口传入新ip **参数说明** | 参数名 | 类型 | 说明 | 选项 | 备注 | |--------|------|------|---------|----------| | local_ip | string& | 用户主机IP地址 | 必选项 | - | | local_port | int | 用户主机端口 | 必选项 | - | | dog_ip | string& | 机器狗IP地址 | 可选项 | 默认"192.168.234.1")| **返回值** 无 **备注** 通信建立失败时,终端输出失败日志 --- 4.1.2 检查通讯状态 --------------------------------------------- **函数原型** ```cpp checkConnection() ``` **功能概述** 检查机器人通讯状态 **参数说明** 无 **返回值类型:bool** | 返回值 | 说明 | |------|------| | true | 连接正常 | | false | 连接失败 | **备注** 可做心跳检测 --- 4.1.3 站起 --------------------------------------------- **函数原型** ```cpp standUP() ``` **功能概述** 控制机器狗站立 **参数说明** 无 **返回值类型:uint32_t** | 返回值 | 说明 | |------|------| | 0 | 进入状态正常 | | 0x3012 | 电机数据丢失 | | 0x3010 | 电机失能 | | 0x3011 | 电机故障 | | 0x3009 | 电机角度超限 | | 0x3007 | 状态机切换失败 | | 0x3013 | 速度命令过大 | **备注** 机器狗正常站立,移动中不可直接切入此状态 --- 4.1.4 趴下 --------------------------------------------- **函数原型** ```cpp lieDown() ``` **功能概述** 控制机器狗站低 **参数说明** 无 **返回值类型:uint32_t** | 返回值 | 说明 | |------|------| | 0 | 进入状态正常 | | 0x3012 | 电机数据丢失 | | 0x3010 | 电机失能 | | 0x3011 | 电机故障 | | 0x3009 | 电机角度超限 | | 0x3007 | 状态机切换失败 | | 0x3013 | 速度命令过大 | **备注** 机器狗站低,关节锁定,移动中不可直接切入此状态 --- 4.1.5 阻尼 --------------------------------------------- **函数原型** ```cpp passive() ``` **功能概述** 控制机器狗紧急趴下 **参数说明** 无 **返回值类型:uint32_t** | 返回值 | 说明 | |------|------| | 0 | 进入状态正常 | | 0x3012 | 电机数据丢失 | | 0x3010 | 电机失能 | | 0x3011 | 电机故障 | | 0x3009 | 电机角度超限 | | 0x3007 | 状态机切换失败 | | 0x3013 | 速度命令过大 | **备注** 机器狗进入阻尼状态,趴下 --- 4.1.6 移动 --------------------------------------------- **函数原型** ```cpp move(float vx, float vy, float yaw_rate) ``` **功能概述** 控制机器狗运动 **参数说明** | 参数名 | 类型 | 说明 | 选项 | 备注 | |--------|------|------|---------|-----------| | vx | float | 前向速度 | 必选项 | 不进行移动时需传入0,范围(-3m/s ~ -0.05m/s; 0.05m/s ~ 3m/s) | | vy | float | 侧向速度 | 必选项 | 不进行移动时需传入0,范围(-1.0m/s ~ -0.1m/s;0.1m/s ~ 1.0m/s) | | yaw_rate | float | 绕Z轴角速度 | 必选项 | 不进行移动时需传入0,范围(-3.0rad/s ~ -0.02rad/s;0.02rad/s ~ 3.0rad/s) | **返回值类型:uint32_t** | 返回值 | 说明 | |------|------| | 0 | 进入状态正常 | | 0x3012 | 电机数据丢失 | | 0x3010 | 电机失能 | | 0x3011 | 电机故障 | | 0x3009 | 电机角度超限 | | 0x3007 | 状态机切换失败 | | 0x3013 | 速度命令过大 | **备注** 仅在机器狗站立状态下切入,控制狗按指定速度运动。 --- 4.1.7 原地跳 --------------------------------------------- **函数原型** ```cpp jump() ``` **功能概述** 控制机器狗垂直跳跃 **参数说明** 无 **返回值类型:uint32_t** | 返回值 | 说明 | |------|------| | 0 | 进入状态正常 | | 0x3012 | 电机数据丢失 | | 0x3010 | 电机失能 | | 0x3011 | 电机故障 | | 0x3009 | 电机角度超限 | | 0x3007 | 状态机切换失败 | | 0x3013 | 速度命令过大 | **备注** 仅在站立状态下切入,移动中不可切换状态 --- 4.1.8 向前跳 --------------------------------------------- **函数原型** ```cpp frontJump() ``` **功能概述** 控制机器狗向前跳 **参数说明** 无 **返回值类型:uint32_t** | 返回值 | 说明 | |------|------| | 0 | 进入状态正常 | | 0x3012 | 电机数据丢失 | | 0x3010 | 电机失能 | | 0x3011 | 电机故障 | | 0x3009 | 电机角度超限 | | 0x3007 | 状态机切换失败 | | 0x3013 | 速度命令过大 | **备注** 仅在站立状态下切入,移动中不可切换状态 --- 4.1.9 后空翻 --------------------------------------------- **函数原型** ```cpp backflip() ``` **功能概述** 控制机器狗后空翻 **参数说明** 无 **返回值类型:uint32_t** | 返回值 | 说明 | |------|------| | 0 | 进入状态正常 | | 0x3012 | 电机数据丢失 | | 0x3010 | 电机失能 | | 0x3011 | 电机故障 | | 0x3009 | 电机角度超限 | | 0x3007 | 状态机切换失败 | | 0x3013 | 速度命令过大 | **备注** 仅在站立状态下切入,移动中不可切换状态 此特技功能专为媒体展示、产品演示等特殊场景设计。 **高频次使用此功能将显著加速电机、关节等核心部件的磨损,从而可能导致产品性能下降或缩短使用寿命。** 请务必谨慎使用。 --- 4.1.10 打招呼 --------------------------------------------- **函数原型** ```cpp shakeHand() ``` **功能概述** 控制机器狗打招呼 **参数说明** 无 **返回值类型:uint32_t** | 返回值 | 说明 | |------|------| | 0 | 进入状态正常 | | 0x3012 | 电机数据丢失 | | 0x3010 | 电机失能 | | 0x3011 | 电机故障 | | 0x3009 | 电机角度超限 | | 0x3007 | 状态机切换失败 | | 0x3013 | 速度命令过大 | **备注** 仅在站立状态下切入,移动中不可切换状态 此特技功能专为媒体展示、产品演示等特殊场景设计。 **高频次使用此功能将显著加速电机、关节等核心部件的磨损,从而可能导致产品性能下降或缩短使用寿命。** 请务必谨慎使用。 --- 4.1.11 双腿站立 --------------------------------------------- **函数原型** ```cpp twoLegStand(float vx, float yaw_rate) ``` **功能概述** 控制机器狗双腿站立 **参数说明** | 参数名 | 类型 | 说明 | 选项 | 备注 | |--------|------|------|---------|---------| | vx | float | 前向速度 | 必选项 | 不移动则传入0,范围(-0.5~-0.2 / 0.2~0.5m / s) | | yaw_rate | float | 绕Z轴角速度 | 必选项 | 不移动则传入0,范围(-1~-0.2 / 0.2~1.0rad / s) **返回值类型:uint32_t** | 返回值 | 说明 | |------|------| | 0 | 进入状态正常 | | 0x3012 | 电机数据丢失 | | 0x3010 | 电机失能 | | 0x3011 | 电机故障 | | 0x3009 | 电机角度超限 | | 0x3007 | 状态机切换失败 | | 0x3013 | 速度命令过大 | **备注** 仅在站立状态下切入,移动中不可切入该状态 退出双腿站立状态需调用cancelTwoLegStand(),不响应其他接口 通过参数可控制狗按指定速度运动。 此特技功能专为媒体展示、产品演示等特殊场景设计。 **高频次使用此功能将显著加速电机、关节等核心部件的磨损,从而可能导致产品性能下降或缩短使用寿命。** 请务必谨慎使用。 --- 4.1.12 退出双腿站立 --------------------------------------------- **函数原型** ```cpp cancelTwoLegStand() ``` **功能概述** 控制机器狗退出双腿站立 **参数说明** 无 **返回值** 无 **备注** 机器狗退出双腿站立状态,机器狗双腿站立状态下切入 --- 4.1.13 姿态控制 --------------------------------------------- **函数原型** ```cpp attitudeControl(float roll_vel, float pitch_vel, float yaw_vel, float height_vel) ``` **功能概述** 控制机器狗原地扭动和身体高度变化 **参数说明** | 参数名 | 类型 | 说明 | 选项 | 备注 | |--------|------|------|---------|---------| | roll_vel | float | 绕X轴角速度 | 必选项 | 不进行控制则传入0,范围(-0.5rad/s~0.5rad/s) | | pitch_vel | float | 绕Y轴角速度 | 必选项 | 不进行控制则传入0,范围(-0.5rad/s~0.5rad/s) | | yaw_vel | float | 绕Z轴角速度 | 必选项 | 不进行控制则传入0,范围(-0.5rad/s~0.5rad/s) | | height_vel | float | 垂直高度速度 | 必选项 | 不进行控制则传入0,范围(-0.5m/s-0.5m/s) | **返回值类型:uint32_t** | 返回值 | 说明 | |------|------| | 0 | 进入状态正常 | | 0x3012 | 电机数据丢失 | | 0x3010 | 电机失能 | | 0x3011 | 电机故障 | | 0x3009 | 电机角度超限 | | 0x3007 | 状态机切换失败 | | 0x3013 | 速度命令过大 | **备注** 机器狗站立状态下切入,控制狗按指定速度原地扭动,身体高度变化。 --- 4.1.14 获取姿态四元数 --------------------------------------------- **函数原型** ```cpp getQuaternion() ``` **功能概述** 获取机器狗当前姿态四元数 **参数说明** 无 **返回值类型:vector** | 返回值 | 说明 | |------|------| | [w, x, y, z] | 包含4个元素的向量,分别对应四元数的四个分量 | **备注** 机器狗朝前为X,左侧为Y,垂直向上为Z --- 4.1.15 获取姿态欧拉角 --------------------------------------------- **函数原型** ```cpp getRPY() ``` **功能概述** 获取机器狗当前姿态的欧拉角(滚转角、俯仰角、偏航角) **参数说明** 无 **返回值类型:vector** | 返回值 | 说明 | |------|------| | [roll, pitch, yaw] | 包含 3 个元素的向量,单位为弧度(rad),分别对应绕 X、Y、Z 轴的旋转角 | **备注** 机器狗朝前为X,左侧为Y,垂直向上为Z --- 4.1.16 获取加速度 --------------------------------------------- **函数原型** ```cpp getBodyAcc() ``` **功能概述** 获取机器狗身体的加速度数据(机体坐标系) **参数说明** 无 **返回值类型:vector** | 返回值 | 说明 | |------|------| | [ax, ay, az] | 包含 3 个元素的向量,单位为 m/s²,分别对应 X、Y、Z 轴方向的加速度 | **备注** 机器狗朝前为X,左侧为Y,垂直向上为Z --- 4.1.17 获取角速度 --------------------------------------------- **函数原型** ```cpp getBodyGyro() ``` **功能概述** 获取机器狗身体的角速度数据(机体坐标系) **参数说明** 无 **返回值类型:vector** | 返回值 | 说明 | |------|------| | [gx, gy, gz] | 包含 3 个元素的向量,单位为 rad/s,分别对应 X、Y、Z 轴方向的角速度 | **备注** 机器狗朝前为X,左侧为Y,垂直向上为Z --- 4.1.18 获取原点坐标系位置 --------------------------------------------- **函数原型** ```cpp getPosition() ``` **功能概述** 获取机器狗在上电原点坐标系中的位置坐标 **参数说明** 无 **返回值类型:vector** | 返回值 | 说明 | |------|------| | [x, y, z] | 包含 3 个元素的向量,单位为米(m),表示当前位置 | **备注** 机器狗朝前为X,左侧为Y,垂直向上为Z --- 4.1.19 获取原点坐标系速度 --------------------------------------------- **函数原型** ```cpp getWorldVelocity() ``` **功能概述** 获取机器狗在上电原点坐标系中的移动速度 **参数说明** 无 **返回值类型:vector** | 返回值 | 说明 | |------|------| | [vx, vy, vz] | 包含 3 个元素的向量,单位为米/秒(m/s),分别对应上电原点坐标系 X、Y、Z 轴方向的速度 | **备注** 机器狗朝前为X,左侧为Y,垂直向上为Z --- 4.1.20 获取自身移动速度 --------------------------------------------- **函数原型** ```cpp getBodyVelocity() ``` **功能概述** 获取机器狗在机体坐标系中的移动速度 **参数说明** 无 **返回值类型:vector** | 返回值 | 说明 | |------|------| | [vx, vy, vz] | 包含 3 个元素的向量,单位为 m/s,分别对应机体坐标系 X、Y、Z 轴方向的速度 | **备注** 机器狗朝前为X,左侧为Y,垂直向上为Z --- 4.1.21 获取电量 --------------------------------------------- **函数原型** ```cpp getBatteryPower() ``` **功能概述** 获取机器狗电量 **参数说明** 无 **返回值类型:uint32_t** | 返回值 | 说明 | |------|------| | 0-100 | 范围: 0-100 | **备注** 返回值范围 0-100, 0为无电, 100为满电 --- 4.1.22 获取控制模式 --------------------------------------------- **函数原型** ```cpp getCurrentCtrlmode() ``` **功能概述** 获取机器狗当前控制模式 **参数说明** 无 **返回值类型:uint32_t** | 返回值 | 说明 | |------|------| | 0 | 设备趴下,电机进入阻尼状态 | | 1 | 站立状态/打招呼状态 | | 10 | 设备趴下,短时间后电机进入自由状态 | | 18 | 移动状态 | | 21 | 动作状态(姿态模式、跳跃模式、双腿站立等) | | 51 | 趴下状态 | **备注** 返回的状态为最后一次设备执行的状态,若执行动作后没有收到移动指令,则返回的永远是动作状态。 --- 4.1.23 获取Abad关节角度 --------------------------------------------- **函数原型** ```cpp getLegAbadJoint() ``` **功能概述** 获取各条腿的髋关节外展 / 内收关节(Abad Joint)的当前角度 **参数说明** 无 **返回值类型:vector** | 返回值 | 说明 | |------|------| | [FR, FL, RR, RL] | 包含 4 个元素的向量,分别对应右前、左前、右后、左后的 Abad 关节角度(单位:rad) | **备注** 单位rad,机器狗身体机器狗朝前为X,左侧为Y,垂直向上为Z --- 4.1.24 获取Hip关节角度 --------------------------------------------- **函数原型** ```cpp getLegHipJoint() ``` **功能概述** 获取各条腿的髋关节俯仰关节(Hip Joint)的当前角度 **参数说明** 无 **返回值类型:vector** | 返回值 | 说明 | |------|------| | [FR, FL, RR, RL] | 包含 4 个元素的向量,分别对应右前、左前、右后、左后的 Hip 关节角度(单位:rad) | **备注** 单位rad,机器狗身体机器狗朝前为X,左侧为Y,垂直向上为Z --- 4.1.25 获取Knee关节角度 --------------------------------------------- **函数原型** ```cpp getLegKneeJoint() ``` **功能概述** 获取各条腿的膝关节(Knee Joint)的当前角度 **参数说明** 无 **返回值类型:vector** | 返回值 | 说明 | |------|------| | [FR, FL, RR, RL] | 包含 4 个元素的向量,分别对应右前、左前、右后、左后的 Knee 关节角度(单位:rad) | **备注** 单位rad,机器狗身体机器狗朝前为X,左侧为Y,垂直向上为Z --- 4.1.26 获取Abad关节的角速度 --------------------------------------------- **函数原型** ```cpp getLegAbadJointVel() ``` **功能概述** 获取各条腿 Abad 关节的当前角速度 **参数说明** 无 **返回值类型:vector** | 返回值 | 说明 | |------|------| | [FR, FL, RR, RL] | 包含 4 个元素的向量,单位为 rad/s,分别对应右前、左前、右后、左后的关节角度 | **备注** 单位rad/s,机器狗身体机器狗朝前为X,左侧为Y,垂直向上为Z --- 4.1.27 获取Hip关节角速度 --------------------------------------------- **函数原型** ```cpp getLegHipJointVel() ``` **功能概述** 获取各条腿 Hip 关节的当前角速度 **参数说明** 无 **返回值类型:vector** | 返回值 | 说明 | |------|------| | [FR, FL, RR, RL] | 包含 4 个元素的向量,单位为 rad/s,分别对应右前、左前、右后、左后的节角度 | **备注** 单位rad/s,机器狗身体机器狗朝前为X,左侧为Y,垂直向上为Z --- 4.1.28 获取Knee关节角速度 --------------------------------------------- **函数原型** ```cpp getLegKneeJointVel() ``` **功能概述** 获取各条腿 Knee 关节的当前角速度 **参数说明** 无 **返回值类型:vector** | 返回值 | 说明 | |------|------| | [FR, FL, RR, RL] | 包含 4 个元素的向量,单位为 rad/s,分别对应右前、左前、右后、左后的关节角度 | **备注** 单位rad/s,机器狗身体机器狗朝前为X,左侧为Y,垂直向上为Z --- 4.1.29 获取Abad关节扭矩 --------------------------------------------- **函数原型** ```cpp getLegAbadJointTorque() ``` **功能概述** 获取各条腿 Abad 关节的当前输出扭矩 **参数说明** 无 **返回值类型:vector** | 返回值 | 说明 | |------|------| | [FR, FL, RR, RL] | 包含 4 个元素的向量,单位通常为 N・m,对应顺序同关节扭矩 | **备注** 单位通常为 N・m,分别对应右前、左前、右后、左后的 Knee 关节扭矩 --- 4.1.30 获取相Hip关节扭矩 --------------------------------------------- **函数原型** ```cpp getLegHipJointTorque() ``` **功能概述** 获取各条腿 Hip 关节的当前输出扭矩 **参数说明** 无 **返回值类型:vector** | 返回值 | 说明 | |------|------| | [FR, FL, RR, RL] | 包含 4 个元素的向量,单位通常为 N・m,对应顺序同关节扭矩 | **备注** 单位通常为 N・m,分别对应右前、左前、右后、左后的 Knee 关节扭矩 --- 4.1.31 获取Knee关节扭矩 --------------------------------------------- **函数原型** ```cpp getLegKneeJointTorque() ``` **功能概述** 获取各条腿 Knee 关节的当前输出扭矩 **参数说明** 无 **返回值类型:vector** | 返回值 | 说明 | |------|------| | [FR, FL, RR, RL] | 包含 4 个元素的向量,单位通常为 N・m,对应顺序同关节扭矩 | **备注** 单位通常为 N・m,分别对应右前、左前、右后、左后的 Knee 关节扭矩