FIX: fixed the following issues
1.Optimized the flight controller forced landing sample. 2.Fixed the exception log of duplicate subscription data on M300 RTK payload port. 3.Fixed data subscription gimbal angle data definition error on M300 RTK 4.Fixed an issue where occasionally getting the camera aperture parameter is zero. Signed-off-by: DJI-Martin <DJI-Martin@dji.com>
This commit is contained in:
@ -1153,18 +1153,16 @@ typedef struct HomeLocationData {
|
|||||||
} T_DjiFcSubscriptionHomePointInfo; // pack(1)
|
} T_DjiFcSubscriptionHomePointInfo; // pack(1)
|
||||||
|
|
||||||
typedef struct GimbalSingleData {
|
typedef struct GimbalSingleData {
|
||||||
dji_f32_t pitch;
|
|
||||||
dji_f32_t roll;
|
dji_f32_t roll;
|
||||||
|
dji_f32_t pitch;
|
||||||
dji_f32_t yaw;
|
dji_f32_t yaw;
|
||||||
uint32_t status;
|
} GimbalAnglesData;
|
||||||
uint8_t mode;
|
|
||||||
} GimbalSingleData;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Struct for the topic DJI_FC_SUBSCRIPTION_TOPIC_THREE_GIMBAL_DATA. Used in M300
|
* @brief Struct for the topic DJI_FC_SUBSCRIPTION_TOPIC_THREE_GIMBAL_DATA. Used in M300
|
||||||
*/
|
*/
|
||||||
typedef struct GimbalThreeData {
|
typedef struct GimbalThreeData {
|
||||||
GimbalSingleData gbData[3];
|
GimbalAnglesData anglesData[3];
|
||||||
} T_DjiFcSubscriptionThreeGimbalData;
|
} T_DjiFcSubscriptionThreeGimbalData;
|
||||||
|
|
||||||
#pragma pack()
|
#pragma pack()
|
||||||
|
@ -37,7 +37,7 @@ extern "C" {
|
|||||||
#define DJI_VERSION_MINOR 3 /*!< DJI SDK minor version num, when add functionality in a backwards compatible manner changes. Range from 0 to 99. */
|
#define DJI_VERSION_MINOR 3 /*!< DJI SDK minor version num, when add functionality in a backwards compatible manner changes. Range from 0 to 99. */
|
||||||
#define DJI_VERSION_MODIFY 0 /*!< DJI SDK modify version num, when have backwards compatible bug fixes changes. Range from 0 to 99. */
|
#define DJI_VERSION_MODIFY 0 /*!< DJI SDK modify version num, when have backwards compatible bug fixes changes. Range from 0 to 99. */
|
||||||
#define DJI_VERSION_BETA 0 /*!< DJI SDK version beta info, release version will be 0, when beta version release changes. Range from 0 to 255. */
|
#define DJI_VERSION_BETA 0 /*!< DJI SDK version beta info, release version will be 0, when beta version release changes. Range from 0 to 255. */
|
||||||
#define DJI_VERSION_BUILD 1695 /*!< DJI SDK version build info, when jenkins trigger build changes. Range from 0 to 65535. */
|
#define DJI_VERSION_BUILD 1697 /*!< DJI SDK version build info, when jenkins trigger build changes. Range from 0 to 65535. */
|
||||||
|
|
||||||
/* Exported types ------------------------------------------------------------*/
|
/* Exported types ------------------------------------------------------------*/
|
||||||
|
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -68,7 +68,7 @@ static const T_DjiTestFlightControlDisplayModeStr s_flightControlDisplayModeStr[
|
|||||||
static uint8_t DjiTest_FlightControlGetDisplayModeIndex(E_DjiFcSubscriptionDisplayMode displayMode);
|
static uint8_t DjiTest_FlightControlGetDisplayModeIndex(E_DjiFcSubscriptionDisplayMode displayMode);
|
||||||
static T_DjiFcSubscriptionFlightStatus DjiTest_FlightControlGetValueOfFlightStatus(void);
|
static T_DjiFcSubscriptionFlightStatus DjiTest_FlightControlGetValueOfFlightStatus(void);
|
||||||
static T_DjiFcSubscriptionDisplaymode DjiTest_FlightControlGetValueOfDisplayMode(void);
|
static T_DjiFcSubscriptionDisplaymode DjiTest_FlightControlGetValueOfDisplayMode(void);
|
||||||
static T_DjiFcSubscriptionAvoidData DjiTest_FlightControlGetValueOfAvoidData(void);
|
static T_DjiFcSubscriptionHeightFusion DjiTest_FlightControlGetValueOfHeightFusion(void);
|
||||||
static T_DjiFcSubscriptionQuaternion DjiTest_FlightControlGetValueOfQuaternion(void);
|
static T_DjiFcSubscriptionQuaternion DjiTest_FlightControlGetValueOfQuaternion(void);
|
||||||
static T_DjiFcSubscriptionPositionFused DjiTest_FlightControlGetValueOfPositionFused(void);
|
static T_DjiFcSubscriptionPositionFused DjiTest_FlightControlGetValueOfPositionFused(void);
|
||||||
static dji_f32_t DjiTest_FlightControlGetValueOfRelativeHeight(void);
|
static dji_f32_t DjiTest_FlightControlGetValueOfRelativeHeight(void);
|
||||||
@ -92,12 +92,11 @@ static void DjiTest_FlightControlHorizCommandLimit(dji_f32_t speedFactor, dji_f3
|
|||||||
static dji_f32_t DjiTest_FlightControlVectorNorm(T_DjiTestFlightControlVector3f v);
|
static dji_f32_t DjiTest_FlightControlVectorNorm(T_DjiTestFlightControlVector3f v);
|
||||||
static T_DjiReturnCode
|
static T_DjiReturnCode
|
||||||
DjiTest_FlightControlJoystickCtrlAuthSwitchEventCallback(T_DjiFlightControllerJoystickCtrlAuthorityEventInfo eventData);
|
DjiTest_FlightControlJoystickCtrlAuthSwitchEventCallback(T_DjiFlightControllerJoystickCtrlAuthorityEventInfo eventData);
|
||||||
static bool
|
static bool DjiTest_FlightControlMoveByPositionOffset(T_DjiTestFlightControlVector3f offsetDesired,
|
||||||
DjiTest_FlightControlMoveByPositionOffset(T_DjiTestFlightControlVector3f offsetDesired, float yawDesiredInDeg,
|
float yawDesiredInDeg,
|
||||||
float posThresholdInM,
|
float posThresholdInM,
|
||||||
float yawThresholdInDeg);
|
float yawThresholdInDeg);
|
||||||
static void
|
static void DjiTest_FlightControlVelocityAndYawRateCtrl(T_DjiTestFlightControlVector3f offsetDesired, float yawRate,
|
||||||
DjiTest_FlightControlVelocityAndYawRateCtrl(T_DjiTestFlightControlVector3f offsetDesired, float yawRate,
|
|
||||||
uint32_t timeMs);
|
uint32_t timeMs);
|
||||||
static T_DjiReturnCode DjiTest_FlightControlInit(void);
|
static T_DjiReturnCode DjiTest_FlightControlInit(void);
|
||||||
static T_DjiReturnCode DjiTest_FlightControlDeInit(void);
|
static T_DjiReturnCode DjiTest_FlightControlDeInit(void);
|
||||||
@ -174,7 +173,7 @@ T_DjiReturnCode DjiTest_FlightControlInit(void)
|
|||||||
return returnCode;
|
return returnCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
returnCode = DjiFcSubscription_SubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_AVOID_DATA,
|
returnCode = DjiFcSubscription_SubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_HEIGHT_FUSION,
|
||||||
DJI_DATA_SUBSCRIPTION_TOPIC_10_HZ,
|
DJI_DATA_SUBSCRIPTION_TOPIC_10_HZ,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
@ -965,26 +964,25 @@ T_DjiFcSubscriptionDisplaymode DjiTest_FlightControlGetValueOfDisplayMode(void)
|
|||||||
return displayMode;
|
return displayMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
T_DjiFcSubscriptionAvoidData DjiTest_FlightControlGetValueOfAvoidData(void)
|
T_DjiFcSubscriptionHeightFusion DjiTest_FlightControlGetValueOfHeightFusion(void)
|
||||||
{
|
{
|
||||||
T_DjiReturnCode djiStat;
|
T_DjiReturnCode djiStat;
|
||||||
T_DjiFcSubscriptionAvoidData avoidData = {0};
|
T_DjiFcSubscriptionHeightFusion heightFusion = {0};
|
||||||
T_DjiDataTimestamp avoidDataTimestamp = {0};
|
T_DjiDataTimestamp timestamp = {0};
|
||||||
|
|
||||||
djiStat = DjiFcSubscription_GetLatestValueOfTopic(DJI_FC_SUBSCRIPTION_TOPIC_AVOID_DATA,
|
djiStat = DjiFcSubscription_GetLatestValueOfTopic(DJI_FC_SUBSCRIPTION_TOPIC_HEIGHT_FUSION,
|
||||||
(uint8_t *) &avoidData,
|
(uint8_t *) &heightFusion,
|
||||||
sizeof(T_DjiFcSubscriptionAvoidData),
|
sizeof(T_DjiFcSubscriptionHeightFusion),
|
||||||
&avoidDataTimestamp);
|
×tamp);
|
||||||
|
|
||||||
if (djiStat != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
|
if (djiStat != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
|
||||||
USER_LOG_ERROR("Get value of topic avoid data error, error code: 0x%08X", djiStat);
|
USER_LOG_ERROR("Get value of topic height fusion error, error code: 0x%08X", djiStat);
|
||||||
} else {
|
} else {
|
||||||
USER_LOG_DEBUG("Timestamp: millisecond %u microsecond %u.", avoidDataTimestamp.millisecond,
|
USER_LOG_DEBUG("Timestamp: millisecond %u microsecond %u.", timestamp.millisecond, timestamp.microsecond);
|
||||||
avoidDataTimestamp.microsecond);
|
USER_LOG_DEBUG("Relative height fusion is %f m", heightFusion);
|
||||||
USER_LOG_DEBUG("Avoid downwards distance is %f m", avoidData.down);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return avoidData;
|
return heightFusion;
|
||||||
}
|
}
|
||||||
|
|
||||||
T_DjiFcSubscriptionQuaternion DjiTest_FlightControlGetValueOfQuaternion(void)
|
T_DjiFcSubscriptionQuaternion DjiTest_FlightControlGetValueOfQuaternion(void)
|
||||||
@ -1211,6 +1209,12 @@ bool DjiTest_FlightControlMonitoredLanding(void)
|
|||||||
bool DjiTest_FlightControlGoHomeAndConfirmLanding(void)
|
bool DjiTest_FlightControlGoHomeAndConfirmLanding(void)
|
||||||
{
|
{
|
||||||
T_DjiReturnCode djiStat;
|
T_DjiReturnCode djiStat;
|
||||||
|
T_DjiAircraftInfoBaseInfo aircraftInfoBaseInfo;
|
||||||
|
|
||||||
|
djiStat = DjiAircraftInfo_GetBaseInfo(&aircraftInfoBaseInfo);
|
||||||
|
if (djiStat != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
|
||||||
|
USER_LOG_ERROR("get aircraft base info error");
|
||||||
|
}
|
||||||
|
|
||||||
/*! Step 1: Start go home */
|
/*! Step 1: Start go home */
|
||||||
USER_LOG_INFO("Start go home action");
|
USER_LOG_INFO("Start go home action");
|
||||||
@ -1237,12 +1241,18 @@ bool DjiTest_FlightControlGoHomeAndConfirmLanding(void)
|
|||||||
} else {
|
} else {
|
||||||
while (DjiTest_FlightControlGetValueOfDisplayMode() == DJI_FC_SUBSCRIPTION_DISPLAY_MODE_AUTO_LANDING &&
|
while (DjiTest_FlightControlGetValueOfDisplayMode() == DJI_FC_SUBSCRIPTION_DISPLAY_MODE_AUTO_LANDING &&
|
||||||
DjiTest_FlightControlGetValueOfFlightStatus() == DJI_FC_SUBSCRIPTION_FLIGHT_STATUS_IN_AIR) {
|
DjiTest_FlightControlGetValueOfFlightStatus() == DJI_FC_SUBSCRIPTION_FLIGHT_STATUS_IN_AIR) {
|
||||||
T_DjiFcSubscriptionAvoidData avoidData = DjiTest_FlightControlGetValueOfAvoidData();
|
T_DjiFcSubscriptionHeightFusion heightFusion = DjiTest_FlightControlGetValueOfHeightFusion();
|
||||||
s_osalHandler->TaskSleepMs(1000);
|
s_osalHandler->TaskSleepMs(1000);
|
||||||
if (((dji_f64_t) 0.65 < avoidData.down && avoidData.down < (dji_f64_t) 0.75) &&
|
if (aircraftInfoBaseInfo.aircraftType == DJI_AIRCRAFT_TYPE_M3E ||
|
||||||
avoidData.downHealth == 1) {
|
aircraftInfoBaseInfo.aircraftType == DJI_AIRCRAFT_TYPE_M3T) {
|
||||||
|
if ((dji_f64_t) 0.45 < heightFusion && heightFusion < (dji_f64_t) 0.55) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
if ((dji_f64_t) 0.65 < heightFusion && heightFusion < (dji_f64_t) 0.75) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1309,8 +1319,7 @@ DjiTest_FlightControlLocalOffsetFromGpsAndFusedHeightOffset(const T_DjiFcSubscri
|
|||||||
return deltaNed;
|
return deltaNed;
|
||||||
}
|
}
|
||||||
|
|
||||||
T_DjiTestFlightControlVector3f
|
T_DjiTestFlightControlVector3f DjiTest_FlightControlVector3FSub(const T_DjiTestFlightControlVector3f vectorA,
|
||||||
DjiTest_FlightControlVector3FSub(const T_DjiTestFlightControlVector3f vectorA,
|
|
||||||
const T_DjiTestFlightControlVector3f vectorB)
|
const T_DjiTestFlightControlVector3f vectorB)
|
||||||
{
|
{
|
||||||
T_DjiTestFlightControlVector3f result;
|
T_DjiTestFlightControlVector3f result;
|
||||||
|
@ -389,10 +389,10 @@ static void *UserGimbal_Task(void *arg)
|
|||||||
|
|
||||||
djiStat = DjiFcSubscription_SubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_QUATERNION, DJI_DATA_SUBSCRIPTION_TOPIC_10_HZ,
|
djiStat = DjiFcSubscription_SubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_QUATERNION, DJI_DATA_SUBSCRIPTION_TOPIC_10_HZ,
|
||||||
NULL);
|
NULL);
|
||||||
if (djiStat != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
|
if (djiStat == DJI_ERROR_SUBSCRIPTION_MODULE_CODE_TOPIC_DUPLICATE) {
|
||||||
USER_LOG_ERROR("Subscribe topic quaternion error.");
|
USER_LOG_DEBUG("Subscribe topic quaternion duplicate.");
|
||||||
} else {
|
} else {
|
||||||
USER_LOG_DEBUG("Subscribe topic quaternion success.");
|
USER_LOG_ERROR("Subscribe topic quaternion error.");
|
||||||
}
|
}
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
|
@ -565,7 +565,7 @@ static T_DjiReturnCode SetVolume(uint8_t volume)
|
|||||||
USER_LOG_ERROR("Set widget speaker volume error: %d", ret);
|
USER_LOG_ERROR("Set widget speaker volume error: %d", ret);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
USER_LOG_WARN("No audio device found, please add audio device and init speaker volume here!!!");
|
USER_LOG_WARN("No audio device found, please add audio device and init speaker volume here.");
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
USER_LOG_WARN("No audio device found, please add audio device and init speaker volume here!!!");
|
USER_LOG_WARN("No audio device found, please add audio device and init speaker volume here!!!");
|
||||||
|
@ -62,6 +62,8 @@ extern "C" {
|
|||||||
|
|
||||||
#define CONFIG_MODULE_SAMPLE_UPGRADE_ON
|
#define CONFIG_MODULE_SAMPLE_UPGRADE_ON
|
||||||
|
|
||||||
|
#define CONFIG_MODULE_SAMPLE_FC_SUBSCRIPTION_ON
|
||||||
|
|
||||||
/*!< Attention: This function needs to be used together with mobile sdk mop sample.
|
/*!< Attention: This function needs to be used together with mobile sdk mop sample.
|
||||||
* */
|
* */
|
||||||
//#define CONFIG_MODULE_SAMPLE_MOP_CHANNEL_ON
|
//#define CONFIG_MODULE_SAMPLE_MOP_CHANNEL_ON
|
||||||
|
Reference in New Issue
Block a user