diff --git a/libraries/SITL/SIM_Morse.cpp b/libraries/SITL/SIM_Morse.cpp index ed85b2c948..857c1168eb 100644 --- a/libraries/SITL/SIM_Morse.cpp +++ b/libraries/SITL/SIM_Morse.cpp @@ -105,14 +105,16 @@ Morse::Morse(const char *frame_str) : } if (strstr(frame_option, "-rover")) { - output_type = OUTPUT_ROVER; + output_type = OUTPUT_ROVER_REGULAR; + } else if (strstr(frame_option, "-skid")) { + output_type = OUTPUT_ROVER_SKID; } else if (strstr(frame_option, "-quad")) { output_type = OUTPUT_QUAD; } else if (strstr(frame_option, "-pwm")) { output_type = OUTPUT_PWM; } else { // default to rover - output_type = OUTPUT_ROVER; + output_type = OUTPUT_ROVER_REGULAR; } for (uint8_t i=0; isend(buf, strlen(buf)); +} /* output control command assuming skid-steering rover */ -void Morse::output_rover(const struct sitl_input &input) +void Morse::output_rover_skid(const struct sitl_input &input) { float motor1 = 2*((input.servos[0]-1000)/1000.0f - 0.5f); float motor2 = 2*((input.servos[2]-1000)/1000.0f - 0.5f); @@ -510,8 +548,11 @@ void Morse::update(const struct sitl_input &input) update_mag_field_bf(); switch (output_type) { - case OUTPUT_ROVER: - output_rover(input); + case OUTPUT_ROVER_REGULAR: + output_rover_regular(input); + break; + case OUTPUT_ROVER_SKID: + output_rover_skid(input); break; case OUTPUT_QUAD: output_quad(input); @@ -626,4 +667,4 @@ void Morse::send_report(void) } } -} +} \ No newline at end of file diff --git a/libraries/SITL/SIM_Morse.h b/libraries/SITL/SIM_Morse.h index a61f17c29b..2e567fba8b 100644 --- a/libraries/SITL/SIM_Morse.h +++ b/libraries/SITL/SIM_Morse.h @@ -64,15 +64,17 @@ private: uint16_t morse_control_port = 60001; enum { - OUTPUT_ROVER=1, - OUTPUT_QUAD=2, - OUTPUT_PWM=3 + OUTPUT_ROVER_REGULAR=1, + OUTPUT_ROVER_SKID=2, + OUTPUT_QUAD=3, + OUTPUT_PWM=4 } output_type; bool connect_sockets(void); bool parse_sensors(const char *json); bool sensors_receive(void); - void output_rover(const struct sitl_input &input); + void output_rover_regular(const struct sitl_input &input); + void output_rover_skid(const struct sitl_input &input); void output_quad(const struct sitl_input &input); void output_pwm(const struct sitl_input &input); void report_FPS();