Compare commits

...

7 Commits

Author SHA1 Message Date
Daniel Agar
1682fd5671
boards: px4_fmu-v2 disable load_mon module to save flash 2021-08-01 13:51:11 -04:00
bresch
a8572f0fdd
ECL: update to include latest bugfixes
- fix yaw spin on ground after large mag field change
- change covariance prediction for better stability
- fix yaw alignment in air for mag-less mode
- improve tilt alignment for non-static applications
- add momentum drag model
2021-08-01 12:54:15 -04:00
Daniel Agar
a299a3bbd0
sensors: populate sensors_status_imu healthy flags even in multi-EKF mode 2021-08-01 12:54:08 -04:00
Julian Oes
349dd63072
mavlink: fix offboard velocity input
This reverts the behavior for offboard velocity setpoint.

Back in v1.11, the velocity input in NED_BODY was assumed to be in the
world frame but rotated by yaw to the vehicle frame. With the current
state the frame is completely fixed to the body. While this might be
technically correct, it doesn't seem much intuitive for multicopters
and breaks the MAVSDK offboard velocity API.

So as an example, with a velocity setpoint of 5 m/s forward, the drone
would in
- v1.11: fly forward with 5 m/s
- v1.12: start to fly forward by pitching down but then descend rapidly
  as the forward velocity would translate to a setpoint in Z into the
  ground as it is pitched down.

This commit restores the behavior to what we had previously.
2021-07-22 22:09:56 -04:00
David Sidrane
6b51c6390a
Revert "nxp_fmuk66-v3:DMA Poll not needed"
This reverts commit 962f02220a851b78b3fab73038f03e06f3bb518f.
2021-07-22 22:08:18 -04:00
David Sidrane
4f7909ee8e
Revert "nxp_fmuk66-e:DMA Poll not needed"
This reverts commit 39d684958d78fc619a87ac2b130117e0bcc36a1b.
2021-07-22 22:08:11 -04:00
David Sidrane
cbb48f9af3
NuttX with Kinetis SerialPoll back in 2021-07-22 22:08:04 -04:00
8 changed files with 50 additions and 11 deletions

View File

@ -235,6 +235,25 @@ __EXPORT int board_app_initialize(uintptr_t arg)
syslog(LOG_ERR, "DMA alloc FAILED\n");
}
/* set up the serial DMA polling */
#ifdef SERIAL_HAVE_DMA
static struct hrt_call serial_dma_call;
struct timespec ts;
/*
* Poll at 1ms intervals for received bytes that have not triggered
* a DMA event.
*/
ts.tv_sec = 0;
ts.tv_nsec = 1000000;
hrt_call_every(&serial_dma_call,
ts_to_abstime(&ts),
ts_to_abstime(&ts),
(hrt_callout)kinetis_serial_dma_poll,
NULL);
#endif
/* initial LED state */
drv_led_start();
led_off(LED_RED);

View File

@ -235,6 +235,25 @@ __EXPORT int board_app_initialize(uintptr_t arg)
syslog(LOG_ERR, "DMA alloc FAILED\n");
}
/* set up the serial DMA polling */
#ifdef SERIAL_HAVE_DMA
static struct hrt_call serial_dma_call;
struct timespec ts;
/*
* Poll at 1ms intervals for received bytes that have not triggered
* a DMA event.
*/
ts.tv_sec = 0;
ts.tv_nsec = 1000000;
hrt_call_every(&serial_dma_call,
ts_to_abstime(&ts),
ts_to_abstime(&ts),
(hrt_callout)kinetis_serial_dma_poll,
NULL);
#endif
/* initial LED state */
drv_led_start();
led_off(LED_RED);

View File

@ -76,7 +76,7 @@ px4_add_board(
#gyro_fft
land_detector
#landing_target_estimator
load_mon
#load_mon
#local_position_estimator
logger
mavlink

View File

@ -48,7 +48,7 @@ px4_add_board(
#events
land_detector
landing_target_estimator
load_mon
#load_mon
#local_position_estimator
logger
mavlink

@ -1 +1 @@
Subproject commit 76bb42f3ebd902102e844084b564274bf215ec9f
Subproject commit bf660cba2af81f055002b3817c87b1f63a78fd09

@ -1 +1 @@
Subproject commit 71fc1b81612fa9b5184d5abb93b69d109e9d0e4b
Subproject commit b3fed06fe822d08d19ab1d2c2f8daf7b7d21951c

View File

@ -911,10 +911,12 @@ MavlinkReceiver::handle_message_set_position_target_local_ned(mavlink_message_t
(type_mask & POSITION_TARGET_TYPEMASK_VZ_IGNORE) ? 0.f : target_local_ned.vz
};
const matrix::Vector3f velocity_setpoint{R * velocity_body_sp};
setpoint.vx = velocity_setpoint(0);
setpoint.vy = velocity_setpoint(1);
setpoint.vz = velocity_setpoint(2);
const float yaw = matrix::Eulerf{R}(2);
setpoint.vx = cosf(yaw) * velocity_body_sp(0) - sinf(yaw) * velocity_body_sp(1);
setpoint.vy = sinf(yaw) * velocity_body_sp(0) + cosf(yaw) * velocity_body_sp(1);
setpoint.vz = velocity_body_sp(2);
} else {
setpoint.vx = NAN;

View File

@ -187,6 +187,8 @@ void VotedSensorsUpdate::imuPoll(struct sensor_combined_s &raw)
// find the best sensor
int accel_best_index = -1;
int gyro_best_index = -1;
_accel.voter.get_best(hrt_absolute_time(), &accel_best_index);
_gyro.voter.get_best(hrt_absolute_time(), &gyro_best_index);
if (!_param_sens_imu_mode.get() && ((_selection.timestamp != 0) || (_sensor_selection_sub.updated()))) {
// use sensor_selection to find best
@ -213,9 +215,6 @@ void VotedSensorsUpdate::imuPoll(struct sensor_combined_s &raw)
} else {
// use sensor voter to find best if SENS_IMU_MODE is enabled or ORB_ID(sensor_selection) has never published
_accel.voter.get_best(hrt_absolute_time(), &accel_best_index);
_gyro.voter.get_best(hrt_absolute_time(), &gyro_best_index);
checkFailover(_accel, "Accel");
checkFailover(_gyro, "Gyro");
}