Skip to main content

飞行控制

飞行控制相关功能的头文件为 uav_flight_control.h,本文档描述了 uav_flight_control.h 文件中结构体和函数原型的关键信息和使用方法。

目录

  • 宏定义、枚举与结构体
    typedef enum E_UAVFlithtControlMode
    typedef enum E_UAVFlightControlRCLostAction
    typedef enum E_UAVFlightControlEmergencyStopMotor
    typedef enum E_UAVHeadingMode
    typedef enum E_UAVObstacleMode
    typedef struct T_UAVFlightControllerRidInfo
    typedef struct T_UAVFlightControlPos
    typedef struct T_UAVFlightControlSpeed
    typedef struct T_UAVFlightControllerHomeLocation
    typedef uint16_t E_UAVFlightControllerGoHomeAltitude
    typedef struct T_UAVFlightControllerGeneralInfo

  • 函数原型
    function UAV_FlightControl_Init
    function UAV_FlightControl_Deinit
    function UAV_FlightControl_SetControlMode
    function UAV_FlightControl_GetControlMode
    function UAV_FlightControl_POSControl
    function UAV_FlightControl_SpeedControl
    function UAV_FlightControl_SetRCLostAction
    function UAV_FlightControl_GetRCLostAction
    function UAV_FlightControl_TurnOnMotors
    function UAV_FlightControl_TurnOffMotors
    function UAV_FlightControl_EmergencyStopMotor
    function UAV_FlightControl_StartTakeoff
    function UAV_FlightControl_StartLanding
    function UAV_FlightControl_CancelLanding
    function UAV_FlightControl_StartForceLanding
    function UAV_FlightControl_SetHomeLocationUsingGPSCoordinates
    function UAV_FlightControl_SetHomeLocationUsingCurrentAircraftLocation
    function UAV_FlightControl_SetGoHomeAltitude
    function UAV_FlightControl_GetGoHomeAltitude
    function UAV_FlightControl_StartGoHome
    function UAV_FlightControl_CancelGoHome
    function UAV_FlightControl_GetGeneralInfo

目宏定义、枚举与结构体

typedef enum E_UAVFlithtControlMode

typedef enum {
UAV_FLIGHTCONTROL_MODE_UNKNOWN = 0,
UAV_FLIGHTCONTROL_MODE_POS_CTL = 1,
UAV_FLIGHTCONTROL_MODE_SPEED_CTL = 2,
}E_UAVFlithtControlMode;

typedef enum E_UAVFlightControlRCLostAction

无人机在失去遥控信号时的动作。

typedef enum {
UAV_FLIGHTCONTROL_RC_LOST_ACTION_HOVER = 0, /*!< Aircraft will execute hover cation when rc is lost. */
UAV_FLIGHTCONTROL_RC_LOST_ACTION_LANDING = 1, /*!< Aircraft will execute land cation when rc is lost. */
UAV_FLIGHTCONTROL_RC_LOST_ACTION_GOHOME = 2, /*!< Aircraft will execute go-home cation when rc is lost. */
}E_UAVFlightControlRCLostAction;

typedef enum E_UAVFlightControlEmergencyStopMotor

  • 功能: 启用/禁用紧急停机功能枚举。

    注意:

    • 在空中启用紧急停机功能非常危险,可能导致无人机坠毁!
typedef enum {
UAV_FLIGHTCONTROL_ENABLE_EMERGENCY_STOP_MOTOR = 1, /*!< Execute emergency-stop-motor action */
}E_UAVFlightControlEmergencyStopMotor;

typedef enum E_UAVHeadingMode

typedef enum {
UAV_HEADING_MODE_NONE = 0, /*!< No heading mode. */
UAV_HEADING_MODE_ALONG = 1, /*!< Along the waypoint line direction. */
UAV_HEADING_MODE_BY_PSDK = 2,/*!< Control the heading by psdk from user. */
}E_UAVHeadingMode;

typedef enum E_UAVObstacleMode

