|
|
@ -402,10 +402,10 @@ static void set_mode(uint8_t mode) |
|
|
|
case ACRO: |
|
|
|
case ACRO: |
|
|
|
ap.manual_throttle = true; |
|
|
|
ap.manual_throttle = true; |
|
|
|
ap.manual_attitude = true; |
|
|
|
ap.manual_attitude = true; |
|
|
|
set_yaw_mode(YAW_ACRO); |
|
|
|
set_yaw_mode(ACRO_YAW); |
|
|
|
set_roll_pitch_mode(ROLL_PITCH_ACRO); |
|
|
|
set_roll_pitch_mode(ACRO_RP); |
|
|
|
set_throttle_mode(THROTTLE_MANUAL); |
|
|
|
set_throttle_mode(ACRO_THR); |
|
|
|
set_nav_mode(NAV_NONE); |
|
|
|
set_nav_mode(ACRO_NAV); |
|
|
|
// reset acro axis targets to current attitude |
|
|
|
// reset acro axis targets to current attitude |
|
|
|
if(g.axis_enabled){ |
|
|
|
if(g.axis_enabled){ |
|
|
|
roll_axis = ahrs.roll_sensor; |
|
|
|
roll_axis = ahrs.roll_sensor; |
|
|
@ -419,7 +419,7 @@ static void set_mode(uint8_t mode) |
|
|
|
ap.manual_attitude = true; |
|
|
|
ap.manual_attitude = true; |
|
|
|
set_yaw_mode(YAW_HOLD); |
|
|
|
set_yaw_mode(YAW_HOLD); |
|
|
|
set_roll_pitch_mode(ROLL_PITCH_STABLE); |
|
|
|
set_roll_pitch_mode(ROLL_PITCH_STABLE); |
|
|
|
set_throttle_mode(STABILIZE_THROTTLE); |
|
|
|
set_throttle_mode(THROTTLE_MANUAL_TILT_COMPENSATED); |
|
|
|
set_nav_mode(NAV_NONE); |
|
|
|
set_nav_mode(NAV_NONE); |
|
|
|
break; |
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
@ -429,7 +429,7 @@ static void set_mode(uint8_t mode) |
|
|
|
set_yaw_mode(ALT_HOLD_YAW); |
|
|
|
set_yaw_mode(ALT_HOLD_YAW); |
|
|
|
set_roll_pitch_mode(ALT_HOLD_RP); |
|
|
|
set_roll_pitch_mode(ALT_HOLD_RP); |
|
|
|
set_throttle_mode(ALT_HOLD_THR); |
|
|
|
set_throttle_mode(ALT_HOLD_THR); |
|
|
|
set_nav_mode(NAV_NONE); |
|
|
|
set_nav_mode(ALT_HOLD_NAV); |
|
|
|
break; |
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
case AUTO: |
|
|
|
case AUTO: |
|
|
@ -438,7 +438,7 @@ static void set_mode(uint8_t mode) |
|
|
|
set_yaw_mode(AUTO_YAW); |
|
|
|
set_yaw_mode(AUTO_YAW); |
|
|
|
set_roll_pitch_mode(AUTO_RP); |
|
|
|
set_roll_pitch_mode(AUTO_RP); |
|
|
|
set_throttle_mode(AUTO_THR); |
|
|
|
set_throttle_mode(AUTO_THR); |
|
|
|
|
|
|
|
// we do not set nav mode for auto because it will be overwritten when first command runs |
|
|
|
// loads the commands from where we left off |
|
|
|
// loads the commands from where we left off |
|
|
|
init_commands(); |
|
|
|
init_commands(); |
|
|
|
break; |
|
|
|
break; |
|
|
@ -446,13 +446,12 @@ static void set_mode(uint8_t mode) |
|
|
|
case CIRCLE: |
|
|
|
case CIRCLE: |
|
|
|
ap.manual_throttle = false; |
|
|
|
ap.manual_throttle = false; |
|
|
|
ap.manual_attitude = false; |
|
|
|
ap.manual_attitude = false; |
|
|
|
|
|
|
|
|
|
|
|
// set yaw to point to center of circle |
|
|
|
// set yaw to point to center of circle |
|
|
|
yaw_look_at_WP = circle_WP; |
|
|
|
yaw_look_at_WP = circle_WP; |
|
|
|
set_yaw_mode(YAW_LOOK_AT_LOCATION); |
|
|
|
set_yaw_mode(CIRCLE_YAW); |
|
|
|
set_roll_pitch_mode(CIRCLE_RP); |
|
|
|
set_roll_pitch_mode(CIRCLE_RP); |
|
|
|
set_throttle_mode(CIRCLE_THR); |
|
|
|
set_throttle_mode(CIRCLE_THR); |
|
|
|
set_nav_mode(NAV_CIRCLE); |
|
|
|
set_nav_mode(CIRCLE_NAV); |
|
|
|
break; |
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
case LOITER: |
|
|
|
case LOITER: |
|
|
@ -462,17 +461,17 @@ static void set_mode(uint8_t mode) |
|
|
|
set_roll_pitch_mode(LOITER_RP); |
|
|
|
set_roll_pitch_mode(LOITER_RP); |
|
|
|
set_throttle_mode(LOITER_THR); |
|
|
|
set_throttle_mode(LOITER_THR); |
|
|
|
set_next_WP(¤t_loc); |
|
|
|
set_next_WP(¤t_loc); |
|
|
|
set_nav_mode(NAV_LOITER); |
|
|
|
set_nav_mode(LOITER_NAV); |
|
|
|
break; |
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
case POSITION: |
|
|
|
case POSITION: |
|
|
|
ap.manual_throttle = true; |
|
|
|
ap.manual_throttle = true; |
|
|
|
ap.manual_attitude = false; |
|
|
|
ap.manual_attitude = false; |
|
|
|
set_yaw_mode(YAW_HOLD); |
|
|
|
set_yaw_mode(POSITION_YAW); |
|
|
|
set_roll_pitch_mode(LOITER_RP); |
|
|
|
set_roll_pitch_mode(POSITION_RP); |
|
|
|
set_throttle_mode(THROTTLE_MANUAL); |
|
|
|
set_throttle_mode(POSITION_THR); |
|
|
|
set_next_WP(¤t_loc); |
|
|
|
set_next_WP(¤t_loc); |
|
|
|
set_nav_mode(NAV_LOITER); |
|
|
|
set_nav_mode(POSITION_NAV); |
|
|
|
break; |
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
case GUIDED: |
|
|
|
case GUIDED: |
|
|
@ -481,7 +480,7 @@ static void set_mode(uint8_t mode) |
|
|
|
set_yaw_mode(GUIDED_YAW); |
|
|
|
set_yaw_mode(GUIDED_YAW); |
|
|
|
set_roll_pitch_mode(GUIDED_RP); |
|
|
|
set_roll_pitch_mode(GUIDED_RP); |
|
|
|
set_throttle_mode(GUIDED_THR); |
|
|
|
set_throttle_mode(GUIDED_THR); |
|
|
|
set_nav_mode(NAV_WP); |
|
|
|
set_nav_mode(GUIDED_NAV); |
|
|
|
wp_verify_byte = 0; |
|
|
|
wp_verify_byte = 0; |
|
|
|
set_next_WP(&guided_WP); |
|
|
|
set_next_WP(&guided_WP); |
|
|
|
break; |
|
|
|
break; |
|
|
@ -514,7 +513,7 @@ static void set_mode(uint8_t mode) |
|
|
|
set_yaw_mode(OF_LOITER_YAW); |
|
|
|
set_yaw_mode(OF_LOITER_YAW); |
|
|
|
set_roll_pitch_mode(OF_LOITER_RP); |
|
|
|
set_roll_pitch_mode(OF_LOITER_RP); |
|
|
|
set_throttle_mode(OF_LOITER_THR); |
|
|
|
set_throttle_mode(OF_LOITER_THR); |
|
|
|
set_nav_mode(NAV_NONE); |
|
|
|
set_nav_mode(OF_LOITER_NAV); |
|
|
|
set_next_WP(¤t_loc); |
|
|
|
set_next_WP(¤t_loc); |
|
|
|
break; |
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|