mixer move test_mixer_multirotor into cmake

This commit is contained in:
Daniel Agar 2019-04-07 15:31:52 -04:00
parent d21314c74c
commit b9516d7e38
5 changed files with 31 additions and 29 deletions

View File

@ -338,12 +338,9 @@ format:
# Testing # Testing
# -------------------------------------------------------------------- # --------------------------------------------------------------------
.PHONY: tests tests_coverage tests_mission tests_mission_coverage tests_offboard tests_avoidance .PHONY: tests tests_coverage tests_mission tests_mission_coverage tests_offboard tests_avoidance
.PHONY: rostest python_coverage test_mixer_multirotor .PHONY: rostest python_coverage
test_mixer_multirotor: tests:
@$(MAKE) -C "$(SRC_DIR)"/src/lib/mixer --no-print-directory tests
tests: test_mixer_multirotor
@$(MAKE) --no-print-directory px4_sitl_test test_results \ @$(MAKE) --no-print-directory px4_sitl_test test_results \
ASAN_OPTIONS="color=always:check_initialization_order=1:detect_stack_use_after_return=1" \ ASAN_OPTIONS="color=always:check_initialization_order=1:detect_stack_use_after_return=1" \
UBSAN_OPTIONS="color=always" UBSAN_OPTIONS="color=always"

View File

@ -150,6 +150,7 @@ add_custom_target(test_results
DEPENDS DEPENDS
px4 px4
examples__dyn_hello examples__dyn_hello
test_mixer_multirotor
USES_TERMINAL USES_TERMINAL
COMMENT "Running tests in sitl" COMMENT "Running tests in sitl"
WORKING_DIRECTORY ${PX4_BINARY_DIR}) WORKING_DIRECTORY ${PX4_BINARY_DIR})

View File

@ -94,3 +94,21 @@ add_library(mixer
target_include_directories(mixer PRIVATE ${PX4_BINARY_DIR}/src/lib/mixer) target_include_directories(mixer PRIVATE ${PX4_BINARY_DIR}/src/lib/mixer)
add_dependencies(mixer mixer_gen mixer_gen_6dof prebuild_targets) add_dependencies(mixer mixer_gen mixer_gen_6dof prebuild_targets)
if(BUILD_TESTING)
add_executable(test_mixer_multirotor
test_mixer_multirotor.cpp
mixer_multirotor.cpp
mixer.cpp
)
target_compile_definitions(test_mixer_multirotor PRIVATE MIXER_MULTIROTOR_USE_MOCK_GEOMETRY)
target_compile_options(test_mixer_multirotor PRIVATE -Wno-unused-result)
add_test(NAME mixer_multirotor
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/mixer_multirotor.py --test --mixer-multirotor-binary $<TARGET_FILE:test_mixer_multirotor>
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
)
endif()

View File

@ -1,13 +0,0 @@
.PHONY: all tests clean
all: test_mixer_multirotor
test_mixer_multirotor: test_mixer_multirotor.cpp mixer_multirotor.cpp mixer.cpp
@g++ $^ -std=c++11 -I .. -DMIXER_MULTIROTOR_USE_MOCK_GEOMETRY -o $@
tests: test_mixer_multirotor
@echo "Testing Mixer Multirotor"
@python mixer_multirotor.py --test --mixer-multirotor-binary ./$^
clean:
@rm test_mixer_multirotor

View File

@ -58,7 +58,6 @@ mixer_callback(uintptr_t handle, uint8_t control_group, uint8_t control_index, f
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
FILE *file_in = stdin; FILE *file_in = stdin;
FILE *file_out = stdout;
if (argc > 1) { if (argc > 1) {
file_in = fopen(argv[1], "r"); file_in = fopen(argv[1], "r");
@ -79,7 +78,7 @@ int main(int argc, char *argv[])
return -1; return -1;
} }
for (int i = 0; i < rotor_count; ++i) { for (unsigned i = 0; i < rotor_count; ++i) {
fscanf(file_in, "%f %f %f %f", &rotors[i].roll_scale, &rotors[i].pitch_scale, fscanf(file_in, "%f %f %f %f", &rotors[i].roll_scale, &rotors[i].pitch_scale,
&rotors[i].yaw_scale, &rotors[i].thrust_scale); &rotors[i].yaw_scale, &rotors[i].thrust_scale);
} }
@ -93,7 +92,7 @@ int main(int argc, char *argv[])
while (!feof(file_in)) { while (!feof(file_in)) {
// read actuator controls // read actuator controls
int count = 0; unsigned count = 0;
while (count < 4 && fscanf(file_in, "%f", &actuator_controls[count]) == 1) { while (count < 4 && fscanf(file_in, "%f", &actuator_controls[count]) == 1) {
++count; ++count;
@ -127,26 +126,26 @@ int main(int argc, char *argv[])
if (failed) { if (failed) {
printf("test %i failed:\n", test_counter + 1); printf("test %i failed:\n", test_counter + 1);
printf("control input : %.3f %.3f %.3f %.3f\n", actuator_controls[0], actuator_controls[1], printf("control input : %.3f %.3f %.3f %.3f\n", (double)actuator_controls[0], (double)actuator_controls[1],
actuator_controls[2], actuator_controls[3]); (double)actuator_controls[2], (double)actuator_controls[3]);
printf("mixer output : "); printf("mixer output : ");
for (int i = 0; i < rotor_count; ++i) { for (unsigned i = 0; i < rotor_count; ++i) {
printf("%.3f ", actuator_outputs[i]); printf("%.3f ", (double)actuator_outputs[i]);
} }
printf("\n"); printf("\n");
printf("expected output: "); printf("expected output: ");
for (int i = 0; i < rotor_count; ++i) { for (unsigned i = 0; i < rotor_count; ++i) {
printf("%.3f ", expected_output[i]); printf("%.3f ", (double)expected_output[i]);
} }
printf("\n"); printf("\n");
printf("diff : "); printf("diff : ");
for (int i = 0; i < rotor_count; ++i) { for (unsigned i = 0; i < rotor_count; ++i) {
printf("%.3f ", expected_output[i] - actuator_outputs[i]); printf("%.3f ", (double)(expected_output[i] - actuator_outputs[i]));
} }
printf("\n"); printf("\n");