typedef enum {
UAV_OBSTACLE_MODE_NONE = 0, /*!< No obstacle avoidance. */
UAV_OBSTACLE_MODE_LOITER = 1, /*!< Loiter mode. */
UAV_OBSTACLE_MODE_OBS = 2, /*!< Obstacle avoidance mode. */
}E_UAVObstacleMode;

typedef struct T_UAVFlightControllerRidInfo

typedef struct {
double latitude; /*!< Specifies latitude, unit: rad */
double longitude; /*!< Specifies longitude, unit: rad */
float altitude; /*!< Specifies altitude, unit: m */
}T_UAVFlightControllerRidInfo;

typedef struct T_UAVFlightControlPos

typedef struct {
float yaw; /*!< Specifies yaw angle. */
double latitude; /*!< Specifies latitude. */
double longitude; /*!< Specifies longitude. */
double altitude; /*!< Specifies altitude. */
int32_t obstacle_mode; /*!< Specifies obstacle mode, see E_UAVObstacleMode. */
}T_UAVFlightControlPos;

typedef struct T_UAVFlightControlSpeed

typedef struct {
float x; /*!< Specifies x coordinate. */
float y; /*!< Specifies y coordinate. */
float z; /*!< Specifies z coordinate. */
float yaw; /*!< Specifies yaw angle. */
int32_t heading_mode; /*!< Specifies heading mode, see E_UAVHeadingMode. */
int32_t obstacle_mode; /*!< Specifies obstacle mode, see E_UAVObstacleMode. */
}T_UAVFlightControlSpeed;

typedef struct T_UAVFlightControllerHomeLocation

typedef struct {
double latitude; /*!< unit: rad */
double longitude; /*!< unit: rad */
} T_UAVFlightControllerHomeLocation; // pack(1)

typedef uint16_t E_UAVFlightControllerGoHomeAltitud

typedef uint16_t E_UAVFlightControllerGoHomeAltitude; /*!< Unit:meter, range 20~500 */

typedef struct T_UAVFlightControllerGeneralInfo

typedef struct {
char serialNum[32];
} T_UAVFlightControllerGeneralInfo;

函数原型

function UAV_FlightControl_Init

  • 功能: 飞行控制初始化请求。
extern T_UAVReturnCode UAV_FlightControl_Init(T_UAVFlightControllerRidInfo ridInfo);

function UAV_FlightControl_Deinit

  • 功能: 飞行控制注销请求。
extern void UAV_FlightControl_Deinit(void);

function UAV_FlightControl_SetControlMode

  • 功能: 设置飞行控制模式。
extern T_UAVReturnCode UAV_FlightControl_SetControlMode(E_UAVFlithtControlMode mode);

function UAV_FlightControl_GetControlMode

  • 功能: 获取飞行控制模式。
extern T_UAVReturnCode UAV_FlightControl_GetControlMode(E_UAVFlithtControlMode &mode);

function UAV_FlightControl_POSControl

  • 功能: 通过位置信息控制飞行。
extern T_UAVReturnCode UAV_FlightControl_POSControl(T_UAVFlightControlPos pos);

function UAV_FlightControl_SpeedControl

  • 功能: 通过速度信息控制飞行。
extern T_UAVReturnCode UAV_FlightControl_SpeedControl(T_UAVFlightControlSpeed speed);

function UAV_FlightControl_SetRCLostAction

注意:

  • 当遥控器和 OSDK 均失联时,此设置才生效。
extern T_UAVReturnCode UAV_FlightControl_SetRCLostAction(E_UAVFlightControlRCLostAction rcLostAction);
  • 参数
    • rcLostAction:遥控器失联时的动作(悬停/降落/返回)。

function UAV_FlightControl_GetRCLostAction

  • 功能: 获取遥控器失联动作(悬停/降落/返回)

    注意:

    • 当遥控器和 OSDK 均失联时,此设置才生效。
extern T_UAVReturnCode UAV_FlightControl_GetRCLostAction(E_UAVFlightControlRCLostAction &rcLostAction);
  • 参数
    • rcLostAction:遥控器失联时的动作(悬停/降落/返回)。

