From f3cb2cf8a3b3e002e665c82588e98e502ec3e285 Mon Sep 17 00:00:00 2001 From: tnaegeli Date: Wed, 3 Oct 2012 15:05:50 +0200 Subject: [PATCH 1/3] rate controller update --- .../multirotor_att_control_main.c | 19 +-- .../multirotor_rate_control.c | 120 +++++------------- 2 files changed, 43 insertions(+), 96 deletions(-) diff --git a/apps/multirotor_att_control/multirotor_att_control_main.c b/apps/multirotor_att_control/multirotor_att_control_main.c index 9acdc6fd38..f3c0746e09 100644 --- a/apps/multirotor_att_control/multirotor_att_control_main.c +++ b/apps/multirotor_att_control/multirotor_att_control_main.c @@ -104,14 +104,14 @@ static void *rate_control_thread_main(void *arg) while (!thread_should_exit) { /* rate control at maximum rate */ /* wait for a sensor update, check for exit condition every 1000 ms */ - int ret = poll(&fds, 1, 1000); - - if (ret < 0) { - /* XXX this is seriously bad - should be an emergency */ - } else if (ret == 0) { - /* XXX this means no sensor data - should be critical or emergency */ - printf("[mc att control] WARNING: Not getting gyro data, no rate control\n"); - } else { +// int ret = poll(&fds, 1, 1000); +// +// if (ret < 0) { +// /* XXX this is seriously bad - should be an emergency */ +// } else if (ret == 0) { +// /* XXX this means no sensor data - should be critical or emergency */ +// printf("[mc att control] WARNING: Not getting gyro data, no rate control\n"); +// } else { /* get data */ orb_copy(ORB_ID(sensor_gyro), gyro_sub, &gyro_report); bool rates_sp_valid = false; @@ -133,7 +133,8 @@ static void *rate_control_thread_main(void *arg) multirotor_control_rates(&rates_sp, gyro_lp, &actuators); orb_publish(ORB_ID_VEHICLE_ATTITUDE_CONTROLS, actuator_pub, &actuators); } - } +// } + usleep(2000); } return NULL; diff --git a/apps/multirotor_att_control/multirotor_rate_control.c b/apps/multirotor_att_control/multirotor_rate_control.c index b4eb3469b5..2a57f93f07 100644 --- a/apps/multirotor_att_control/multirotor_rate_control.c +++ b/apps/multirotor_att_control/multirotor_rate_control.c @@ -56,18 +56,21 @@ // PARAM_DEFINE_FLOAT(MC_YAWRATE_LIM, 0.1f); PARAM_DEFINE_FLOAT(MC_ATTRATE_P, 0.2f); /* 0.15 F405 Flamewheel */ -PARAM_DEFINE_FLOAT(MC_ATTRATE_I, 0.0f); -PARAM_DEFINE_FLOAT(MC_ATTRATE_AWU, 0.05f); +PARAM_DEFINE_FLOAT(MC_ATTRATE_D, 0.0f); +//PARAM_DEFINE_FLOAT(MC_ATTRATE_I, 0.0f); +//PARAM_DEFINE_FLOAT(MC_ATTRATE_AWU, 0.05f); PARAM_DEFINE_FLOAT(MC_ATTRATE_LIM, 8.0f); /**< roughly < 500 deg/s limit */ struct mc_rate_control_params { float yawrate_p; + float yawrate_d; float yawrate_i; float yawrate_awu; float yawrate_lim; float attrate_p; + float attrate_d; float attrate_i; float attrate_awu; float attrate_lim; @@ -79,11 +82,13 @@ struct mc_rate_control_param_handles { param_t yawrate_p; param_t yawrate_i; + param_t yawrate_d; param_t yawrate_awu; param_t yawrate_lim; param_t attrate_p; param_t attrate_i; + param_t attrate_d; param_t attrate_awu; param_t attrate_lim; }; @@ -106,11 +111,13 @@ static int parameters_init(struct mc_rate_control_param_handles *h) /* PID parameters */ h->yawrate_p = param_find("MC_YAWRATE_P"); h->yawrate_i = param_find("MC_YAWRATE_I"); + h->yawrate_d = param_find("MC_YAWRATE_D"); h->yawrate_awu = param_find("MC_YAWRATE_AWU"); h->yawrate_lim = param_find("MC_YAWRATE_LIM"); h->attrate_p = param_find("MC_ATTRATE_P"); h->attrate_i = param_find("MC_ATTRATE_I"); + h->attrate_d = param_find("MC_ATTRATE_D"); h->attrate_awu = param_find("MC_ATTRATE_AWU"); h->attrate_lim = param_find("MC_ATTRATE_LIM"); @@ -121,11 +128,13 @@ static int parameters_update(const struct mc_rate_control_param_handles *h, stru { param_get(h->yawrate_p, &(p->yawrate_p)); param_get(h->yawrate_i, &(p->yawrate_i)); + param_get(h->yawrate_d, &(p->yawrate_d)); param_get(h->yawrate_awu, &(p->yawrate_awu)); param_get(h->yawrate_lim, &(p->yawrate_lim)); param_get(h->attrate_p, &(p->attrate_p)); param_get(h->attrate_i, &(p->attrate_i)); + param_get(h->attrate_d, &(p->attrate_d)); param_get(h->attrate_awu, &(p->attrate_awu)); param_get(h->attrate_lim, &(p->attrate_lim)); @@ -151,106 +160,43 @@ void multirotor_control_rates(const struct vehicle_rates_setpoint_s *rate_sp, static bool initialized = false; - /* initialize the pid controllers when the function is called for the first time */ - if (initialized == false) { - parameters_init(&h); - parameters_update(&h, &p); - - pid_init(&yaw_speed_controller, p.yawrate_p, 0, p.yawrate_i, p.yawrate_awu, - PID_MODE_DERIVATIV_SET); - pid_init(&pitch_controller, p.attrate_p, p.attrate_i, 0, p.attrate_awu, - PID_MODE_DERIVATIV_SET); - pid_init(&roll_controller, p.attrate_p, p.attrate_i, 0, p.attrate_awu, - PID_MODE_DERIVATIV_SET); - - initialized = true; - } /* load new parameters with lower rate */ - if (motor_skip_counter % 250 == 0) { + + if (motor_skip_counter % 500 == 0) { /* update parameters from storage */ parameters_update(&h, &p); /* apply parameters */ + + + pid_set_parameters(&yaw_speed_controller, p.yawrate_p, p.yawrate_i, 0, p.yawrate_awu); pid_set_parameters(&pitch_controller, p.attrate_p, p.attrate_i, 0, p.attrate_awu); pid_set_parameters(&roll_controller, p.attrate_p, p.attrate_i, 0, p.attrate_awu); } /* calculate current control outputs */ + float setpointXrate; + float setpointYrate; + float setpointZrate; + float setRollRate=rate_sp->roll; + float setPitchRate=rate_sp->pitch; + float setYawRate=rate_sp->yaw; + - /* control pitch (forward) output */ - float pitch_control = pid_calculate(&pitch_controller, rate_sp->pitch, - rates[1], 0.0f, deltaT); - /* control roll (left/right) output */ - float roll_control = pid_calculate(&roll_controller, rate_sp->roll, - rates[0], 0.0f, deltaT); - /* control yaw rate */ - float yaw_rate_control = pid_calculate(&yaw_speed_controller, rate_sp->yaw, rates[2], 0.0f, deltaT); - - /* - * compensate the vertical loss of thrust - * when thrust plane has an angle. - * start with a factor of 1.0 (no change) - */ - float zcompensation = 1.0f; - - // if (fabsf(att->roll) > 0.3f) { - // zcompensation *= 1.04675160154f; - - // } else { - // zcompensation *= 1.0f / cosf(att->roll); - // } - - // if (fabsf(att->pitch) > 0.3f) { - // zcompensation *= 1.04675160154f; - - // } else { - // zcompensation *= 1.0f / cosf(att->pitch); - // } - - float motor_thrust = 0.0f; - - motor_thrust = rate_sp->thrust; - - /* compensate thrust vector for roll / pitch contributions */ - motor_thrust *= zcompensation; - - /* limit yaw rate output */ - if (yaw_rate_control > p.yawrate_lim) { - yaw_rate_control = p.yawrate_lim; - yaw_speed_controller.saturated = 1; - } - - if (yaw_rate_control < -p.yawrate_lim) { - yaw_rate_control = -p.yawrate_lim; - yaw_speed_controller.saturated = 1; - } - - if (pitch_control > p.attrate_lim) { - pitch_control = p.attrate_lim; - pitch_controller.saturated = 1; - } - - if (pitch_control < -p.attrate_lim) { - pitch_control = -p.attrate_lim; - pitch_controller.saturated = 1; - } + //x-axis + setpointXrate=p.attrate_p*(setRollRate-gyro_filtered[0]); + //Y-axis + setpointYrate=p.attrate_p*(setPitchRate-gyro_filtered[1]); + //Z-axis + setpointZrate=p.yawrate_p*(setYawRate-gyro_filtered[2]); - if (roll_control > p.attrate_lim) { - roll_control = p.attrate_lim; - roll_controller.saturated = 1; - } - if (roll_control < -p.attrate_lim) { - roll_control = -p.attrate_lim; - roll_controller.saturated = 1; - } - - actuators->control[0] = roll_control; - actuators->control[1] = pitch_control; - actuators->control[2] = yaw_rate_control; - actuators->control[3] = motor_thrust; + actuators->control[0] = setpointXrate; //roll + actuators->control[1] = setpointYrate; //pitch + actuators->control[2] = setpointZrate; //yaw + actuators->control[3] = rate_sp->thrust; motor_skip_counter++; } From 733975ed2d7b5906e35dbdebad52ee8fa9d92fd6 Mon Sep 17 00:00:00 2001 From: tnaegeli Date: Thu, 4 Oct 2012 09:28:04 +0200 Subject: [PATCH 2/3] fixed Rate controller --- apps/commander/commander.c | 15 ++-- .../multirotor_att_control_main.c | 75 ++++++++++++------- .../multirotor_rate_control.c | 27 ++----- nuttx/configs/px4fmu/nsh/defconfig | 4 +- 4 files changed, 63 insertions(+), 58 deletions(-) diff --git a/apps/commander/commander.c b/apps/commander/commander.c index 77e4da8501..124ac8aeb8 100644 --- a/apps/commander/commander.c +++ b/apps/commander/commander.c @@ -1307,18 +1307,19 @@ int commander_thread_main(int argc, char *argv[]) //printf("RC: y:%i/t:%i s:%i chans: %i\n", rc_yaw_scale, rc_throttle_scale, mode_switch_rc_value, rc.chan_count); if (sp_man.override_mode_switch > STICK_ON_OFF_LIMIT) { - current_status.flag_control_attitude_enabled = true; - current_status.flag_control_rates_enabled = false; + current_status.flag_control_attitude_enabled = false; + current_status.flag_control_rates_enabled = true; update_state_machine_mode_manual(stat_pub, ¤t_status, mavlink_fd); } else if (sp_man.override_mode_switch < -STICK_ON_OFF_LIMIT) { - current_status.flag_control_attitude_enabled = true; - current_status.flag_control_rates_enabled = false; - update_state_machine_mode_auto(stat_pub, ¤t_status, mavlink_fd); + current_status.flag_control_attitude_enabled = false; + current_status.flag_control_rates_enabled = true; + update_state_machine_mode_manual(stat_pub, ¤t_status, mavlink_fd); + //update_state_machine_mode_auto(stat_pub, ¤t_status, mavlink_fd); } else { - current_status.flag_control_attitude_enabled = true; - current_status.flag_control_rates_enabled = false; + current_status.flag_control_attitude_enabled = false; + current_status.flag_control_rates_enabled = true; update_state_machine_mode_stabilized(stat_pub, ¤t_status, mavlink_fd); } diff --git a/apps/multirotor_att_control/multirotor_att_control_main.c b/apps/multirotor_att_control/multirotor_att_control_main.c index ba7f08bc83..6b32a8ca39 100644 --- a/apps/multirotor_att_control/multirotor_att_control_main.c +++ b/apps/multirotor_att_control/multirotor_att_control_main.c @@ -94,24 +94,26 @@ static void *rate_control_thread_main(void *arg) int att_sub = orb_subscribe(ORB_ID(vehicle_attitude)); int rates_sp_sub = orb_subscribe(ORB_ID(vehicle_rates_setpoint)); - struct pollfd fds = { .fd = att_sub, .events = POLLIN }; + orb_advert_t actuator_pub = orb_advertise(ORB_ID_VEHICLE_ATTITUDE_CONTROLS, &actuators); + +// struct pollfd fds = { .fd = att_sub, .events = POLLIN }; struct vehicle_attitude_s vehicle_attitude; struct vehicle_rates_setpoint_s rates_sp; memset(&rates_sp, 0, sizeof(rates_sp)); float gyro_lp[3] = {0.0f, 0.0f, 0.0f}; - while (!thread_should_exit) { - /* rate control at maximum rate */ - /* wait for a sensor update, check for exit condition every 1000 ms */ - int ret = poll(&fds, 1, 1000); - - if (ret < 0) { - /* XXX this is seriously bad - should be an emergency */ - } else if (ret == 0) { - /* XXX this means no sensor data - should be critical or emergency */ - printf("[mc att control] WARNING: Not getting gyro data, no rate control\n"); - } else { + while (true) { +// /* rate control at maximum rate */ +// /* wait for a sensor update, check for exit condition every 1000 ms */ +// int ret = poll(&fds, 1, 1000); +// +// if (ret < 0) { +// /* XXX this is seriously bad - should be an emergency */ +// } else if (ret == 0) { +// /* XXX this means no sensor data - should be critical or emergency */ +// printf("[mc att control] WARNING: Not getting gyro data, no rate control\n"); +// } else { /* get current angular rate */ orb_copy(ORB_ID(vehicle_attitude), att_sub, &vehicle_attitude); /* get current rate setpoint */ @@ -124,18 +126,19 @@ static void *rate_control_thread_main(void *arg) /* perform local lowpass */ /* apply controller */ - if (state.flag_control_rates_enabled) { +// if (state.flag_control_rates_enabled) { /* lowpass gyros */ // XXX gyro_lp[0] = vehicle_attitude.rollspeed; gyro_lp[1] = vehicle_attitude.pitchspeed; gyro_lp[2] = vehicle_attitude.yawspeed; - multirotor_control_rates(&rates_sp, gyro_lp, &actuators); + //multirotor_control_rates(&rates_sp, gyro_lp, &actuators); + printf(".\n"); orb_publish(ORB_ID_VEHICLE_ATTITUDE_CONTROLS, actuator_pub, &actuators); - } - } - usleep(2000); +// } +// } + usleep(5000); } return NULL; @@ -184,7 +187,7 @@ mc_thread_main(int argc, char *argv[]) actuators.control[i] = 0.0f; } - actuator_pub = orb_advertise(ORB_ID_VEHICLE_ATTITUDE_CONTROLS, &actuators); + orb_advert_t actuator_pub = orb_advertise(ORB_ID_VEHICLE_ATTITUDE_CONTROLS, &actuators); orb_advert_t att_sp_pub = orb_advertise(ORB_ID(vehicle_attitude_setpoint), &att_sp); orb_advert_t rates_sp_pub = orb_advertise(ORB_ID(vehicle_rates_setpoint), &rates_sp); @@ -197,7 +200,7 @@ mc_thread_main(int argc, char *argv[]) /* ready, spawn pthread */ pthread_attr_t rate_control_attr; pthread_attr_init(&rate_control_attr); - pthread_attr_setstacksize(&rate_control_attr, 2048); + pthread_attr_setstacksize(&rate_control_attr, 4096); pthread_t rate_control_thread; pthread_create(&rate_control_thread, &rate_control_attr, rate_control_thread_main, NULL); @@ -277,15 +280,31 @@ mc_thread_main(int argc, char *argv[]) /** STEP 3: Identify the controller setup to run and set up the inputs correctly */ - /* run attitude controller */ - if (state.flag_control_attitude_enabled && !state.flag_control_rates_enabled) { - multirotor_control_attitude(&att_sp, &att, NULL, &actuators); - orb_publish(ORB_ID_VEHICLE_ATTITUDE_CONTROLS, actuator_pub, &actuators); - } else if (state.flag_control_attitude_enabled && state.flag_control_rates_enabled) { - multirotor_control_attitude(&att_sp, &att, &rates_sp, NULL); - orb_publish(ORB_ID(vehicle_rates_setpoint), rates_sp_pub, &rates_sp); - } +// /* run attitude controller */ +// if (state.flag_control_attitude_enabled && !state.flag_control_rates_enabled) { +// multirotor_control_attitude(&att_sp, &att, NULL, &actuators); +// orb_publish(ORB_ID_VEHICLE_ATTITUDE_CONTROLS, actuator_pub, &actuators); +// } else if (state.flag_control_attitude_enabled && state.flag_control_rates_enabled) { +// multirotor_control_attitude(&att_sp, &att, &rates_sp, NULL); +// orb_publish(ORB_ID(vehicle_rates_setpoint), rates_sp_pub, &rates_sp); +// } + float gyro_lp[3] = {0.0f, 0.0f, 0.0f}; + + gyro_lp[0] = att.rollspeed; + gyro_lp[1] = att.pitchspeed; + gyro_lp[2] = att.yawspeed; + + rates_sp.roll = manual.roll; + rates_sp.pitch = manual.pitch; + rates_sp.yaw = manual.yaw; // XXX Hack, remove, switch to yaw rate controller + /* set yaw rate */ + rates_sp.yaw = manual.yaw; + rates_sp.thrust = manual.throttle; + rates_sp.timestamp = hrt_absolute_time(); + + multirotor_control_rates(&rates_sp, gyro_lp, &actuators); + orb_publish(ORB_ID_VEHICLE_ATTITUDE_CONTROLS, actuator_pub, &actuators); perf_end(mc_loop_perf); } @@ -356,7 +375,7 @@ int multirotor_att_control_main(int argc, char *argv[]) mc_task = task_spawn("multirotor_att_control", SCHED_RR, SCHED_PRIORITY_MAX - 15, - 4096, + 6000, mc_thread_main, NULL); exit(0); diff --git a/apps/multirotor_att_control/multirotor_rate_control.c b/apps/multirotor_att_control/multirotor_rate_control.c index 2a57f93f07..1d400f51bf 100644 --- a/apps/multirotor_att_control/multirotor_rate_control.c +++ b/apps/multirotor_att_control/multirotor_rate_control.c @@ -150,11 +150,6 @@ void multirotor_control_rates(const struct vehicle_rates_setpoint_s *rate_sp, static int motor_skip_counter = 0; - // static PID_t yaw_pos_controller; - static PID_t yaw_speed_controller; - static PID_t pitch_controller; - static PID_t roll_controller; - static struct mc_rate_control_params p; static struct mc_rate_control_param_handles h; @@ -166,13 +161,6 @@ void multirotor_control_rates(const struct vehicle_rates_setpoint_s *rate_sp, if (motor_skip_counter % 500 == 0) { /* update parameters from storage */ parameters_update(&h, &p); - /* apply parameters */ - - - - pid_set_parameters(&yaw_speed_controller, p.yawrate_p, p.yawrate_i, 0, p.yawrate_awu); - pid_set_parameters(&pitch_controller, p.attrate_p, p.attrate_i, 0, p.attrate_awu); - pid_set_parameters(&roll_controller, p.attrate_p, p.attrate_i, 0, p.attrate_awu); } /* calculate current control outputs */ @@ -183,15 +171,12 @@ void multirotor_control_rates(const struct vehicle_rates_setpoint_s *rate_sp, float setPitchRate=rate_sp->pitch; float setYawRate=rate_sp->yaw; - - //x-axis - setpointXrate=p.attrate_p*(setRollRate-gyro_filtered[0]); - //Y-axis - setpointYrate=p.attrate_p*(setPitchRate-gyro_filtered[1]); - //Z-axis - setpointZrate=p.yawrate_p*(setYawRate-gyro_filtered[2]); - - + //x-axis + setpointXrate=p.attrate_p*(setRollRate-rates[0]); + //Y-axis + setpointYrate=p.attrate_p*(setPitchRate-rates[1]); + //Z-axis + setpointZrate=p.yawrate_p*(setYawRate-rates[2]); actuators->control[0] = setpointXrate; //roll actuators->control[1] = setpointYrate; //pitch diff --git a/nuttx/configs/px4fmu/nsh/defconfig b/nuttx/configs/px4fmu/nsh/defconfig index e1ba862cf7..dd0c16af85 100755 --- a/nuttx/configs/px4fmu/nsh/defconfig +++ b/nuttx/configs/px4fmu/nsh/defconfig @@ -236,11 +236,11 @@ CONFIG_AT24XX_MTD_BLOCKSIZE=256 CONFIG_SERIAL_TERMIOS=y CONFIG_SERIAL_CONSOLE_REINIT=y -CONFIG_USART1_SERIAL_CONSOLE=y +CONFIG_USART1_SERIAL_CONSOLE=n CONFIG_USART2_SERIAL_CONSOLE=n CONFIG_USART3_SERIAL_CONSOLE=n CONFIG_UART4_SERIAL_CONSOLE=n -CONFIG_UART5_SERIAL_CONSOLE=n +CONFIG_UART5_SERIAL_CONSOLE=y CONFIG_USART6_SERIAL_CONSOLE=n #Mavlink messages can be bigger than 128 From dd50c88f073926a550f0f1f5b08f931116dd4f8f Mon Sep 17 00:00:00 2001 From: Lorenz Meier Date: Mon, 8 Oct 2012 17:59:43 +0200 Subject: [PATCH 3/3] Fixed GPS lost issue, fixed accel scale initialization, fixed code style in rate controller --- apps/gps/ubx.c | 2 ++ apps/multirotor_att_control/multirotor_rate_control.c | 7 +++---- apps/sensors/sensor_params.c | 6 +++--- nuttx/configs/px4fmu/nsh/defconfig | 4 ++-- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/apps/gps/ubx.c b/apps/gps/ubx.c index 8a658b6230..b1655afd7a 100644 --- a/apps/gps/ubx.c +++ b/apps/gps/ubx.c @@ -781,6 +781,8 @@ void *ubx_watchdog_loop(void *args) } else { /* gps healthy */ ubx_success_count++; + ubx_healthy = true; + ubx_fail_count = 0; if (!ubx_healthy && ubx_success_count == UBX_HEALTH_SUCCESS_COUNTER_LIMIT) { //printf("[gps] ublox UBX module status ok (baud=%d)\r\n", current_gps_speed); diff --git a/apps/multirotor_att_control/multirotor_rate_control.c b/apps/multirotor_att_control/multirotor_rate_control.c index 372b378d19..5a5bffca92 100644 --- a/apps/multirotor_att_control/multirotor_rate_control.c +++ b/apps/multirotor_att_control/multirotor_rate_control.c @@ -166,18 +166,17 @@ void multirotor_control_rates(const struct vehicle_rates_setpoint_s *rate_sp, if (motor_skip_counter % 2500 == 0) { /* update parameters from storage */ parameters_update(&h, &p); - printf("p.yawrate_p: %8.4f\n", (double)p.yawrate_p); } /* calculate current control outputs */ /* control pitch (forward) output */ - float pitch_control = p.attrate_p * deltaT * (rate_sp->pitch-rates[1]); + float pitch_control = p.attrate_p * deltaT * (rate_sp->pitch - rates[1]); /* control roll (left/right) output */ - float roll_control = p.attrate_p * deltaT * (rate_sp->roll-rates[0] ); + float roll_control = p.attrate_p * deltaT * (rate_sp->roll - rates[0]); /* control yaw rate */ - float yaw_rate_control = p.yawrate_p * deltaT * (rate_sp->yaw-rates[2] ); + float yaw_rate_control = p.yawrate_p * deltaT * (rate_sp->yaw - rates[2]); actuators->control[0] = roll_control; actuators->control[1] = pitch_control; diff --git a/apps/sensors/sensor_params.c b/apps/sensors/sensor_params.c index e6f2f7e765..52316993e8 100644 --- a/apps/sensors/sensor_params.c +++ b/apps/sensors/sensor_params.c @@ -56,9 +56,9 @@ PARAM_DEFINE_FLOAT(SENS_ACC_XOFF, 0.0f); PARAM_DEFINE_FLOAT(SENS_ACC_YOFF, 0.0f); PARAM_DEFINE_FLOAT(SENS_ACC_ZOFF, 0.0f); -PARAM_DEFINE_FLOAT(SENS_ACC_XSCALE, 0.0f); -PARAM_DEFINE_FLOAT(SENS_ACC_YSCALE, 0.0f); -PARAM_DEFINE_FLOAT(SENS_ACC_ZSCALE, 0.0f); +PARAM_DEFINE_FLOAT(SENS_ACC_XSCALE, 1.0f); +PARAM_DEFINE_FLOAT(SENS_ACC_YSCALE, 1.0f); +PARAM_DEFINE_FLOAT(SENS_ACC_ZSCALE, 1.0f); PARAM_DEFINE_FLOAT(RC1_MIN, 1000.0f); PARAM_DEFINE_FLOAT(RC1_TRIM, 1500.0f); diff --git a/nuttx/configs/px4fmu/nsh/defconfig b/nuttx/configs/px4fmu/nsh/defconfig index 45934e800b..c2656217d4 100755 --- a/nuttx/configs/px4fmu/nsh/defconfig +++ b/nuttx/configs/px4fmu/nsh/defconfig @@ -236,11 +236,11 @@ CONFIG_AT24XX_MTD_BLOCKSIZE=256 CONFIG_SERIAL_TERMIOS=y CONFIG_SERIAL_CONSOLE_REINIT=y -CONFIG_USART1_SERIAL_CONSOLE=n +CONFIG_USART1_SERIAL_CONSOLE=y CONFIG_USART2_SERIAL_CONSOLE=n CONFIG_USART3_SERIAL_CONSOLE=n CONFIG_UART4_SERIAL_CONSOLE=n -CONFIG_UART5_SERIAL_CONSOLE=y +CONFIG_UART5_SERIAL_CONSOLE=n CONFIG_USART6_SERIAL_CONSOLE=n #Mavlink messages can be bigger than 128