105 lines
3.5 KiB
C
105 lines
3.5 KiB
C
#ifndef TURNTAABLE_H
|
||
#define TURNTAABLE_H
|
||
|
||
|
||
#include "app_power.h"
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
|
||
//编码器协议头
|
||
|
||
#define ENCODER_HEADER 0x1A
|
||
#define ENCODER_MAX_COUNTS 0x1FFFFF// 最大位21位
|
||
|
||
#define ENCODER_PORT 2011
|
||
|
||
|
||
//转台电机
|
||
#define PITCH_MOTOR_CANID 0x7D
|
||
#define RIGHT_MOTOR_CANID 0x7E
|
||
#define TURN_MOTOR_CANID 0x7F
|
||
|
||
|
||
#define PITCH_MOTOR_RxCANID (0x20000FD + (PITCH_MOTOR_CANID << 8)) // 0x2007DFD
|
||
#define RIGHT_MOTOR_RxCANID (0x20000FD + (RIGHT_MOTOR_CANID << 8)) // 0x2007EFD
|
||
#define TURN_MOTOR_RxCANID (0x20000FD + (TURN_MOTOR_CANID << 8)) // 0x2007FFD
|
||
|
||
|
||
|
||
// 力矩量程定义 (对应Byte4~5: 当前力矩)
|
||
#define TORQUE_MIN -120.0f // 最小力矩: -120 Nm
|
||
#define TORQUE_MAX 120.0f // 最大力矩: 120 Nm
|
||
|
||
#define ZERO_VAULE 0x0080 // 32768,需要高位在前
|
||
|
||
#define REMOTE_ZERO 1022
|
||
|
||
|
||
|
||
typedef struct {
|
||
float r; // 径向距离
|
||
float theta; // 极角(与Z轴的夹角,弧度制,范围[0, π])
|
||
float phi; // 方位角(XY平面内与X轴的夹角,弧度制,范围[-π, π])
|
||
} SphericalCoordinate;
|
||
|
||
|
||
|
||
typedef struct TurnableData
|
||
{
|
||
uint8_t turnable_state;
|
||
PowerState current_state; // 当前电源状态
|
||
|
||
float position_x; //转台相对位置x
|
||
float position_y; //转台相对位置y
|
||
float position_z; //转台相对位置z
|
||
|
||
float desired_pitch_speed; // 期望俯仰位置
|
||
float desired_horizontal_speed; // 期望水平位置
|
||
float desired_pitch_position; // 期望俯仰位置
|
||
float desired_horizontal_position; // 期望水平位置
|
||
|
||
float left_motor_speed; // 当前左电机速度
|
||
float right_motor_speed; // 当前右电机速度
|
||
float speed; // 当前转盘速度
|
||
float pitch_position; // 当前俯仰位置
|
||
float horizontal_position; // 当前水平位置
|
||
|
||
float max_speed; // 最大速度
|
||
float out_left_motor_ampere; // 输出左电机电流
|
||
float out_right_motor_ampere; // 输出右电机电流
|
||
float out_pitch_motor_ampere; // 输出右电机电流
|
||
|
||
float out_left_motor_ampere_last; // 输出左电机电流
|
||
float out_right_motor_ampere_last; // 输出右电机电流
|
||
float out_pitch_motor_ampere_last; // 输出右电机电流
|
||
|
||
float out_left_motor_ampere_limit; // 输出左电机电流限制值
|
||
float out_right_motor_ampere_limit; // 输出右电机电流限制值
|
||
float out_pitch_motor_ampere_limit; // 输出右电机电流限制值
|
||
|
||
Timer turnable_timer; // 定时器
|
||
Timer turnable_timer1; // 定时器
|
||
Timer turnable_timer2; // 定时器
|
||
Timer turnable_timer3; // 定时器
|
||
|
||
uint8_t turnable_cnt;
|
||
|
||
float max_ampere; // 最大电流限制
|
||
|
||
float min_pitch_postion; // 位置信息
|
||
float max_pitch_postion; // 位置信息
|
||
} TurnableData;
|
||
|
||
|
||
|
||
void turnableInit();
|
||
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
|
||
#endif // TURNTAABLE_H
|