function UAV_FlightControl_TurnOnMotors

  • 功能: 无人机在地面时启动电机。
extern T_UAVReturnCode UAV_FlightControl_TurnOnMotors(void);

function UAV_FlightControl_TurnOffMotors

  • 功能: 无人机在地面时关闭电机。
extern T_UAVReturnCode UAV_FlightControl_TurnOffMotors(void);

function UAV_FlightControl_EmergencyStopMotor

  • 功能: 在任何情况下紧急停止电机。

    注意:

    • 需使用此接口发送禁用指令退出锁定电机状态。
extern T_UAVReturnCode UAV_FlightControl_EmergencyStopMotor(E_UAVFlightControlEmergencyStopMotor command, const  char debugMsg[32]);
  • 参数
    • debugMsg:将调试信息注入飞行控制固件以进行记录,有大小限制。
    • cmd:参见 E_UAVFlightControlEmergencyStopMotor 的引用。

function UAV_FlightControl_StartTakeoff

  • 功能: 当无人机在地面时请求起飞。
extern T_UAVReturnCode UAV_FlightControl_StartTakeoff(void);

function UAV_FlightControl_StartLanding

  • 功能: 当无人机在空中时请求降落。
extern T_UAVReturnCode UAV_FlightControl_StartLanding(void);

function UAV_FlightControl_CancelLanding

  • 功能: 当无人机正在降落时请求取消降落。
extern T_UAVReturnCode UAV_FlightControl_CancelLanding(void);

function UAV_FlightControl_StartForceLanding

  • 功能: 在任何情况下都强制着陆。
extern T_UAVReturnCode UAV_FlightControl_StartForceLanding(void);

function UAV_FlightControl_SetHomeLocationUsingGPSCoordinates

  • 功能: 设置自定义 GPS(非 RTK)的 home 点位置。

    注意:

    • 设置自定义起飞点失败的原因可能包括: 新的起飞点与上一个起飞点之间的距离超过 MAX_FLY_RADIUS(20km)。 开机后记录初始起飞点失败。
extern T_UAVReturnCode UAV_FlightControl_SetHomeLocationUsingGPSCoordinates(T_UAVFlightControllerHomeLocation homeLocation);

function UAV_FlightControl_SetHomeLocationUsingCurrentAircraftLocation

  • 功能: 使用当前无人机的 GPS(非 RTK)位置设置 home 点位置。

    注意:

    • 设置起飞点失败的原因可能包括: 无人机的 GPS 等级未达到记录起飞点的条件。 开机后记录初始起飞点失败。
extern T_UAVReturnCode UAV_FlightControl_SetHomeLocationUsingCurrentAircraftLocation(void);;

function UAV_FlightControl_SetGoHomeAltitude

  • 功能: 设置返航高度。

    注意:

    • 如果无人机的当前高度高于返航高度的设置值,无人机将使用当前高度返航。否则,它将爬升到返航高度的设置,然后执行返航操作。返航高度设置为 20m ~ 1500m。
extern T_UAVReturnCode UAV_FlightControl_SetGoHomeAltitude(E_UAVFlightControllerGoHomeAltitude altitude);

function UAV_FlightControl_GetGoHomeAltitude

  • 功能: 获取返航高度。
extern T_UAVReturnCode UAV_FlightControl_GetGoHomeAltitude(E_UAVFlightControllerGoHomeAltitude *altitude);

function UAV_FlightControl_StartGoHome

  • 功能: 当无人机在空中时,请求返航动作。
extern T_UAVReturnCode UAV_FlightControl_StartGoHome(void);

function UAV_FlightControl_CancelGoHome

  • 功能: 在无人机返航时,请求取消返航动作。
extern T_UAVReturnCode UAV_FlightControl_CancelGoHome(void);

function UAV_FlightControl_GetGeneralInfo

  • 功能: 获取无人机的通用信息。
extern T_UAVReturnCode UAV_FlightControl_GetGeneralInfo(T_UAVFlightControllerGeneralInfo *generalInfo);